Was ist los im Netz? Wie viel Traffic von wem gehört zu welcher Sorte? Eine Frage, die sich nicht ganz so leicht beantworten lässt, wie es zunächst scheint. Ein weniger bekanntes, spezielles Tool bringt schließlich aber doch die Lösung.
Tools zum Netzwerk-Monitoring unter Linux gibt es etliche, wie etwa Netstat, Iptstate, »sar -n« aus dem Sysstat-Paket, Iptraf-ng oder die Netzwerkseite eines universellen Monitoring-Tools wie Nmon. Diese Werkzeuge messen gewöhnlich die Anzahl der über ein Netzwerk-Interface ein- und ausgehenden Bytes respektive Pakete, dazu manchmal die Anzahl von Broadcasting-Paketen, Prüfsummenfehlern oder Paketwiederholungen. Oft lassen sich diese Statistiken auch mit Filtern auf der Basis von IP-Adressen kombinieren. Eines aber können die allermeisten dieser kleinen Helfer nicht: Den Netzwerkverkehr bezogen auf einzelne Prozesse darstellen.
Nicht selten interessiert aber genau das: Welcher Prozess belegt momentan meine Netzwerkschnittstelle? Welcher Prozess sendet oder empfängt die meisten Pakete? Eine Antwort auf solche Fragen liefern die gängigen Tools nicht auf einfache Weise. Man könnte in einem mehrstufigen Verfahren beispielsweise erst die PID eines Prozesses ermitteln, der einem besonders interessant erscheint, und anschließend mit Strace die Pakete sammeln, die von der entsprechenden PID ausgehen oder sich an sie richten:
# strace -f -e trace=network -s 10000 -p PID
Eine Statistik ergibt das freilich nicht – und ob man tatsächlich den Prozess erwischt, der den größten Teil des Verkehrs verursacht, bleibt ungewiss. Ein verwandtes Problem entstünde, wenn man sich dem Netzwerkverkehr über die IP-Adresse und die Port-Nummer oder den Namen des Protokolls zu nähern versucht. So zeigt etwa der folgende Befehl die PIDs aller Prozesse an, die mit dem IMAP-Port verbunden sind:
# sudo netstat -tup | grep imap
Dieselbe IP-Adresse und Port-Nummer tauchen im IP-Traffic-Monitor von Iptraf-ng ebenfalls auf. Aber auch hier muss man die Verbindung manuell herstellen und kann nicht nach der Datenmenge sortieren.
Die einfache Lösung
Es geht aber auch ganz einfach, nämlich mit dem kleinen Tool Nethogs, das zum Beispiel bei Ubuntu im Repository der Distribution liegt. Es zeigt die gesendete und empfangene Datenmenge sortiert und pro Prozess an (Abbildung 1). Man kann die Statistik auf ein bestimmtes Netzwerk-Interface begrenzen und die Refresh-Rate justieren. Interaktiv lassen sich sowohl die Maßeinheit für den Traffic als auch das Sortierkriterium (gesendete oder empfangene Daten) umstellen.
Alles Gute ist aber auch hier nicht zusammen: Die Messung klappt nur im laufenden Betrieb, man kann die Pakete nicht speichern und später auswerten. Das wiederum ginge mit Tcpdump oder Wireshark – dann allerdings wieder ohne direkte Verbindung zum Linux-Prozess, der den Verkehr verursacht hat.







