
Инструмент мониторинга сетевых подключений в реальном времени, созданный на Rust и GTK4, отображающий активные подключения с живой статистикой ввода/вывода в современном графическом интерфейсе.

Инструмент мониторинга сетевых подключений в реальном времени, написанный на Rust и GTK4, отображающий активные подключения с живой статистикой ввода/вывода в современном графическом интерфейсе.
/procbpf-linker (для компиляции eBPF)sudo apt update
sudo apt install libgtk-4-dev libadwaita-1-dev
sudo dnf install gtk4-devel libadwaita-devel
git clone <repository-url>
cd network-monitor
./scripts/install.sh
sudo ./scripts/install.sh
Скрипт установки:
~/.local/bin/ (локально) или /usr/local/bin/ (системно)git clone <repository-url>
cd network-monitor
cargo run
Или соберите в режиме release:
cargo build --release
./target/release/network-monitor
git clone <repository-url>
cd network-monitor
cargo build --bin nmt
./target/debug/nmt
Или соберите в режиме release:
cargo build --release --bin nmt
./target/release/nmt
Удаление локальной установки:
./scripts/uninstall.sh
Удаление системной установки (требуется sudo):
sudo ./scripts/uninstall.sh
Скрипт удаления удалит бинарный файл, desktop-файл и иконки из соответствующих мест и обновит все соответствующие кэши.
Запустите приложение мониторинга сети:
cargo run
Приложение откроет окно GTK4, отображающее:
/proc/[pid]/cmdline
Запустите терминальный интерфейс:
cargo run --bin nmt
TUI предоставляет те же возможности мониторинга в интерактивном терминальном интерфейсе:
Основные управляющие клавиши:
q — выйти из приложенияr — вручную обновить подключенияa — переключить автообновление (интервал 2 секунды)↑/↓ — перемещаться по подключениям←/→ — прокручивать таблицу по горизонтали1-8 — сортировать по столбцам (Процесс(ID), Протокол, Источник, Назначение, Статус, TX, RX, Путь)Возможности:
Распространённые адреса упрощаются для удобства чтения:
0.0.0.0:* или *:* → ANY127.0.0.1:* или [::1]:* → LOCALHOST224.0.0.251:* → MDNSПриложение использует kprobes на уровне ядра (tcp_v4_connect, tcp_v6_connect, tcp_close,
inet_csk_accept) вместо опроса /proc/net. Это обеспечивает:
bpf_get_current_pid_tgid(), без сканирования inodeБэкенд eBPF обеспечивает управляемый событиями мониторинг подключений с меньшей нагрузкой и событиями
в реальном времени по сравнению с подходом опроса /proc/net по умолчанию. Он может захватывать короткоживущие подключения,
которые опрос может пропустить.
Предварительные требования:
rustup toolchain install nightly
cargo install bpf-linker
Сборка и запуск:
cargo build
Запуск от обычного пользователя (требуется ядро 5.8+):
Выдайте бинарному файлу необходимые capabilities Linux один раз:
sudo setcap cap_bpf,cap_net_admin,cap_perfmon+ep target/debug/network-monitor
./target/debug/network-monitor
Или для TUI-версии:
sudo setcap cap_bpf,cap_net_admin,cap_perfmon+ep target/debug/nmt
./target/debug/nmt
Для release-сборок скорректируйте путь соответствующим образом:
sudo setcap cap_bpf,cap_net_admin,cap_perfmon+ep target/release/network-monitor
Приложение завершится с сообщением о настройке, если eBPF недоступен (отсутствуют необходимые capabilities или ядро не поддерживается).
bpf_get_current_pid_tgid() в точке срабатывания/proc/[pid]/io для статистики ввода/выводаthiserrorЕсли вы считаете этот проект полезным, пожалуйста, рассмотрите возможность пожертвования для поддержки его разработки.
88LyqYXn4LdCVDtPWKuton9hJwbo8ZduNEGuARHGdeSJ79BBYWGpMQR8VGWxGDKtTLLM6E9MJm8RvW9VMUgCcSXu19L9FSvbc1q6mh77hfv8x8pa0clzskw6ndysujmr78j6se025Этот проект является открытым исходным кодом. Подробности см. в файле LICENSE.