Was ist Linux-Netzwerk-Monitoring?
Beim Linux-Netzwerk-Monitoring geht es um die Überprüfung, Analyse, Berichterstattung und Optimierung von Linux-basierten Netzwerken. Da dieses Betriebssystem in der Praxis der Standard für die meisten Server, Unternehmensnetzwerke und Cloud-Dienste ist, ist die Linux-Netzwerküberwachung ein wichtiger Bereich, auf den sich jedes Netzwerk-Team konzentrieren sollte.
Das Netzwerk-Monitoring unter Linux unterscheidet sich nicht wesentlich von der unter anderen Betriebssystemen. Die Metriken, die gesammelt werden, sind die gleichen, aber die Methoden, diese zu sammeln, unterscheiden sich. Wie bei Linux-Systemen üblich, gibt es eine ganze Reihe kostenloser CLI-Anwendungen, mit denen sich einige Aufgaben des Netzwerk-Monitorings erledigen lassen. Dabei handelt es sich um grundlegende Tools, die eine vollwertige Netzwerk-Monitoring-Software, die unendlich viele Geräte, Prüfungen und Betriebssysteme unterstützt, jedoch nicht ersetzen können.
Die meisten dieser kleinen Linux-Netzwerk-Tools sind die Basis für viele größere Tools und eignen sich für schnelle Überprüfungen oder die Automatisierung bestimmter Überwachungsaufgaben, wenn keine umfassendere Monitoring-Lösung vorhanden ist. Vor allem in kleinen Netzwerken oder als erste Schritte bei der Fehlersuche können grundlegende Linux-Monitoring-Tools erste Erkenntnisse liefern.
Das Monitoring von Linux-Netzwerken umfasst daher sowohl einfache, überwiegend CLI-basierte Anwendungen als auch große, komplexere und fortgeschrittene Systeme zur Überwachung von Netzwerken und Netzwerkverkehr.
Wie kann man Netzwerk-Traffic auf Linux-Hosts überwachen?
Um den Netzwerkverkehr unter Linux zu überwachen, gibt es mehrere Möglichkeiten. Die erste Option, für die sich die meisten Netzwerk-Teams entscheiden, ist eine vollwertige Netzwerk-Monitoring-Lösung. Diese ist fortschrittlich und bietet eine große Auswahl an Monitoring- und Verwaltungsoptionen für Linux-Hosts. Die meisten von ihnen bieten die Möglichkeit, den gesamten Datenverkehr auf einem Gerät zu überwachen, oft in Echtzeit. Dies ist bei weitem die häufigste und umfassendste Option.
Eine andere Möglichkeit zur Überwachung des Netzwerkverkehrs unter Linux ist ein Packet-Sniffer. Er ist eine Komplettlösung, da er alle Pakete erfasst, ist aber sowohl zeit- als auch ressourcenaufwendig und nicht die benutzerfreundlichste Lösung.
Drittens gibt es einen einfacheren, wenn auch eingeschränkten Weg. Die Verwendung der Linux-Firewall, um den Datenverkehr auf einer Host-zu-Host-Basis zu verfolgen. iptables bietet eine Reihe von Parametern (-nvL
), die Traffic-Statistiken für jede Regel anzeigen. Zusammen mit iptables -L
, das die aktuellen Regeln anzeigt, ist dies ein recht ausreichender Überblick über den Netzwerkverkehr auf einem einzelnen Host.
Grundlegende Tools für das Linux-Netzwerk-Monitoring
Netzwerk-Monitoring für Linux bedeutet entweder die Verwendung einiger Linux-Netzwerk-Tools, die unter jeder Linux-Distribution kostenlos zur Verfügung stehen, oder die Verwendung einer dedizierten Netzwerk-Monitoring-Lösung. In Unternehmensnetzwerken ist dies keine Option, da die Basis-Tools von Linux allein nicht in der Lage sind, alle Anforderungen an das Monitoring einer großen Netzwerkinfrastruktur zu erfüllen. Eine vollständige Überwachungslösung ist daher eine Notwendigkeit, keine Option.
Für kleine Unternehmen mit wenigen Rechnern und recht überschaubaren Netzwerktopologien können die Monitoring-Werkzeuge von Linux jedoch ausreichend, wenn auch nicht optimal sein. Für alle interessierten Netzwerkadmins stellen wir einige nützliche Tools für das Netzwerk-Monitoring unter Linux vor, um ihre Möglichkeiten aufzuzeigen.
netstat (ss)
Netstat, das in den meisten neueren Distributionen durch ss ersetzt wurde, ist ein Werkzeug zur Anzeige des Inhalts von /proc/net
. Es konzentriert sich auf die Anzeige von Verbindungs- und Routing-Tabelleninformationen für alle lokalen Ports. Es ist nicht geeignet, um entfernte Hosts zu überwachen, kann aber einen schnellen Überblick über den lokalen Datenverkehr geben und gilt als grundlegendes Werkzeug zur Überwachung des Netzwerkverkehrs unter Linux.
Ein sehr kurzes Beispiel für seine Ausgabe kann sein:
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0 127.0.0.1.62132 127.0.0.1.http ESTABLISHED
tcp4 0 0 127.0.0.1.http * LISTEN
tcpdump
tcpdump ist ein Sniffer. Ein Programm, das Pakete von einer Netzwerkschnittstelle abfängt und sie für den Nutzenden interpretiert. Es versteht alle grundlegenden Internetprotokolle und kann ganze Pakete zur späteren Überprüfung speichern. Obwohl es bei weitem nicht so raffiniert ist wie ein Linux-Netzwerk-Monitoring-Programm, das Flow-Protokolle verwendet, liefert es einen Raw Dump von Paketen auf einer Schnittstelle, der sich später oder in Echtzeit analysieren lässt.
Eine grafische Schnittstelle zu tcpdump ist Wireshark.
ping
ping verwendet ICMP, um Echoanfragen an entfernte Hosts zu senden, um zu prüfen, ob diese erreichbar sind (und antworten können). Es ist ein einfaches Linux-Netzwerk-Tool, da es lediglich Auskunft darüber gibt, ob ein Host erreichbar ist und antwortet. Zur schnellen Fehlersuche kann es sich jedoch lohnen, ein Terminal zu starten und den ping-Befehl auszuprobieren, um sofort eine Reihe von Ursachen für das auftretende Problem ein- und ausschließen zu können.
traceroute / tracepath
traceroute und tracepath sind zwei Linux-Netzwerk-Tools, die die Route zu einem Ziel anzeigen und somit zur Fehlersuche bei Routing-Problemen unter Linux verwendet werden. Technisch gesehen ist traceroute am weitesten fortgeschritten und verwendet verschiedene Protokolle wie TCP, UDP und ICMP, um die richtige Route zu finden, während tracepath nur UDP verwendet. traceroute kann Pakete manipulieren, während tracepath beim Senden aufhört.
Ein Beispiel für einen traceroute-Lauf, um den Pfad zu www.checkmk.com zu finden:
# traceroute www.checkmk.com
traceroute to www.checkmk.com (45.133.11.28), 30 hops max, 60 byte packets
1 kl****** (172.27.224.1) 0.546 ms 0.494 ms 0.661 ms
2 192.168.0.1 (192.168.0.1) 16.455 ms 6.095 ms 20.363 ms
3 * * *
4 89-75-5-97.infra.chello.pl (89.75.5.97) 34.704 ms 26.233 ms 32.822 ms
5 pl-krk07a-ra1-ae-0-1499.aorta.net (84.116.193.21) 66.906 ms 66.897 ms 41.181 ms
6 pl-ktw01a-rc1-ae-7-1400.aorta.net (84.116.193.26) 41.173 ms 35.290 ms 35.265 ms
7 de-fra11b-rc1-ae-24-0.aorta.net (84.116.137.50) 29.571 ms 43.890 ms 32.941 ms
8 de-fra02a-ri1-ae-48-0.aorta.net (84.116.130.62) 32.934 ms 62.005 ms 60.596 ms
9 213.46.179.114.aorta.net (213.46.179.114) 42.129 ms 32.907 ms 42.884 ms
10 ae1-0.bbr01.anx82.fra.de.anexia-it.net (144.208.208.145) 55.262 ms 42.881 ms 42.877 ms
11 ae0-0.bbr02.anx82.fra.de.anexia-it.net (144.208.208.147) 42.097 ms 60.530 ms 42.851 ms
12 fra1.mx204.ae3.anexia.as48314.net (144.208.211.213) 41.432 ms 42.822 ms 29.554 ms
13 fra1.cc.as48314.net (194.45.196.22) 43.541 ms 54.044 ms 57.596 ms
dig / nslookup
dig und nslookup sind zwei einfache Linux-Netzwerk-Tools zur Abfrage von DNS-bezogenen Informationen, wie z. B. die DNS-Einträge eines Servers, die IP-Adresse, die DNS-Server, die zur Auflösung der Domäne verwendet werden, und mehr. Sie sind ziemlich ähnlich und zeigen nur leicht unterschiedliche Informationen an.
Die Ausgabe von dig sieht zum Beispiel so aus:
# dig www.checkmk.com
; <<>> DiG 9.18.1-1ubuntu1.1-Ubuntu <<>> www.checkmk.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43707
;; flags: qr rd ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;www.checkmk.com. IN A
;; ANSWER SECTION:
www.checkmk.com. 0 IN A 45.133.11.28
;; Query time: 0 msec
;; SERVER: 172.27.224.1#53(172.27.224.1) (UDP)
;; WHEN: Thu Dec 15 10:49:02 CET 2022
;; MSG SIZE rcvd: 64
ifconfig / iwconfig
Ein Werkzeug mit mehr Verwaltungsmöglichkeiten ist ifconfig. Man verwendet es unter Linux, um Netzwerkschnittstellen zu konfigurieren, ihre aktuelle Konfiguration anzuzeigen und sie bei Bedarf zu aktivieren oder zu deaktivieren. Für kabelgebundene Verbindungen ist ifconfig das richtige Tool, während sich iwconfig für die Konfiguration von drahtlosen Schnittstellen eignet.
ip
Was die Linux-Netzwerk-Tools angeht, ist ip wahrscheinlich das Schweizer Messer unter ihnen. Es zeigt und manipuliert Routing-Pfade, Geräte, Richtlinien und Tunnel. Es kann Schnittstellen hoch- oder herunterfahren, ihre IP-Adressen und eine Standardroute festlegen und vieles mehr. Als Netzwerk-Monitoring-Tool für Linux hat es nur begrenzte Möglichkeiten und ist eher als Hilfe bei der Fehlersuche nützlich.
isof
isof ist nicht der erste Befehl, der einem in den Sinn kommt, wenn man an Linux-Netzwerk-Monitoring-Tools denkt. Sein Name ist schließlich ein Akronym für „list open files“. Wie hilft der Befehl Admins, die versuchen, Netzwerke zu überwachen?
Das liegt daran, dass unter Linux, wie auch unter Unix, alles eine Datei ist, das schließt Netzwerkverbindungen mit ein. isof lässt sich verwenden, um Netzwerkaktivitäten anzuzeigen:
lsof -nP -i
Der Befehl zeigt alle Verbindungen an. Wenn man nur bestehende Verbindungen erhalten möchte, kann man isof mit den folgenden Optionen ausführen:
isof -nP -iTCP -sTCP:ESTABLISHED
isof ist auf diese oder ähnliche Aufgaben beschränkt, aber um die Netzwerkaktivität zu sehen, ist es ein einfacher Befehl, der bei der Fehlersuche in Linux-Netzwerken helfen kann.
iftop
Während das bekannte top die lokalen Prozesse auf einem Linux-System anzeigt, macht iftop dasselbe, allerdings für Netzwerkaktivitäten. Wenn Sie es ohne Argumente ausführen, öffnet sich eine Oberfläche in der CLI, die der von top sehr ähnlich ist. In dieser Oberfläche können Sie aktive Verbindungen, ihre Ursprungs- und Zieladressen oder Domänen und die jeweils verbrauchte Bandbreite sehen, mit einer Gesamtsumme am unteren Rand. iftop ist daher nützlich, um zu berechnen, wie viel Bandbreite verbraucht wird, zum Beispiel, wenn Sie eine gebührenpflichtige Verbindung haben und Ihre Netzwerknutzung begrenzen wollen. Aber iftop kann auch ein kleines Hilfsprogramm sein, um die Linux-Netzwerkaktivität zu zeigen, unabhängig davon, wie sehr man sich für die tatsächliche Bandbreite interessiert.
iptraf
iptraf ist sozusagen eine funktionsreichere Version von iftop und hat eine ähnliche Oberfläche. Aktive Verbindungen werden mit ihren Ziel-IP-Adressen angezeigt, neben den Paketnummern und -größen. iptraf ist auch ein Paketaufzeichnungstool, und die Live-Statistik der Pakete wird in der unteren Hälfte des Programms angezeigt. iptraf kann auch eine Zusammenfassung der aktuell geöffneten Ports anzeigen, was bei der Fehlersuche in Firewall-Fehlkonfigurationen oder beim Bemerken von Eindringlingen recht praktisch ist. Alles in allem ist es ein gutes Werkzeug, um die Netzwerkaktivität unter Linux anzuzeigen.
Warum sollte man ein modernes Netzwerk-Monitoring-Tool für Linux verwenden?
Für das Netzwerk-Monitoring unter Linux genügen die grundlegenden Tools, die Linux bereitstellt, völlig. Für eine schnelle Fehlerbehebung oder eine einfache skriptgesteuerte Automatisierung einiger Prüfungen sind diese ausreichend. Sie haben außerdem den Vorteil, dass sie praktisch auf jeder Linux-Distribution verfügbar sind, da sie oft bereits vorinstalliert sind.
Die Netzwerküberwachung erfordert jedoch weitaus mehr Funktionen und eine bessere Kontrolle. Für eine komfortable Überwachung des Netzwerkverkehrs unter Linux ist zum Beispiel mehr als nur ein Packet Sniffer wie tcpdump erforderlich. Das Monitoring des Netzwerkverkehrs unter Linux ist ein ziemlich schwieriges Gebiet, das mit den hier vorgestellten und einfachen Tools nur schwer abzudecken ist. Funktionen wie Berichte, Warnmeldungen und die Überwachung von Datenströmen sind mit einfachen Tools nicht möglich. Dies führte zur Entwicklung einer Reihe von fortschrittlichen Monitoring-Lösungen, die Unternehmen in vielen Branchen zur Überwachung ihrer Linux-basierten Infrastruktur einsetzen.
Für fortgeschrittene Anwendungsfälle gibt es erweiterte Netzwerk-Monitoring-Tools für Linux. Sie bieten nicht nur eine Fülle von ausgefeilten Funktionen und unterstützen die Überwachung über spezielle Protokolle wie SNMP, sondern verfügen auch über eine viel einfacher zu bedienende und vor allem lesbare Oberfläche. Moderne Lösungen können den Datenverkehr leicht überwachen, z. B. durch die Unterstützung von flow-basierten Protokollen, und Sie warnen, wenn ein Parameter einen Schwellwert über- oder unterschreitet. Dies wäre mit den grundlegenden Linux-Tools nur mit umfangreichem Skripting möglich, und selbst dann nicht mit der Granularität, die große Netzwerke erfordern. Außerdem würde die Einrichtung dieses Systems viel Zeit der Mitarbeiter kosten. Für die meisten Unternehmen reicht das nicht aus, und eine richtige Netzwerk-Monitoring-Software wie Checkmk ist die richtige Lösung.
Der einzige relative Nachteil von fortschrittlichen Netzwerk-Monitoring-Lösungen für Linux ist, dass man sie installieren muss und ihr Ressourcenverbrauch im Vergleich zu einfacheren CLI-Tools höher ist. Der erste Nachteil ist vernachlässigbar, da die meisten von ihnen volle Unterstützung für die wichtigsten Linux-Distributionen bieten und vorkonfiguriert sind; der zweite Nachteil lohnt sich aufgrund der Fülle der angebotenen Funktionen, der Benutzerfreundlichkeit und der Robustheit, die sie mit sich bringen.
Und es ist nicht einmal eine Frage der Kosten. Die Nutzung von Checkmk Raw ist kostenlos. Die kommerziellen Editionen sind dagegen kostenpflichtig, bieten jedoch neben Support, auch einen deutlich erweiterten Funktionsumfang und die Unterstützung weiterer Dienste. Sie können mit der Trial Checkmk 30 Tage lang kostenlos testen. Netzwerk-Monitoring für Linux muss nicht teuer sein.
FAQ
Für das Bandbreiten-Monitoring unter Linux gibt es einige spezielle Tools. Nicht unbedingt die leistungsfähigsten, aber wahrscheinlich die bekanntesten sind NetHogs und IPTraf.
Es gibt einige Möglichkeiten, die Netzwerkgeschwindigkeit unter Linux zu überprüfen. Ohne spezielle Tools zu installieren, geht es am schnellsten mit ethtool:
s
udo ethtool eth0 | grep Speed
Dies zeigt allerdings nur die Nenngeschwindigkeit an. Ein genaueres Tool für die tatsächliche Netzwerkgeschwindigkeit ist speedtest-cli
. Die Python-App lässt sich mit pip install speedtest-cli
installieren.
Das einfachste Tool zur Überprüfung der Netzwerkauslastung unter Linux ist NetHogs. Einmal gestartet, öffnet es eine Konsole, die in Echtzeit die Netzwerkauslastung der einzelnen Prozesse auf Ihrem System anzeigt.
Eine umfangreichere Alternative ist IPTraf mit der Option "IP Traffic Monitor".