netstat

netstat ist ein Kommandozeilenwerkzeug, das die Netzverbindungen eines Systems anzeigt — welche Verbindungen bestehen, welche Dienste auf Anfragen warten und in welchem Zustand sich beides befindet. Es gehört zur Grundausstattung der Fehlersuche und ist auf praktisch jedem Betriebssystem vorhanden.

Was netstat anzeigt

Vier Dinge, je nach Aufruf:

Bestehende Verbindungen mit lokaler Adresse, Gegenstelle und Zustand. Das ist die häufigste Anwendung.

Wartende Dienste — welcher Port auf dem System geöffnet ist und auf Verbindungen wartet. Die Frage „welcher Dienst hört auf Port 443" wird hier beantwortet.

Die Routingtabelle, was auf manchen Systemen der einzige Weg ohne weitere Werkzeuge war.

Zähler je Protokoll — übertragene Pakete, Fehler, verworfene Rahmen, Wiederholungen. Diese Statistik ist der am wenigsten genutzte und oft nützlichste Teil.

Auf den meisten Systemen lässt sich zusätzlich der Prozess anzeigen, dem eine Verbindung gehört. Das ist der Schritt von „Port 8080 ist belegt" zu „belegt von diesem Programm" — und dafür braucht es meist erhöhte Rechte.

Die Verbindungszustände lesen

Hier liegt der eigentliche Wert für die Fehlersuche. Die wichtigsten Zustände:

ZustandBedeutung
LISTENEin Dienst wartet auf diesem Port
SYN_SENTVerbindungsaufbau begonnen, keine Antwort bisher
ESTABLISHEDVerbindung steht
TIME_WAITVerbindung beendet, Port noch gesperrt
CLOSE_WAITGegenstelle hat beendet, das eigene Programm nicht

Zwei davon sind diagnostisch aussagekräftig:

Viele Einträge in SYN_SENT bedeuten, dass Verbindungsversuche unbeantwortet bleiben — eine Firewall verwirft sie stillschweigend, oder das Ziel ist nicht erreichbar. Eine Ablehnung würde dagegen sofort zum Verschwinden des Eintrags führen.

Viele Einträge in CLOSE_WAIT deuten auf einen Programmfehler hin: Die Gegenseite hat die Verbindung beendet, das eigene Programm schließt sie nicht. Solche Verbindungen belegen dauerhaft Ressourcen und verschwinden nicht von selbst — anders als TIME_WAIT, das nach kurzer Zeit verfällt und zum normalen Betrieb gehört.

Sehr viele Einträge in TIME_WAIT sind dagegen meist kein Fehler, sondern die Folge vieler kurzlebiger Verbindungen. Problematisch wird es erst, wenn dadurch der Vorrat an flüchtigen Ports knapp wird.

netstat ist abgelöst

Unter Linux gilt netstat als veraltet. Es stammt aus einem Werkzeugpaket, das nicht mehr weiterentwickelt wird und auf vielen Systemen nicht mehr vorinstalliert ist; es liest seine Daten aus einer Schnittstelle, die bei tausenden Verbindungen langsam wird.

Der Nachfolger ist ss, das dieselben Fragen über eine effizientere Schnittstelle beantwortet und zusätzlich filtern kann — etwa nach Zustand, Adressbereich oder Port, ohne die Ausgabe nachträglich durchsuchen zu müssen. Die Aufrufe sind ähnlich aufgebaut, aber nicht gleich.

Für die Routingtabelle ist ip route an die Stelle getreten.

Unter Windows ist netstat weiterhin das vorgesehene Werkzeug und wird gepflegt; dort gibt es keinen Nachfolger. Auf den BSD-Systemen und macOS ebenfalls.

Was netstat nicht leistet

Es zeigt keine Pakete. Für die Frage, was über eine Verbindung übertragen wird, braucht es einen Mitschnitt.

Es zeigt nur das eigene System. Verbindungen, die über ein Gerät hinweglaufen, erscheinen nicht — dafür ist die Verbindungstabelle des Routers zuständig.

Es ist eine Momentaufnahme. Kurzlebige Verbindungen erscheinen zwischen zwei Aufrufen gar nicht; für deren Beobachtung braucht es eine Protokollierung oder eine fortlaufende Ausgabe.

Abgrenzung

ss ist der Nachfolger unter Linux, mit gleicher Aufgabe und besseren Filtern.

lsof beantwortet dieselbe Frage von der anderen Seite: nicht welche Verbindungen bestehen, sondern welche Dateien und Netzzugriffe ein Prozess offen hält.

Ein Mitschnittwerkzeug zeigt den Inhalt des Verkehrs, netstat nur dessen Existenz.

Flüchtige Ports sind der Begriff hinter den vielen hohen Portnummern in der Ausgabe und hinter dem Zustand TIME_WAIT.

Quellen

  • RFC 9293: Transmission Control Protocol, Abschnitt zu den Verbindungszuständen
  • iproute2: Dokumentation zu ss
  • Microsoft: Befehlsreferenz netstat

Weblinks

Erstellt: · Überarbeitet: