Es ist nicht ganz klar, was Sie fragen. Was meinst du mit "offen"? Meinen Sie, dass ein Server diesen Port überwacht? Oder meinst du, es ist von der System-Firewall erlaubt? Oder was?
David Schwartz
Ich denke, ein Port wird auf meinem Server blockiert und möchte ihn wieder entsperren / öffnen.
James Anderson
14
netstat -an | grep PORTNUMBER | grep -i listenWenn die Ausgabe leer ist, wird der Port nicht verwendet.
Automatix
Antworten:
187
Mit können Sie überprüfen, ob ein Prozess einen TCP- oder UDP-Port überwacht netstat -tuplen.
Um zu überprüfen, ob einige Ports von außen zugänglich sind (dies ist wahrscheinlich das, was Sie wollen), können Sie einen Port-Scanner wie Nmap von einem anderen System verwenden. Das Ausführen von Nmap auf demselben Host, den Sie überprüfen möchten, ist für Ihren Zweck völlig nutzlos.
GNU netstat kennt die Parameter -t, -u, -p, -l, -e, und -n. Dank der Optionen Parser kann es ausgedrückt werden als -tuplen. linux.die.net/man/8/netstat
joschi
3
Außerdem unterstützt der telnetBefehl normalerweise nur TCP, sodass Sie kein Glück haben, wenn der zu überprüfende Dienst auf einem anderen Protokoll ausgeführt wird.
Josefi
1
Ja, ich habe Windows benutzt, daher die Verwirrung.
Dexter
2
nc ist eine (bessere) alternative zu telnet. Es unterstützt auch UDP.
Tsvetomir Dimitrov
1
Verwenden Sie es mit sudo: sudo netstat -tuplen. Dadurch erhalten Sie Prozesse, die nicht nur Ihnen, sondern auch anderen gehören, und es werden zusätzliche Details (wie PID / Programmname) gedruckt, wenn diese nicht bereits als Benutzer ohne Rootberechtigung angezeigt werden.
John Red
102
Der schnellste Weg, um zu testen, ob ein TCP-Port offen ist (einschließlich eventuell vorhandener Hardware-Firewalls), besteht darin, von einem entfernten Computer (z. B. Ihrem Desktop) Folgendes einzugeben:
telnet myserver.com 80
Welches wird versuchen, eine Verbindung zu Port 80 auf diesem Server zu öffnen. Wenn Sie eine Auszeit bekommen oder ablehnen, ist der Port nicht offen :)
sagt, dass es "Telnet" nicht als Befehl erkennt ...
James Anderson
6
"yum install telnet", um das Telnet-Client-Paket zu installieren.
cjc
8
Oben geschrieben:if you get a time out or deny, the port is not open
Industrial
2
Was ist, wenn Sie keine Berechtigung zum Installieren von Telnet haben? Gibt es ein anderes Standardwerkzeug?
KC Baltz
3
Ich habe versucht, "telnet myhost 22" und eine Auszeit zu bekommen. Aber ich kann in diese Maschine hinein ssh. ?!
Torsten Bronger
30
OK, zusammenfassend haben Sie einen Server, auf dem Sie sich anmelden können. Sie möchten sehen, ob an einem Port etwas zuhört. Führen Sie als root Folgendes aus:
netstat -nlp
Daraufhin wird eine Liste der Prozesse angezeigt, die TCP- und UDP-Ports überwachen. Sie können es nach dem gewünschten Prozess und / oder den erwarteten Portnummern durchsuchen (oder durchsuchen).
Wenn der erwartete Prozess nicht vorhanden ist, sollten Sie diesen Prozess starten und netstat erneut überprüfen. Wenn der Prozess vorhanden ist, aber eine Schnittstelle und einen Port überwacht, die Sie nicht erwartet haben, liegt ein Konfigurationsproblem vor (z. B. könnte er nur die Loopback-Schnittstelle überwachen, sodass 127.0.0.1:3306 und 127.0.0.1:3306 angezeigt werden keine weiteren Zeilen für Port 3306 (bei der Standardkonfiguration für MySQL).
Wenn der Vorgang abgeschlossen ist und der erwartete Port abgehört wird, können Sie versuchen, von Ihrem Macbook in Ihrem Büro / Zuhause aus ein "Telnet" für diesen Port auszuführen, z.
telnet xxxxxxxxxxxx.co.uk 443
Damit wird geprüft, ob (unter der Annahme von Standardports) ein Webserver für SSL konfiguriert ist. Beachten Sie, dass dieser Test mit Telnet nur funktioniert, wenn der Prozess einen TCP-Port überwacht. Wenn es sich um einen UDP-Port handelt, können Sie auch versuchen, mit einem beliebigen Client eine Verbindung herzustellen. (Ich sehe, dass Sie Port 224 verwendet haben. Dies ist masqdialer, und ich habe keine Ahnung, was das ist).
Wenn der Dienst vorhanden ist, Sie ihn jedoch nicht extern erreichen können, blockiert eine Firewall Sie. Führen Sie in diesem Fall Folgendes aus:
iptables -L -n
Daraufhin werden alle Firewall-Regeln angezeigt, die auf Ihrem System definiert sind. Sie können das posten, aber wenn Sie nicht alles in der INPUT-Kette zulassen, müssen Sie wahrscheinlich explizit den Datenverkehr auf dem fraglichen Port zulassen:
iptables -I INPUT -p tcp --dport 224 -j ACCEPT
oder etwas in diese Richtung. Führen Sie Ihre Firewall-Befehle nicht blind aus, basierend auf dem, was Ihnen ein Fremder im Internet gesagt hat. Überlegen Sie, was Sie tun.
Wenn Ihre Firewall auf der Box den von Ihnen gewünschten Datenverkehr zulässt, führt Ihr Hosting-Unternehmen möglicherweise eine Firewall aus (z. B. werden nur SSH (22 / TCP), HTTP (80 / TCP) und HTTPS (443 / TCP) zugelassen. und alle anderen eingehenden Verkehr zu verweigern). In diesem Fall müssen Sie ein Helpdesk-Ticket mit ihnen öffnen, um dieses Problem zu beheben. Möglicherweise befindet sich jedoch etwas in Ihrem cPanel, das dies zulässt.
netstat -an | grep PORTNUMBER | grep -i listen
Wenn die Ausgabe leer ist, wird der Port nicht verwendet.Antworten:
Mit können Sie überprüfen, ob ein Prozess einen TCP- oder UDP-Port überwacht
netstat -tuplen
.Um zu überprüfen, ob einige Ports von außen zugänglich sind (dies ist wahrscheinlich das, was Sie wollen), können Sie einen Port-Scanner wie Nmap von einem anderen System verwenden. Das Ausführen von Nmap auf demselben Host, den Sie überprüfen möchten, ist für Ihren Zweck völlig nutzlos.
quelle
-t
,-u
,-p
,-l
,-e
, und-n
. Dank der Optionen Parser kann es ausgedrückt werden als-tuplen
. linux.die.net/man/8/netstattelnet
Befehl normalerweise nur TCP, sodass Sie kein Glück haben, wenn der zu überprüfende Dienst auf einem anderen Protokoll ausgeführt wird.sudo netstat -tuplen
. Dadurch erhalten Sie Prozesse, die nicht nur Ihnen, sondern auch anderen gehören, und es werden zusätzliche Details (wie PID / Programmname) gedruckt, wenn diese nicht bereits als Benutzer ohne Rootberechtigung angezeigt werden.Der schnellste Weg, um zu testen, ob ein TCP-Port offen ist (einschließlich eventuell vorhandener Hardware-Firewalls), besteht darin, von einem entfernten Computer (z. B. Ihrem Desktop) Folgendes einzugeben:
Welches wird versuchen, eine Verbindung zu Port 80 auf diesem Server zu öffnen. Wenn Sie eine Auszeit bekommen oder ablehnen, ist der Port nicht offen :)
quelle
if you get a time out or deny, the port is not open
OK, zusammenfassend haben Sie einen Server, auf dem Sie sich anmelden können. Sie möchten sehen, ob an einem Port etwas zuhört. Führen Sie als root Folgendes aus:
Daraufhin wird eine Liste der Prozesse angezeigt, die TCP- und UDP-Ports überwachen. Sie können es nach dem gewünschten Prozess und / oder den erwarteten Portnummern durchsuchen (oder durchsuchen).
Wenn der erwartete Prozess nicht vorhanden ist, sollten Sie diesen Prozess starten und netstat erneut überprüfen. Wenn der Prozess vorhanden ist, aber eine Schnittstelle und einen Port überwacht, die Sie nicht erwartet haben, liegt ein Konfigurationsproblem vor (z. B. könnte er nur die Loopback-Schnittstelle überwachen, sodass 127.0.0.1:3306 und 127.0.0.1:3306 angezeigt werden keine weiteren Zeilen für Port 3306 (bei der Standardkonfiguration für MySQL).
Wenn der Vorgang abgeschlossen ist und der erwartete Port abgehört wird, können Sie versuchen, von Ihrem Macbook in Ihrem Büro / Zuhause aus ein "Telnet" für diesen Port auszuführen, z.
Damit wird geprüft, ob (unter der Annahme von Standardports) ein Webserver für SSL konfiguriert ist. Beachten Sie, dass dieser Test mit Telnet nur funktioniert, wenn der Prozess einen TCP-Port überwacht. Wenn es sich um einen UDP-Port handelt, können Sie auch versuchen, mit einem beliebigen Client eine Verbindung herzustellen. (Ich sehe, dass Sie Port 224 verwendet haben. Dies ist masqdialer, und ich habe keine Ahnung, was das ist).
Wenn der Dienst vorhanden ist, Sie ihn jedoch nicht extern erreichen können, blockiert eine Firewall Sie. Führen Sie in diesem Fall Folgendes aus:
Daraufhin werden alle Firewall-Regeln angezeigt, die auf Ihrem System definiert sind. Sie können das posten, aber wenn Sie nicht alles in der INPUT-Kette zulassen, müssen Sie wahrscheinlich explizit den Datenverkehr auf dem fraglichen Port zulassen:
oder etwas in diese Richtung. Führen Sie Ihre Firewall-Befehle nicht blind aus, basierend auf dem, was Ihnen ein Fremder im Internet gesagt hat. Überlegen Sie, was Sie tun.
Wenn Ihre Firewall auf der Box den von Ihnen gewünschten Datenverkehr zulässt, führt Ihr Hosting-Unternehmen möglicherweise eine Firewall aus (z. B. werden nur SSH (22 / TCP), HTTP (80 / TCP) und HTTPS (443 / TCP) zugelassen. und alle anderen eingehenden Verkehr zu verweigern). In diesem Fall müssen Sie ein Helpdesk-Ticket mit ihnen öffnen, um dieses Problem zu beheben. Möglicherweise befindet sich jedoch etwas in Ihrem cPanel, das dies zulässt.
quelle
Ich benutze die Kombination von
netstat
undlsof
:Um zu sehen, ob der Port benutzt wird und was ihn benutzt.
quelle
Wenn Sie mit dem System verbunden sind und einen Befehl als root ausführen können, können Sie die Ausgabe von iptables überprüfen
Daraufhin werden die Firewall-Regeln und die offenen
ACCEPT
und explizit geschlossenen Ports aufgelistetREJECT
.quelle
firewall-cmd --query-port=port/protocol
, zfirewall-cmd --query-port=80/tcp
.lsof -i :ssh
listet alle Prozesse auf, bei denen der SSH-Port geöffnet ist, sowohl empfangende als auch aktive Verbindungen.quelle
sudo
wenn keine Ausgabe zurückgegeben wird.