Wie kann ich überprüfen, ob ein Port auf einem Linux-Server empfangsbereit ist?
netstat -an | grep PORTNUMBER | grep -i listen
Wenn die Ausgabe leer ist, wird der Port nicht verwendet.
Wie kann ich überprüfen, ob ein Port auf einem Linux-Server empfangsbereit ist?
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.
-t
, -u
, -p
, -l
, -e
, und -n
. Dank der Optionen Parser kann es ausgedrückt werden als -tuplen
. linux.die.net/man/8/netstat
telnet
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:
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 :)
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:
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.
Ich benutze die Kombination von netstat
und lsof
:
netstat -an | grep <portnumber>
lsof -i:<portnumber>
Um zu sehen, ob der Port benutzt wird und was ihn benutzt.
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
iptables -L -vn
Daraufhin werden die Firewall-Regeln und die offenen ACCEPT
und explizit geschlossenen Ports aufgelistet REJECT
.
firewall-cmd --query-port=port/protocol
, z firewall-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.
sudo
wenn keine Ausgabe zurückgegeben wird.