netstat: Netzwerkverbindungen prüfen
Autor: Redaktion Domeny.ForSale Veröffentlicht
Kurz erklärt: netstat ist ein Kommandozeilenwerkzeug, das Netzwerkverbindungen, Ports, an denen Programme auf Datenverkehr warten, und weitere Netzwerkinformationen anzeigt. Unter Linux ist es meist im Paket net-tools enthalten: Der Befehl sudo netstat -tulnp zeigt TCP- und UDP-Ports sowie die zugehörigen Prozesse. Zum Prüfen bestehender TCP-Verbindungen eignet sich sudo netstat -tnp. Eine moderne Alternative ist ss.
Was zeigt netstat und wann ist es hilfreich?
Mit netstat kannst du prüfen, mit welchen Adressen dein Computer kommuniziert und welche Programme Netzwerkdienste bereitstellen. So lässt sich beispielsweise feststellen, ob ein Webserver läuft, warum eine Anwendung einen Port nicht belegen kann oder welcher Prozess eine Verbindung zu einem anderen Gerät aufrechterhält.
Ein Port ist eine Nummer, über die Netzwerkverkehr einem bestimmten Dienst zugeordnet wird. Ein Programm, das an einem Port lauscht, wartet auf Kommunikation. Eine aktive TCP-Verbindung hingegen verbindet eine bestimmte lokale Adresse samt Port mit der Adresse und dem Port der Gegenstelle.
netstat zeigt den Zustand, der auf dem untersuchten Computer sichtbar ist. Die Ausgabe allein belegt nicht, dass ein Dienst aus dem Internet erreichbar ist: Eine Firewall, ein Router oder Netzwerkregeln des Infrastrukturanbieters können den Zugriff blockieren.
Wie installierst du netstat unter Linux?
Prüfe zunächst, ob das Werkzeug bereits verfügbar ist:
netstat --version
Meldet die Shell, dass der Befehl nicht gefunden wurde, installiere das Paket net-tools mit dem Paketmanager deiner Distribution. Typische Befehle sind:
| Distribution | Installation |
|---|---|
| Debian, Ubuntu | sudo apt update && sudo apt install net-tools |
| Fedora | sudo dnf install net-tools |
| Arch Linux | sudo pacman -S net-tools |
| openSUSE | sudo zypper install net-tools |
Für die Installation brauchst du Administratorrechte. Wenn du auf einem verwalteten Server keinen Zugriff auf sudo hast, bitte den Administrator um die Installation oder prüfe, ob der Befehl ss verfügbar ist.
Auf vielen modernen Linux-Systemen ist netstat nicht standardmäßig installiert. Zur Diagnose von Verbindungen wird ss aus dem Paket iproute2 empfohlen. Bei der Arbeit mit älteren Anleitungen und Umgebungen kann netstat weiterhin nützlich sein.
Wie prüfst du aktive Verbindungen?
Um TCP-Verbindungen ohne die Sockets anzuzeigen, die auf neue Verbindungen warten, führe folgenden Befehl aus:
sudo netstat -tnp
Die Option -t wählt TCP aus. -n zeigt Adressen und Ports numerisch an, ohne Namen aufzulösen. -p ergänzt Informationen zum Prozess. Mit sudo kannst du auch Angaben zu Prozessen anderer Benutzer sehen; ohne die nötigen Rechte können manche Informationen fehlen.
In der Spalte State steht der Verbindungszustand. ESTABLISHED bezeichnet eine bestehende Verbindung, SYN_SENT einen Verbindungsversuch und TIME_WAIT einen Zustand nach dem Verbindungsende, in dem das System die Verbindungsdaten noch aufbewahrt. Ein Eintrag mit TIME_WAIT weist für sich genommen nicht auf eine Störung hin.
Wenn dich ausschließlich bestehende TCP-Verbindungen interessieren, kannst du die Ausgabe filtern:
sudo netstat -tnp | grep ESTABLISHED
Die Spalte Local Address enthält die lokale Adresse und den lokalen Port, Foreign Address die Adresse und den Port der Gegenstelle. UDP baut Verbindungen nicht auf dieselbe Weise auf wie TCP. Deshalb haben UDP-Sockets keinen entsprechenden Zustand ESTABLISHED. Zum Prüfen dieser Sockets verwendest du sudo netstat -unp.
Wie findest du Programme, die an Ports lauschen?
Ein besonders praktischer Befehl zum Prüfen von Netzwerkdiensten ist:
sudo netstat -tulnp
Die Option -l beschränkt die Ausgabe auf lauschende Sockets, -u berücksichtigt UDP. Bei TCP siehst du den Zustand LISTEN. Bei UDP handelt es sich dagegen um Sockets, die Datagramme empfangen, nicht um das Warten auf Verbindungen im Sinne von TCP.
Ein vereinfachter Beispieleintrag kann so aussehen:
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 2451/python3
Das bedeutet, dass der Prozess python3 mit der PID 2451 an Port 8080 lauscht, allerdings nur an der lokalen Loopback-Schnittstelle. Die PID ist die Prozesskennung. Mit ihr kannst du den Prozess genauer untersuchen, beispielsweise mit dem Befehl ps -p 2451 -f.
Die Adresse, an der ein Dienst lauscht, ist wichtig:
127.0.0.1:8080— der Dienst ist über die lokale IPv4-Adresse erreichbar, nicht direkt von anderen Computern aus.0.0.0.0:8080— der Dienst lauscht an allen lokalen IPv4-Adressen.:::8080— der Dienst lauscht an allen lokalen IPv6-Adressen; ob auch IPv4 unterstützt wird, hängt von der Konfiguration des Systems und der Anwendung ab.
Verwechsle die Adresse 0.0.0.0:* in der Spalte Foreign Address nicht mit einem entfernten Client. Bei einem lauschenden Socket bedeutet sie, dass keine Gegenstelle angegeben ist.
Beispiel: Eine Anwendung kann Port 8080 nicht belegen
Wenn eine Anwendung meldet, dass Port 8080 belegt ist, prüfe die lauschenden TCP-Sockets:
sudo netstat -tlnp | grep ':8080 '
Lies die PID und den Programmnamen ab. Prüfe anschließend den Prozess mit ps -p PID -f und ersetze dabei PID durch die gefundene Nummer. Kläre, ob es sich um eine frühere Instanz deiner Anwendung oder um einen benötigten Dienst handelt. Beende erst danach das betreffende Programm auf dem dafür vorgesehenen Weg oder wähle einen anderen Port. Beende keinen unbekannten Prozess nur deshalb, weil er den Start verhindert.
Falls netstat nicht verfügbar ist, kannst du eine ähnliche Prüfung mit folgendem Befehl durchführen:
sudo ss -tulnp
Bei Problemen mit dem Zugriff von einem anderen Computer prüfst du zuerst, an welcher Adresse der Dienst lauscht und welcher Prozess dahintersteht. Untersuche erst danach die Firewall und die Netzwerkroute. So kannst du unterscheiden, ob die Anwendung nicht funktioniert oder ihr Port nicht erreichbar ist.
Siehe auch: Domain und Social Media — was sollte einheitlich sein?
