
Ein Echtzeit-Tool zur Überwachung von Netzwerkverbindungen, entwickelt mit Rust und GTK4, das aktive Verbindungen mit Live-I/O-Statistiken in einer modernen grafischen Oberfläche anzeigt.

Ein Tool zur Echtzeit-Überwachung von Netzwerkverbindungen, entwickelt mit Rust und GTK4, das aktive Verbindungen mit Live-I/O-Statistiken in einer modernen grafischen Oberfläche anzeigt.
/proc-Dateisystembpf-linker (für die eBPF-Kompilierung)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
Das Installationsskript wird:
~/.local/bin/ (lokal) oder /usr/local/bin/ (systemweit) installierengit clone <repository-url>
cd network-monitor
cargo run
Oder im Release-Modus erstellen:
cargo build --release
./target/release/network-monitor
git clone <repository-url>
cd network-monitor
cargo build --bin nmt
./target/debug/nmt
Oder im Release-Modus erstellen:
cargo build --release --bin nmt
./target/release/nmt
Entfernen der lokalen Installation:
./scripts/uninstall.sh
Systemweite Entfernung (sudo erforderlich):
sudo ./scripts/uninstall.sh
Das Deinstallationsskript entfernt die Binärdatei, die Desktop-Datei und die Symbole aus den entsprechenden Verzeichnissen und aktualisiert alle relevanten Caches.
Die Netzwerkmonitor-Anwendung starten:
cargo run
Die Anwendung öffnet ein GTK4-Fenster, das Folgendes anzeigt:
/proc/[pid]/cmdline
Die Terminal-Oberfläche starten:
cargo run --bin nmt
Die TUI bietet dieselben Überwachungsfunktionen in einer interaktiven Terminal-Oberfläche:
Wichtige Tasten:
q - Anwendung beendenr - Verbindungen manuell aktualisierena - Auto-Refresh umschalten (2-Sekunden-Intervalle)↑/↓ - Durch Verbindungen navigieren←/→ - Tabelle horizontal scrollen1-8 - Nach Spalten sortieren (Prozess(ID), Protokoll, Quelle, Ziel, Status, TX, RX, Pfad)Funktionen:
Gängige Adressen werden zur besseren Lesbarkeit vereinfacht:
0.0.0.0:* oder *:* → ANY127.0.0.1:* oder [::1]:* → LOCALHOST224.0.0.251:* → MDNSDie App verwendet Kprobes auf Kernel-Ebene (tcp_v4_connect, tcp_v6_connect, tcp_close,
inet_csk_accept) anstelle von Polling auf /proc/net. Dies bietet:
bpf_get_current_pid_tgid() erfasst, kein Inode-ScanningDas eBPF-Backend bietet eine ereignisgesteuerte Verbindungsüberwachung mit geringerem Overhead und Echtzeit-
Ereignissen, verglichen mit dem Standard-Polling-Ansatz über /proc/net. Es kann kurzlebige Verbindungen
erfassen, die Polling möglicherweise übersieht.
Voraussetzungen:
rustup toolchain install nightly
cargo install bpf-linker
Erstellen und ausführen:
cargo build
Als normaler Benutzer ausführen (Kernel 5.8+ erforderlich):
Erteilen Sie der Binärdatei einmalig die erforderlichen Linux-Capabilities:
sudo setcap cap_bpf,cap_net_admin,cap_perfmon+ep target/debug/network-monitor
./target/debug/network-monitor
Oder für die TUI-Version:
sudo setcap cap_bpf,cap_net_admin,cap_perfmon+ep target/debug/nmt
./target/debug/nmt
Für Release-Builds passen Sie den Pfad entsprechend an:
sudo setcap cap_bpf,cap_net_admin,cap_perfmon+ep target/release/network-monitor
Die App beendet sich mit einer Einrichtungsmeldung, wenn eBPF nicht verfügbar ist (fehlende Capabilities oder nicht unterstützter Kernel).
bpf_get_current_pid_tgid() am Probe-Punkt/proc/[pid]/io für I/O-StatistikenthiserrorWenn Sie dieses Projekt nützlich finden, erwägen Sie bitte eine Spende, um seine Entwicklung zu unterstützen.
88LyqYXn4LdCVDtPWKuton9hJwbo8ZduNEGuARHGdeSJ79BBYWGpMQR8VGWxGDKtTLLM6E9MJm8RvW9VMUgCcSXu19L9FSvbc1q6mh77hfv8x8pa0clzskw6ndysujmr78j6se025Dieses Projekt ist Open Source. Einzelheiten finden Sie in der LICENSE-Datei.