2013-01-08 07:34:55 +0000 2013-01-08 07:34:55 +0000
202
202

Holen Sie sich eine Liste offener Ports unter Linux

Ich brauche einen Linux-Befehl, um alle freien offenen Ports zur Verwendung in einer Anwendung aufzulisten

lsof -i TCP| fgrep LISTEN

Wird nicht als hilfreich angesehen, da die aufgelisteten Ports nicht unbedingt frei zur Verwendung sind. Wie liste ich freie offene Ports auf, die nicht verwendet werden?

Antworten (7)

268
268
268
2013-01-08 11:51:03 +0000
netstat -lntu

, beantwortet mit @askmish, gibt Ihnen eine Liste der Dienste, die auf Ihrem System auf tcp- und udp-Ports laufen, wobei

  • -l = nur Dienste, die auf irgendeinem Port lauschen
  • -n = Portnummer anzeigen, versuchen Sie nicht, den Dienstnamen aufzulösen
  • -t = tcp ports
  • -u = udp ports
  • -p = udp ports
  • &007 = Name des Programms

Sie brauchen den ‘p’-Parameter nicht, da Sie nur daran interessiert sind, welche Ports frei sind und nicht daran, welches Programm darauf läuft.

Dies zeigt allerdings nur an, welche Ports auf Ihrem System belegt sind. Dies sagt Ihnen nicht den Status Ihres Netzwerkes, z.B. wenn Sie hinter NAT stehen und Sie wollen, dass einige Dienste von außen zugänglich sind. Oder ob die Firewall den Port für externe Besucher blockiert. In diesem Fall kommt nmap zur Hilfe. WARNUNG: Verwenden Sie nmap nur in Netzwerken, die unter Ihrer Kontrolle stehen. Es gibt auch Firewall-Regeln, die nmap-Pings blockieren können. Sie müssen mit Optionen herumspielen, um korrekte Ergebnisse zu erhalten.

93
93
93
2016-06-08 20:19:05 +0000

Da net-tools veraltet ist , können Sie den Befehl ss anstelle von netstat verwenden, wenn netstat auf Ihrem Rechner nicht vorhanden ist:

ss -lntu

sollte ähnlich wie

netstat -lntu

gemäß der eingebauten Hilfe funktionieren:

-n, --numeric don't resolve service names
-l, --listening display listening sockets
-t, --tcp display only TCP sockets
-u, --udp display only UDP sockets
21
21
21
2013-01-08 07:45:50 +0000

Dieser Befehl listet die offenen Netzwerkports und die Prozesse auf, denen sie gehören:

netstat -lnptu

Danach können Sie die Ergebnisse nach Ihren genauen Angaben filtern.

Sie könnten auch nmap für granularere Ergebnisse über Ports verwenden.

5
5
5
2014-11-03 04:33:36 +0000

Alle geöffneten Häfen einschließlich Antwortverkehr:

netstat -tuwanp 2>/dev/null | awk '{print $4}' | sort | uniq -c | wc -l
1
1
1
2019-01-16 23:21:34 +0000

Meine Meinung zu der ursprünglichen Frage war, dass er nach den ungenutzten Häfen fragte und nicht nach den Häfen, die derzeit mit Dienstleistungen verbunden sind. Wenn dies der Fall ist, gibt es keine andere Möglichkeit, sie aufzulisten, als die benutzten Ports aufzulisten und davon auszugehen, dass die anderen unbenutzt sind.

Ein weiterer Punkt, den Sie beachten sollten: Als Benutzer können Sie einen Port nicht unter 1024 öffnen (dafür benötigen Sie root-Rechte).

0
0
0
2019-01-16 19:51:05 +0000

Versuchen Sie

sudo netstat -plnt | grep -E '(0.0.0.0:|:::|127.0.0.1:|::1:)' | awk 'NR>2{print $7}' | sort -n | uniq

und schauen Sie sich das an.

0
0
0
2016-04-04 06:29:27 +0000

Der folgende Befehl funktioniert auf jedem Unix, das im gleichen Format wie Ubuntu / Debian ausgibt - wobei die lokale Adresse in Spalte 4 steht und die Ausgabe oben eine zweizeilige Überschrift enthält. Wenn eine dieser Nummern unterschiedlich ist, passen Sie den awk-Befehl unten an.

Wenn Sie nur IPv4 wollen:

netstat -lnt | awk 'NR>2{print $4}' | grep -E '0.0.0.0:' | sed 's/.*://' | sort -n | uniq

Wenn Sie nur IPv6 wollen:

netstat -lnt | awk 'NR>2{print $4}' | grep -E ':::' | sed 's/.*://' | sort -n | uniq

Wenn Sie beides zusammen wollen:

netstat -lnt | awk 'NR>2{print $4}' | grep -E '(0.0.0.0:|:::)' | sed 's/.*://' | sort -n | uniq

Der Befehl gibt eine Liste von Port-Nummern aus, die auf allen Interfaces lauschen. Wenn Sie alle Ports auflisten wollen, die auf der localhost-Schnittstelle lauschen, dann verwenden Sie etwas wie dies:

netstat -lnt | awk 'NR>2{print $4}' | grep -E '(127.0.0.1:|::1:)' | sed 's/.*://' | sort -n | uniq