Wie finde ich die Anzahl der offenen Ports unter Linux?

17

Wie finde ich die Anzahl der offenen Ports unter Linux? Ich möchte sehen, ob mir die Ports ausgehen. Wie sehe ich die Grenze meines Betriebssystems?

erotsppa
quelle
2
Was machst du, dass du Angst hast, keine Häfen mehr zu haben?
MDMarra

Antworten:

27

Verwenden Sie unter modernem Linux das Dienstprogramm ss (socket stats).

$ ss -s
Total: 10160 (kernel 10262)
TCP:   10349 (estab 8886, closed 408, orphaned 0, synrecv 0, timewait 393/0), ports 3147

Transport Total     IP        IPv6
*         10262     -         -        
RAW       0         0         0        
UDP       5         5         0        
TCP       9941      9941      0        
INET      9946      9946      0        
FRAG      0         0         0        
Curtis Doty
quelle
9
netstat -an | grep ESTABLISHED | wc -l

gibt die Anzahl der offenen Ports an, in meinem Fall 32.

cat /proc/sys/net/ipv4/ip_local_port_range

Gibt etwas zurück wie:

32768 61000

Das heißt, 61000 - 32768 - $ OPENPORTS = AvailablePorts

Auf meiner Box ist das:

61000-32768-32 = 28200 verfügbare Portnummern.

Grizly
quelle
Das -a46 hat nicht funktioniert. Irgendeine Hilfe?
Erotsppa
Was für eine Distribution läufst du? (das funktioniert auf Ubuntu Server 10.04 LTS). Wenn Sie ipv6 nicht installiert haben, verwenden Sie einfach netstat -a.
Grizly,
Auf meiner CentOS-Box getestet, scheint es zu hängen, wenn Sie nicht "-n" verwenden, um die Namensauflösung zu stoppen. (netstat -an | grep ESTABLISHED | wc -l)
Grizly
Habe gerade "ss" unten gesehen, das ist großartig, wusste nichts davon ... viel besser! Verwenden Sie den ip_local_port_range, um zu bestimmen, was Ihr Linux zulässt, aber das zeigt Ihnen, was Sie aktuell in einem viel zugänglicheren Format verwenden!
Grizly
8

Wie bereits erwähnt, ist netstat das Tool, mit dem ermittelt werden kann, welche Ports derzeit verwendet werden. Die Anzahl der verfügbaren Ports ist eine vorzeichenlose 16-Bit-Ganzzahl, die den Bereich 0-65535 angibt. Bei den Ports, an die Anwendungen binden können, handelt es sich um die reservierten privilegierten / Root-Ports (0-1024) sowie um alle Ports, die nicht in Ihrem kurzlebigen Portbereich enthalten sind.

Sie können Ihre kurzlebigen Ports anzeigen, indem Sie ausführen cat /proc/sys/net/ipv4/ip_local_port_range.

Um dies dauerhaft zu ändern, müssten Sie "net.ipv4.ip_local_port_range" in der Datei /etc/sysctl.conf oder interaktiv mit hinzufügen / ändern sysctl -n net.ipv4.ip_local_port_range="<start_port> <end_port>"

Alex
quelle
1
Keine Auswahl, aber es ist nicht gerade ein IPv4-Limit. Es ist eine TCP / UDP-Grenze. und diese laufen unabhängig von ipv4. (zB ipv6 macht nichts für die Transportschicht)
Joel K
Aaah, du hast recht. Ich habe die IPV4-Referenz in meiner Antwort entfernt.
Alex
1

Persönlich bevorzuge ich nmap. Sie können den Status aller Ports ermitteln, indem Sie nmap -P 1-65535 target ausgeben. Die meisten Distributionen sollten dieses Paket über ihren Paketmanager verfügbar haben.

ThaKidd KG5ORD
quelle
1

Versuchen

# lsof -n -i -P 

Der Vollständigkeit halber :)

Yuri
quelle
0

Mit netstat können Sie sehen, welche Ports geöffnet sind. Mit "netstat -" können Sie feststellen, welche Ports Ihren Anforderungen am besten entsprechen.

jer.salamon
quelle
1
netstat --inetwird am meisten helfen.
Paul Tomblin
Ich meinte -? fehlendes Zeichen.
jer.salamon
oder lesen Sie die Manpage
MDMarra
Enthalten Sie auch --inet6 (Kurzform für beide: -4 -6), um IPv6-Sockets und IP-agnostische Sockets zu erhalten (letzteres ist die Standardeinstellung auf Dual-Stack-Hosts, siehe RFC 3493, Abschnitt 3.7).
Tobu
0

Mit 'nmap localhost' erhalten Sie alle offenen Ports und Dienste, die auf ihnen ausgeführt werden.

Vivek Varghese Cherian
quelle
1
Nicht wirklich, es werden nur Ports nach 127.0.0.1 durchsucht, nicht nach wan IP
Lucas Kauffman
0

netstat -tulnp

Die Argumente zum Programm netstat sind nachfolgend aufgeführt:

*

  t - Show TCP
*

  u - Show UDP
*

  l - Show only listening processes (netstat can show both listening and all established connections, i.e. as a client too)
*

  n - Do not resolve network IP address names or port numbers
*

  p - Show the process name that is listening on the port
Rajat
quelle
0

Verwenden Sie den folgenden Befehl am Terminal, um alle Ports zu überprüfen

netstat -lntu

Verwenden Sie den folgenden Befehl, um den Status eines bestimmten Ports anzuzeigen

netstat -an | grep ':6060'

Ersetzen Sie 6060 durch Ihre spezifische Portnummer.

Samuel
quelle