So erhalten Sie die Liste der Ports, die auf einem Unix-Server frei sind

15

Ich muss wissen, welche Ports auf meinem Solaris-Computer für jede Art von Netzwerkkommunikation frei sind.

Ich habe den netstat -aBefehl ausprobiert . Die zurückgegebenen Informationen ergaben jedoch kein überzeugendes Ergebnis, aus dem hervorgeht, welche Ports ich für eine neue Anwendung, die ich schreibe, verwenden kann. Schätzen Sie jegliche diesbezügliche Unterstützung.

PSam
quelle
In welchem ​​Zahlenbereich? Es werden immer kurzlebige Ports verwendet, die sich ständig ändern.
mdpc
Was ist mit dem Ergebnis netstat -an, das Sie nicht überzeugt hat? netstatsollte alles auflisten, was verwendet wird. Alles andere (normalerweise viele tausend Ports!) Ist verfügbar.
Celada
1
Außerdem kann es hilfreich sein zu wissen, warum Sie diese Informationen benötigen. Wenn Sie einen Socket binden, können Sie jederzeit festlegen, dass der Kernel einen Port für Sie zuweist. Wenn es Ihnen also egal ist, welchen Port Sie erhalten, solange Sie einen erhalten, müssen Sie keinen manuell finden.
Celada

Antworten:

15

1: Sie sollten keine anonymen Ports (auch als kurzlebige Ports bezeichnet) verwenden, um einen UDP- oder TCP-Dienst zu implementieren.

Standardmäßig liegen diese Ports im Bereich von 32768 bis 65535.

# ndd /dev/tcp tcp_smallest_anon_port
32768
# ndd /dev/tcp tcp_largest_anon_port 
65535

2: Sofern Ihr Dienst nicht als Root ausgeführt wird oder über die erforderlichen RBAC-Berechtigungen verfügt, sollten Sie keinen privilegierten Port verwenden. Standardmäßig sind alle Ports von 1 bis 1024 privilegiert:

# ndd /dev/tcp tcp_smallest_nonpriv_port
1024

3: Sofern Sie nicht wissen, was Sie tun, sollten Sie keinen bekannten Port verwenden, von dem erwartet wird, dass er einen anderen Dienst ausführt als den, den Sie planen. Bekannte Häfen sind in aufgelistet /etc/services. z.B:

# tail /etc/services
dtspc           6112/tcp                        # CDE subprocess control
fs              7100/tcp                        # Font server
solaris-audit   16162/tcp                       # Secure remote audit logging
servicetag      6481/udp
servicetag      6481/tcp
wnn6            22273/tcp                       # Wnn6 jserver
wnn6            22273/udp                       # Wnn6 jserver
rdc             121/tcp                         # SNDR server daemon
snmpd           161/udp        snmp             # Net-SNMP snmp daemon
swat            901/tcp                         # Samba Web Adm.Tool

4: Sie sollten keinen Port verwenden, der bereits von einem vorhandenen Dienst verwendet wird. Sie können diese mit dem Laufen bekommen:

# netstat -an | grep LISTEN | nawk '{$0=$1;gsub(".*\\.","");print}' | sort -un

5: Schließlich sollten Sie keinen Port verwenden, der von einem derzeit deaktivierten Dienst verwendet wird, der jedoch möglicherweise in Zukunft aktiviert wird. Dies ist der schwierigste Teil, um einzuhalten ...

jlliagre
quelle
10

Sie können 1-65.535 Ports auf Ihrem System verwenden, in denen die ersten 1024 root-berechtigt sind.

Anstatt den freien Port zu finden, können Sie mit dem folgenden Befehl eine Liste der verwendeten Ports abrufen

netstat -tunlep | grep LISTEN | awk '{print $4}'

Dann können Sie einen beliebigen Port von 1-65535 mit Ausnahme dieser Ports verwenden.

Vaibhav Panmand
quelle
2
Einige der von netstatIhnen verwendeten Optionen werden von der Solaris- netstatImplementierung nicht unterstützt .
Juli