Mobile-Menu

Troubleshooting und Optimierung im Terminal durchführen Netzwerk-Analyse in Linux mit ss und netstat

Von Thomas Joos 5 min Lesedauer

Admins oder Anwender, die in Linux den Netzwerkverkehr überprüfen wollen, zum Beispiel für das Troubleshooting, können im Terminal auch auf ss oder netstat setzen. Wir zeigen in diesem Beitrag die Möglichkeiten dazu.

Netstat ist in Kombination mit ss in der Lage, zuverlässige Informationen zum Netzwerkverkehr eines Computers zu liefern. (Bild:  Joos - Canonical)
Netstat ist in Kombination mit ss in der Lage, zuverlässige Informationen zum Netzwerkverkehr eines Computers zu liefern.
(Bild: Joos - Canonical)

Um Netzwerkinformationen zum Netzwerkverkehr oder zu Ports auf einem Linux-Computer auszulesen, kommen oft netstat (Network Statstics) und ss (Socket Statistcs) zum Einsatz. Beide Tools liefern wertvolle Informationen, mit denen sich Netzwerkprobleme oft schnell identifizieren lassen. Netstat ist Bestandteil des Net-Tools-Paketes und lässt sich am Beispiel von Ubuntu mit „sudo apt install net-tools“ installieren.

Net-Tools erweitern Linux um wichtige Netzwerktools

Standardmäßig sind die Net-Tools selten auf Linux-Distributionen installiert. Neben netstat sind in dem Paket aber zahlreiche weitere Tools für das Terminal dabei, die für das Troubleshooting oder die Analyse der Netzwerkeinstellungen wichtig sind. Dazu gehören zum Beispiel ifconfig, arp, hostname oder route. Wir sind in einem eigenen Beitrag dazu auf die Möglichkeiten der Tools im Bereich der Sicherheits-Analyse von Netzwerken eingegangen.

In den meisten Fällen ist das Tool „ss“ bereits in Linux verfügbar und lässt sich parallel mit netstat nutzen. Vor allem zur Untersuchung der Kommunikation im Netzwerk können beide Tools wichtige Informationen liefern, auch zu den geöffneten Ports.

Mit ss die geöffneten Sockets in Linux anzeigen

Das Tool ss (Socket Statistics) in Linux dient der Analyse und Überwachung von Netzwerkverbindungen und -sockets. Es ist ein leistungsstärkerer Ersatz für das traditionelle Tool netstat. Bei der Eingabe von „ss“ zeigt das Tool die geöffneten Sockets des lokalen Computers an. Hier sind dann zum Beispiel die Daemons und Prozesse zu sehen, die auf Verbindungen warten sowie die Remote-Ports (Peers). Sollen die aktuell offenen Sockets auf einem Computer angezeigt werden, kommt „ss -l“ zum Einsatz.

Generell lassen sich alle Ausgaben auch in eine Datei umleiten, zum Beispiel mit „ss >> network_xps2“. Um die Anzeige nach Protokollen zu filtern, können noch „-t“ (TCP), „-u“ (UDP) oder „-x“ (Unix) genutzt werden. Bei der Analyse von Netzwerkverbindungen spielen auch die Prozess-IDs sowie die Anwendungen eine Rolle, die Sockets nutzen. Dazu wird der Parameter „-p“ genutzt. Noch ausführlichere Informationen liefert der Parameter „-e“. Hier sind auch weitere Timing-Optionen zu sehen.

Ein grundlegendes Einsatzszenario von ss ist die Überwachung aktiver Netzwerkverbindungen. Der Befehl ss -tuln zeigt alle TCP- und UDP-Sockets in ihrem aktuellen Zustand an, ohne Namensauflösung für Hosts oder Ports zu verwenden. Dies ist nützlich für die schnelle Identifizierung offener und lauschender Ports auf einem Server.

ss kann auch in Skripten verwendet werden, um Netzwerkinformationen zu sammeln oder bestimmte Bedingungen zu überwachen. Ein Bash-Skript könnte beispielsweise ss verwenden, um die Anzahl der aktiven Verbindungen zu einem bestimmten Port zu zählen und bei Überschreitung eines Schwellwertes eine Warnung auszugeben. Ein Beispielbefehl hierfür wäre: ss -Htn „( dport = :22 )“ | wc -l, welcher die Anzahl aktiver SSH-Verbindungen zählt.

Für tiefergehende Analysen unterstützt ss komplexe Filter, die es ermöglichen, Verbindungen basierend auf verschiedenen Parametern wie Zustand, Portnummer und mehr zu filtern. Zum Beispiel kann „ss state established '( dport = :80 or sport = :80 )' verwendet werden, um alle etablierten Verbindungen auf Port 80 zu untersuchen. Das ist besonders nützlich in Umgebungen mit hohem Datenaufkommen, um Engpässe oder ungewöhnliche Aktivitäten zu identifizieren.

ss lässt sich effektiv mit anderen Linux-Tools kombinieren. Die Ausgabe von ss kann beispielsweise mit grep oder awk verarbeitet werden, um spezifische Daten herauszufiltern oder Berichte zu generieren. Dies ermöglicht eine flexible Anpassung an die spezifischen Anforderungen einer Netzwerkumgebung.

Netstat mit ss einsetzen

Grundsätzlich lässt sich netstat gemeinsam mit ss einsetzen. Auch hier zeigt der Befehl ohne Eingabe von Parametern die aktuellen Verbindungen an. Die Optionen -t, -u und -x gibt es für netstat, genauso wie bei ss. Das gleiche gilt für den Listening-Modus „-l“. Um Statistiken zu zeigen kann „-s“ genutzt werden und „-c“ bietet eine dauerhafte Anzeige an.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Netzwerktechnik, IP-Kommunikation und UCC

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung

Ein typischer Einsatz von netstat ist die Anzeige aller aktiven und passiven Verbindungen. Der Befehl netstat -a listet bspw. alle Sockets auf und bietet einen umfassenden Überblick über den Status des Netzwerks. Für die Überprüfung der Routingtabellen wird netstat -nr verwendet. Dieser Befehl zeigt die Routingtabelle des Systems an. Dies ist wesentlich für das Verständnis und die Diagnose der Wegewahl des Netzwerkverkehrs. Für detaillierte Informationen zu den einzelnen Verbindungen bietet sich der Befehl netstat -ant an. Dieser liefert eine Liste aller TCP-Verbindungen mit IP-Adressen und Portnummern, was bei der Fehlersuche hilfreich ist.

Wie bei ss kann auch die Ausgabe von netstat mit anderen Linux-Tools wie grep oder awk kombiniert werden, um spezifische Informationen herauszufiltern oder angepasste Berichte zu erstellen. Für eine tiefgreifende Analyse von Verbindungen zu einem bestimmten Server oder Dienst kann netstat mit weiteren Optionen und Pipe-Kommandos kombiniert werden. Zum Beispiel ermittelt netstat -atnp | grep 'ESTABLISHED' | grep '443' alle etablierten HTTPS-Verbindungen (Port 443). Mit der Option -p wird zusätzlich der Name des Prozesses angezeigt, der die Verbindung initiiert hat.

Um mit netstat in Echtzeit zu überwachen, kann es mit dem watch-Befehl kombiniert werden. Der Befehl watch -n 1 'netstat -ant' aktualisiert beispielsweise jede Sekunde die Anzeige der TCP-Verbindungen, was besonders bei der Beobachtung von dynamischen Netzwerksituationen hilfreich ist.

Fortgeschrittene Anwendung von netstat durch Kombination verschiedener Parameter

Die Kombination des netstat-Befehls mit der Option -o und -t kann zur Überwachung von TCP-Verbindungen mit zugehörigen Zeitstempeln verwendet werden. der Befehl netstat -ot zeigt alle TCP-Verbindungen mit den jeweiligen Timern an. Das ermöglicht es, die Dauer der einzelnen Verbindungen zu analysieren und potenzielle Probleme wie langanhaltende oder stagnierende Verbindungen zu identifizieren.

Für Serverumgebungen ist die Kombination von -a, -n und -p sehr nützlich. Der Befehl netstat -anp | grep 'LISTEN' zeigt alle Ports an, die auf eingehende Verbindungen warten, zusammen mit den zugehörigen Prozess-IDs. Mit netstat können Verbindungen nach ihrem Zustand und Protokoll gefiltert werden. Zum Beispiel listet netstat -atune | grep 'ESTABLISHED' alle etablierten TCP- und UDP-Verbindungen mit numerischen Adressen und Benutzerinformationen auf.

Für die Überwachung von IPv6-Verbindungen kombiniert man netstat mit der Option -6. Der Befehl netstat -a6 zeigt alle aktiven IPv6-Verbindungen und Ports an. Die Kombination von netstat mit awk erlaubt eine spezifischere Datenauswertung. Zum Beispiel kann netstat -ant | awk '/:80/ {print $5}' genutzt werden, um nur die Remote-Adressen der Verbindungen zum Port 80 anzuzeigen.

Für eine aggregierte Sicht auf die Daten kann netstat mit sort und uniq kombiniert werden. Beispielsweise hilft der Befehl netstat -an | grep 'ESTABLISHED' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr dabei, die Anzahl der Verbindungen pro Remote-IP-Adresse zu zählen und diese absteigend zu sortieren. Diese Art der Analyse ist nützlich, um Muster im Netzwerkverkehr zu identifizieren.

(ID:49961706)