Bei der Behebung von Problemen mit der Netzwerkkonnektivität oder anwendungsspezifischen Problemen sollte eines der ersten Dinge überprüft werden, welche Ports tatsächlich auf Ihrem System verwendet werden und welche Anwendung einen bestimmten Port abhört.
In diesem Artikel wird die Verwendung von netstat erläutert , ss und lsof Befehle, um herauszufinden, welche Dienste auf welchen Ports lauschen. Die Anleitung gilt für alle Linux- und Unix-basierten Betriebssysteme wie macOS.
Was ist Listening Port #
Der Netzwerkport wird durch seine Nummer, die zugehörige IP-Adresse und den Typ des Kommunikationsprotokolls wie TCP oder UDP identifiziert.
Listening Port ist ein Netzwerkport, an dem eine Anwendung oder ein Prozess lauscht und als Kommunikationsendpunkt fungiert.
Jeder Listening-Port kann mithilfe einer Firewall geöffnet oder geschlossen (gefiltert) werden. Im Allgemeinen ist ein offener Port ein Netzwerkport, der eingehende Pakete von entfernten Standorten akzeptiert.
Es ist nicht möglich, dass zwei Dienste denselben Port an derselben IP-Adresse überwachen.
Wenn Sie beispielsweise einen Apache-Webserver betreiben, der Ports 80 abhört und 443 und Sie versuchen, Nginx zu installieren, wird letzteres nicht gestartet, da die HTTP- und HTTPS-Ports bereits verwendet werden.
Listening-Ports mit netstat prüfen #
netstat ist ein Befehlszeilentool, das Informationen über Netzwerkverbindungen bereitstellen kann.
Verwenden Sie den folgenden Befehl, um alle TCP- oder UDP-Ports aufzulisten, die überwacht werden, einschließlich der Dienste, die die Ports und den Socket-Status verwenden:
sudo netstat -tunlp Die in diesem Befehl verwendeten Optionen haben folgende Bedeutung:
-t- TCP-Ports anzeigen.-u- UDP-Ports anzeigen.-n- Numerische Adressen anzeigen statt Hosts aufzulösen.-l- Nur Listening Ports anzeigen.-p- Zeigen Sie die PID und den Namen des Listener-Prozesses an. Diese Informationen werden nur angezeigt, wenn Sie den Befehl als root oder sudouser ausführen.
Die Ausgabe sieht in etwa so aus:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 445/sshd
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 929/master
tcp6 0 0 :::3306 :::* LISTEN 534/mysqld
tcp6 0 0 :::80 :::* LISTEN 515/apache2
tcp6 0 0 :::22 :::* LISTEN 445/sshd
tcp6 0 0 :::25 :::* LISTEN 929/master
tcp6 0 0 :::33060 :::* LISTEN 534/mysqld
udp 0 0 0.0.0.0:68 0.0.0.0:* 966/dhclient
Die wichtigen Spalten in unserem Fall sind:
Proto- Das vom Socket verwendete Protokoll.Local Address- Die IP-Adresse und Portnummer, die der Prozess abhört.PID/Program name- Die PID und der Name des Prozesses.
Wenn Sie die Ergebnisse filtern möchten, verwenden Sie grep Befehl. Um beispielsweise herauszufinden, welcher Prozess auf TCP-Port 22 lauscht, würden Sie Folgendes eingeben:
sudo netstat -tnlp | grep :22 Die Ausgabe zeigt, dass auf dieser Maschine Port 22 vom SSH-Server verwendet wird:
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 445/sshd
tcp6 0 0 :::22 :::* LISTEN 445/sshd
Wenn die Ausgabe leer ist, bedeutet dies, dass nichts auf dem Port lauscht.
Sie können die Liste auch nach Kriterien filtern, z. B. PID, Protokoll, Status usw.
netstat ist veraltet und wird durch ss ersetzt und ip , aber es ist immer noch einer der am häufigsten verwendeten Befehle zum Überprüfen von Netzwerkverbindungen.
Listening-Ports mit ss prüfen #
ss ist das neue netstat . Es fehlen einige der netstat Features, macht aber mehr TCP-Zustände verfügbar und ist etwas schneller. Die Befehlsoptionen sind größtenteils gleich, daher der Übergang von netstat zu ss ist nicht schwierig.
Mit ss erhalten Sie eine Liste aller Listening Ports Sie würden Folgendes eingeben:
sudo ss -tunlp
Die Ausgabe ist fast dieselbe wie die von netstat gemeldete :
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=445,fd=3))
LISTEN 0 100 0.0.0.0:25 0.0.0.0:* users:(("master",pid=929,fd=13))
LISTEN 0 128 *:3306 *:* users:(("mysqld",pid=534,fd=30))
LISTEN 0 128 *:80 *:* users:(("apache2",pid=765,fd=4),("apache2",pid=764,fd=4),("apache2",pid=515,fd=4))
LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=445,fd=4))
LISTEN 0 100 [::]:25 [::]:* users:(("master",pid=929,fd=14))
LISTEN 0 70 *:33060 *:* users:(("mysqld",pid=534,fd=33))
Listening-Ports mit lsof prüfen #
lsof ist ein leistungsstarkes Befehlszeilenprogramm, das Informationen über von Prozessen geöffnete Dateien bereitstellt.
Unter Linux ist alles eine Datei. Sie können sich einen Socket als eine Datei vorstellen, die in das Netzwerk schreibt.
Um eine Liste aller lauschenden TCP-Ports mit lsof zu erhalten Typ:
sudo lsof -nP -iTCP -sTCP:LISTEN Die verwendeten Optionen lauten wie folgt:
-n- Portnummern nicht in Portnamen umwandeln.-p- Hostnamen nicht auflösen, numerische Adressen anzeigen.-iTCP -sTCP:LISTEN- Nur Netzwerkdateien mit TCP-Status LISTEN anzeigen.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 445 root 3u IPv4 16434 0t0 TCP *:22 (LISTEN)
sshd 445 root 4u IPv6 16445 0t0 TCP *:22 (LISTEN)
apache2 515 root 4u IPv6 16590 0t0 TCP *:80 (LISTEN)
mysqld 534 mysql 30u IPv6 17636 0t0 TCP *:3306 (LISTEN)
mysqld 534 mysql 33u IPv6 19973 0t0 TCP *:33060 (LISTEN)
apache2 764 www-data 4u IPv6 16590 0t0 TCP *:80 (LISTEN)
apache2 765 www-data 4u IPv6 16590 0t0 TCP *:80 (LISTEN)
master 929 root 13u IPv4 19637 0t0 TCP *:25 (LISTEN)
master 929 root 14u IPv6 19638 0t0 TCP *:25 (LISTEN)
Die Namen der meisten Ausgabespalten sind selbsterklärend:
COMMAND,PID,USER- Der Name, die PID und der Benutzer, der das dem Port zugeordnete Programm ausführt.NAME- Die Portnummer.
Um herauszufinden, welcher Prozess an einem bestimmten Port lauscht, z. B. Port 3306 Sie würden verwenden:
sudo lsof -nP -iTCP:3306 -sTCP:LISTEN
Die Ausgabe zeigt, dass der MySQL-Server Port 3306 verwendet :
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 534 mysql 30u IPv6 17636 0t0 TCP *:3306 (LISTEN)
Weitere Informationen finden Sie auf der lsof-Manpage und lesen Sie alle anderen leistungsstarken Optionen dieses Tools.
Schlussfolgerung #
Wir haben Ihnen mehrere Befehle gezeigt, mit denen Sie überprüfen können, welche Ports auf Ihrem System verwendet werden und wie Sie herausfinden können, welcher Prozess an einem bestimmten Port lauscht.
Wenn Sie Fragen oder Anmerkungen haben, hinterlassen Sie bitte unten einen Kommentar.