VMware ESXi and vSphere Cluster Management
Netzwerkstatus unter Linux mit netstat überwachen
Lerne, mit netstat offene Ports, TCP- und UDP-Verbindungen, Prozesse, Statistiken, Schnittstellen und Routingtabellen unter Linux zu prüfen.
netstat ist ein Kommandozeilenwerkzeug zur Untersuchung von Netzwerkverbindungen, Sockets, lauschenden Ports, Schnittstellenstatistiken und Routingtabellen. Damit lässt sich beispielsweise feststellen, ob ein Dienst läuft, welcher Prozess einen Port verwendet oder ob Netzwerkfehler und überfüllte Socket-Warteschlangen auftreten.
Auf vielen aktuellen Linux-Systemen gilt netstat als veraltet. Für neue Arbeitsabläufe ist ss aus dem Paket iproute2 meist die bessere Wahl. netstat bleibt dennoch nützlich, wenn ältere Dokumentationen, Skripte oder minimale Umgebungen darauf aufbauen.
Wofür wird netstat verwendet?
Ein Socket ist ein Kommunikationsendpunkt. Er wird unter anderem durch ein Transportprotokoll, eine IP-Adresse und einen Port beschrieben. Ein Port ist ein nummerierter Endpunkt, an dem ein Dienst Verbindungen oder Datagramme entgegennimmt. Ein Listening Socket wartet auf neue Verbindungen.
Mit netstat können Linux-Anwender unter anderem folgende Fragen beantworten:
- Welche TCP- und UDP-Sockets sind aktiv?
- Welche Ports lauschen lokal?
- Ist ein Dienst nur auf localhost oder auch über das Netzwerk erreichbar?
- Welcher Prozess und welche PID gehören zu einem Port?
- Welche TCP-Verbindungszustände treten besonders häufig auf?
- Gibt es auffällige Empfangs- oder Sendewarteschlangen?
- Zeigen Protokoll- oder Schnittstellenzähler auf Paketverluste und Fehler?
- Ist eine passende Standardroute zum externen Netzwerk vorhanden?
Installation und Verfügbarkeit prüfen
Auf Linux wird netstat üblicherweise durch das Paket net-tools bereitgestellt. Zuerst lässt sich prüfen, ob der Befehl bereits vorhanden ist:
command -v netstat
netstat --version
Fehlt der Befehl, kann das Paket je nach Distribution so installiert werden:
# Debian und Ubuntu
sudo apt update && sudo apt install net-tools
# Fedora und RHEL-kompatible Systeme
sudo dnf install net-tools
# Arch-basierte Systeme
sudo pacman -S net-tools
Optionen und einzelne Ausgabefelder können sich abhängig von Distribution und net-tools-Version geringfügig unterscheiden.
Grundausgabe und numerische Anzeige
Ohne Optionen zeigt netstat einen Überblick über einen Teil der aktiven Netzwerk-Sockets:
netstat
Mit -a werden alle Verbindungen und lauschenden Endpunkte einbezogen:
netstat -a
Standardmäßig versucht netstat häufig, IP-Adressen oder Ports in Namen aufzulösen. Das kann die Ausgabe verlangsamen und bei DNS-Problemen irritieren. Die Option -n erzwingt eine numerische Ausgabe, also IP-Adressen und Portnummern ohne DNS- oder Servicenamenauflösung:
netstat -an
Für eine schnelle Übersicht über TCP- und UDP-Sockets ist folgende Kombination besonders praktisch:
netstat -atun
TCP ist verbindungsorientiert und besitzt Zustände wie LISTEN oder ESTABLISHED. UDP ist verbindungslos und zeigt normalerweise keine TCP-artige Zustandsfolge.
Wichtige netstat-Optionen
| Option | Wirkung | Typischer Einsatzzweck | Beispiel |
|---|---|---|---|
-a | Alle Sockets und Listener anzeigen | Vollständigen Überblick erhalten | netstat -an |
-t | TCP-Sockets anzeigen | TCP-Zustände untersuchen | netstat -tan |
-u | UDP-Sockets anzeigen | UDP-Bindungen prüfen | netstat -uan |
-n | Adressen und Ports numerisch ausgeben | Namensauflösung vermeiden | netstat -tun |
-p | PID und Programmnamen anzeigen | Port einem Prozess zuordnen | sudo netstat -tulpn |
-c | Anzeige fortlaufend aktualisieren | Veränderungen beobachten | netstat -atnc |
-s | Protokollstatistiken ausgeben | Fehler- und Verkehrsindikatoren prüfen | netstat -s |
-st | TCP-Statistiken ausgeben | TCP-Probleme eingrenzen | netstat -st |
-i | Schnittstellenstatistiken anzeigen | Pakete, Fehler und Drops vergleichen | netstat -i |
-r | Routingtabelle anzeigen | Gateway und Routen prüfen | netstat -rn |
Nach TCP und UDP filtern
TCP-Sockets
Mit -t wird die Anzeige auf TCP beschränkt. Die Kombination mit -a und -n umfasst auch Listener und vermeidet Namensauflösung:
netstat -t
netstat -tan
Aktive Sitzungen erscheinen typischerweise als ESTABLISHED. Ein Server-Socket, der auf neue Verbindungen wartet, erscheint als LISTEN.
UDP-Sockets
Mit -u werden UDP-Sockets angezeigt:
netstat -u
netstat -uan
Da UDP keinen TCP-artigen Verbindungsaufbau besitzt, sind Zustände wie ESTABLISHED oder LISTEN hier normalerweise nicht auf dieselbe Weise vorhanden. Entscheidend sind vor allem lokale Adresse und lokaler Port.
Lauschende Ports und lokale Bindungen untersuchen
Alle TCP- und UDP-Listener mit Prozessinformationen lassen sich typischerweise so anzeigen:
sudo netstat -tulpn
In der Spalte Local Address stehen lokale IP-Adresse und Port. Eine Bindung an 127.0.0.1 oder ::1 ist auf den lokalen Rechner beschränkt. Ein Dienst ist dadurch nicht direkt über andere Netzwerkgeräte erreichbar.
Adressen wie 0.0.0.0, :: oder je nach Ausgabe ein Stern-Platzhalter bedeuten meist, dass der Socket auf mehreren oder allen passenden Interfaces lauscht. Das kann gewollt sein, erhöht aber die Bedeutung von Firewall- und Dienstkonfiguration.
Die Prozessspalten helfen, einen Port einem Programm zuzuordnen. Beispiel: Ein unerwarteter Listener auf Port 8080 wird mit sudo netstat -tulpn einem Programmnamen und einer PID zugeordnet. Danach können Prozessdetails, Paketquelle, Dienstdefinition und Logs geprüft werden.
Felder einer Verbindungsanzeige verstehen
| Feld | Bedeutung | Worauf bei der Diagnose achten |
|---|---|---|
Proto | Verwendetes Transportprotokoll, etwa TCP oder UDP | Protokoll mit der erwarteten Dienstkonfiguration vergleichen |
Recv-Q | Datenmenge, die am Socket eingegangen, aber noch nicht von der lokalen Anwendung gelesen wurde | Dauerhaft hohe oder wachsende Werte können auf eine zu langsame Anwendung hindeuten |
Send-Q | Datenmenge im Sendepfad, deren genaue Bedeutung je nach Sockettyp und Toolversion variiert | Dauerhaft hohe oder wachsende Werte können auf fehlende Bestätigungen, Überlastung oder ein nicht antwortendes Ziel hinweisen |
Local Address | Lokale IP-Adresse und Port | Prüfen, ob die Bindung nur auf localhost oder auf externen Interfaces erfolgt |
Foreign Address | IP-Adresse und Port der Gegenstelle | Unerwartete Ziele und externe Verbindungen untersuchen |
State | TCP-Verbindungszustand | Häufungen bestimmter Zustände im zeitlichen Kontext bewerten |
PID/Program name | Prozesskennung und Programmname | Portbelegung und unbekannte Dienste identifizieren |
Recv-Q- und Send-Q-Werte von null oder nahe null sind in vielen Situationen unauffällig. Aussagekräftiger als ein einzelner Messwert ist die Entwicklung über mehrere Abfragen.
TCP-Zustände diagnostisch nutzen
| Status | Phase | Bedeutung | Mögliche Diagnosehinweise |
|---|---|---|---|
LISTEN | Warten | Ein Server-Socket wartet auf neue Verbindungen | Erwarteten Port, lokale Bindung und Prozess prüfen |
ESTABLISHED | Aktive Sitzung | Die TCP-Verbindung ist aufgebaut | Gegenstelle und Anzahl aktiver Sitzungen bewerten |
SYN_SENT | Aufbau | Der lokale Host hat einen Verbindungsaufbau begonnen | Viele Einträge können auf fehlende Erreichbarkeit, Firewall-Blockade oder ein falsches Ziel hindeuten |
SYN_RECV oder SYN_RECEIVED | Aufbau | Eine Verbindungsanfrage wurde empfangen, der Aufbau ist noch nicht abgeschlossen | Viele Einträge können auf Überlastung oder unvollständige Handshakes hinweisen |
FIN_WAIT_1 | Abbau | Der lokale Host hat das Schließen eingeleitet | Dauer und Häufigkeit im Anwendungskontext prüfen |
FIN_WAIT_2 | Abbau | Die lokale Seite hat das Ende signalisiert und wartet auf die Gegenstelle | Lange Verweildauer kann auf eine nicht sauber schließende Gegenstelle hindeuten |
CLOSE_WAIT | Abbau | Die Gegenstelle hat geschlossen; die lokale Anwendung muss noch schließen | Viele dauerhafte Einträge können auf einen Fehler in der Anwendung hinweisen |
LAST_ACK | Abbau | Die lokale Seite wartet auf die letzte Bestätigung | Bei Häufungen Gegenstelle und Anwendung untersuchen |
TIME_WAIT | Nach dem Abbau | Der Host hält Informationen kurzzeitig zurück, damit verspätete Pakete nicht stören | Viele Einträge sind bei kurzlebigen TCP-Verbindungen häufig normal |
CLOSED | Inaktiv | Keine aktive Verbindung | Nur beachten, sofern die verwendete Ausgabe diesen Zustand zeigt |
Praktische Diagnosebefehle
Schneller Überblick
netstat -atun
Damit werden aktive und lauschende TCP- sowie UDP-Endpunkte numerisch angezeigt. Lokale Adresse, Port, Gegenstelle und TCP-Status können mit dem erwarteten Betrieb verglichen werden.
Port und Prozess ermitteln
sudo netstat -tulpn
Die Ausgabe verbindet Listener mit PID und Programmnamen. Root-Rechte sind häufig erforderlich. Ohne ausreichende Rechte sind nicht alle Prozesse anderer Benutzer sichtbar.
Verbindungen fortlaufend beobachten
netstat -atnc
Die Anzeige wird regelmäßig aktualisiert. So lassen sich neue Sitzungen, kurzlebige Verbindungen und wachsende Queues beobachten. Beendet wird die laufende Anzeige mit Strg+C.
Protokollstatistiken auswerten
netstat -s
netstat -st
-s zeigt Statistiken unter anderem für IP, TCP, UDP und ICMP. -st begrenzt die Ausgabe auf TCP. Relevant können Retransmits, fehlgeschlagene Verbindungsversuche, zurückgesetzte Verbindungen, verworfene Pakete und Empfangsfehler sein. Einzelne Zähler sind nur im zeitlichen Vergleich aussagekräftig, weil viele kumulativ sind.
Schnittstellenstatistiken
netstat -i
Die Ausgabe enthält Zähler für empfangene und gesendete Pakete sowie Fehler und verworfene Pakete. Hohe oder schnell wachsende Fehler- und Drop-Werte können auf Treiberprobleme, Verkabelung, WLAN-Probleme, Überlastung, eine ungeeignete MTU oder fehlerhafte Konfiguration hinweisen. Historische Zähler sollten über einen Zeitraum verglichen werden.
Routingtabelle anzeigen
netstat -rn
-r zeigt die Routingtabelle, -n verhindert die Namensauflösung. Typische Spalten beschreiben Netzwerkziel, Gateway, Netzmaske oder Präfix, Flags und ausgehendes Interface. Die Standardroute wird oft als 0.0.0.0 für IPv4 oder ::/0 für IPv6 dargestellt. Sie wird verwendet, wenn keine spezifischere Route zum Ziel existiert.
Typische Fehlerbilder eingrenzen
Webdienst ist von außen nicht erreichbar
- Mit
sudo netstat -tulpnprüfen, ob der erwartete TCP-Port lauscht. - Kontrollieren, ob der Dienst nur an
127.0.0.1oder::1gebunden ist. - Bei fehlendem Listener Dienststatus und Logs prüfen.
- Bei vorhandenem Listener zusätzlich Dienstkonfiguration, Host-Firewall und externe Sicherheitsgruppen kontrollieren.
Mögliche Ursachen sind ein nicht laufender Dienst, ein falscher Port, eine ausschließliche Loopback-Bindung, ein Portkonflikt oder eine blockierende Firewall.
Unerwarteter lokaler Port
- Mit
sudo netstat -tulpnPID und Programmnamen ermitteln. - Den Prozess mit
psoder dem Service-Manager untersuchen. - Paketquelle, Dienstdefinition, Konfiguration und Logs prüfen.
- Eine unnötige externe Bindung entfernen oder den Dienst durch Firewall-Regeln schützen.
Der Listener kann zu einem legitim installierten Dienst, einer vergessenen Testanwendung oder einem unbekannten Prozess gehören. Ein unbekannter Prozess erfordert eine weitergehende Sicherheitsuntersuchung.
Verbindungen bleiben hängen
netstat -tan
netstat -st
Wiederholt hohe Recv-Q-Werte können bedeuten, dass die Anwendung Daten nicht schnell genug liest. Hohe Send-Q-Werte können auf fehlende Bestätigungen oder ein langsames beziehungsweise nicht erreichbares Ziel hindeuten. Viele CLOSE_WAIT-Einträge sprechen möglicherweise dafür, dass eine Anwendung Sockets nicht sauber schließt. Viele SYN_SENT-Einträge können durch Firewall-Blockaden, falsche Ziele oder fehlende Erreichbarkeit entstehen. Viele TIME_WAIT-Einträge sind dagegen bei vielen kurzlebigen TCP-Verbindungen oft normal.
Externe Ziele sind nicht erreichbar
netstat -rn
netstat -i
ip route
Fehlt eine Standardroute, kann das System lokale Netze erreichen, aber nicht automatisch externe Ziele. Gateway und ausgehendes Interface müssen zur Netzwerkkonfiguration passen. Zusätzlich sollten Schnittstellenfehler und Drops geprüft werden.
Moderne Alternative: ss
ss wird über iproute2 bereitgestellt und ist auf modernen Linux-Systemen das bevorzugte Werkzeug. Es wird aktiv gepflegt und kann Socket-Abfragen häufig schneller durchführen.
| Aufgabe | netstat | ss | Empfehlung |
|---|---|---|---|
| Alle TCP- und UDP-Sockets | netstat -atun | ss -tun | Für neue Systeme bevorzugt ss verwenden |
| Lauschende Ports mit Prozessen | sudo netstat -tulpn | sudo ss -tulpn | ss verwenden, wenn verfügbar |
| TCP-Verbindungen numerisch anzeigen | netstat -tan | ss -tan | Numerische Ausgabe für schnelle Diagnosen nutzen |
| UDP-Sockets numerisch anzeigen | netstat -uan | ss -uan | Lokale UDP-Bindungen vergleichen |
| Routingtabelle anzeigen | netstat -rn | ip route | Für Routen moderne ip-Befehle bevorzugen |
| Moderne Standardwerkzeuge | Für ältere Umgebungen und Dokumentationen | Aktuelle Socket-Diagnose | Neue Skripte möglichst mit ss und ip erstellen |
Die Werkzeuge sind nicht in jeder Option vollständig identisch. Bei der Migration sollten Skripte und erwartete Ausgabefelder geprüft werden.
Sicherheits- und Datenschutzaspekte
- Offene Ports zeigen, welche Dienste potenziell erreichbar sind. Nicht benötigte Dienste sollten beendet oder deaktiviert werden.
- Eine Bindung an alle Interfaces sollte nur erfolgen, wenn sie erforderlich ist. Andernfalls ist eine Bindung an eine konkrete Adresse oder localhost sicherer.
- Bei unbekannten Prozessen auf unerwarteten Ports sollten Eigentümer, Paketquelle, Dienstdefinition und Logs geprüft werden.
- PID, Programmnamen, interne IP-Adressen und Gegenstellen können vertrauliche Informationen enthalten.
- Vollständige Produktionsausgaben sollten nicht ungeschützt weitergegeben werden. Vor dem Teilen können interne Adressen und Verbindungsdaten anonymisiert werden.
Prüfungsrelevante Merksätze
-tsteht für TCP,-ufür UDP,-nfür numerische Ausgabe und-pfür Prozessinformationen.LISTENbedeutet, dass ein TCP-Server-Socket auf Verbindungen wartet;ESTABLISHEDbezeichnet eine aufgebaute TCP-Verbindung.0.0.0.0,::oder ein Stern-Platzhalter können eine Bindung an mehrere oder alle passenden Interfaces anzeigen.Recv-Qbeschreibt ungelesene eingegangene Daten;Send-Qbeschreibt ausstehende Daten im Sendepfad.- Dauerhaft hohe Queues sowie wachsende Fehler- und Drop-Zähler verdienen eine Untersuchung.
CLOSE_WAITkann auf nicht sauber geschlossene Sockets in einer Anwendung hinweisen;TIME_WAITist bei kurzlebigen Verbindungen oft normal.ssundip routesind auf aktuellen Linux-Systemen die bevorzugten Alternativen.
Eine kompakte Referenz für dieses Thema findest du unter Netzwerkstatus mit netstat überwachen.