Jak uzyskać listę portów, które są wolne na serwerze Unix

15

Muszę wiedzieć, które porty w moim komputerze Solaris mogą być używane do dowolnego rodzaju komunikacji sieciowej.

Próbowałem netstat -apolecenia. Ale zwrócone informacje nie dały przekonującego wyniku, którego wszystkich portów mogę używać do nowej aplikacji, którą piszę. Doceń wszelką pomoc udzieloną w tym zakresie.

PSam
źródło
W jakim zakresie liczbowym? Zawsze używane są efemeryczne porty, które ciągle się zmieniają.
mdpc,
A co z wynikiem, netstat -anktóry Cię nie przekonał? netstatpowinien wymienić wszystko, co jest używane. Cała reszta (zwykle wiele tysięcy portów!) Jest dostępna.
Celada,
1
Może również pomóc dowiedzieć się, dlaczego potrzebujesz tych informacji. Podczas wiązania gniazda zawsze możesz pozwolić, aby jądro przypisało Ci port, więc jeśli nie obchodzi cię, który port dostaniesz tak długo, jak go dostaniesz, nie musisz szukać go ręcznie.
Celada,

Odpowiedzi:

15

1: Nie należy używać anonimowych portów (zwanych także efemerycznymi) do implementacji usługi UDP lub TCP.

Domyślnie porty te mieszczą się w zakresie od 32768 do 65535.

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

2: Jeśli Twoja usługa nie działa jako root lub nie ma wymaganego uprawnienia RBAC, nie powinieneś używać uprzywilejowanego portu. Domyślnie wszystkie porty od 1 do 1024 są uprzywilejowane:

# ndd /dev/tcp tcp_smallest_nonpriv_port
1024

3: Jeśli nie wiesz, co robisz, nie powinieneś używać dobrze znanego portu, który ma uruchamiać inną usługę niż ta, którą planujesz. Dobrze znane porty są wymienione w /etc/services. na przykład:

# 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: Nie należy używać portu, który jest już używany przez istniejącą usługę. Możesz je uzyskać, uruchamiając:

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

5: Wreszcie, nie powinieneś używać portu używanego przez obecnie wyłączoną usługę, ale może ona zostać włączona w przyszłości. To jest najtrudniejsza część do spełnienia ...

jlliagre
źródło
10

Możesz użyć 1-65 535 portów w systemie, w których pierwsze 1024 są uprzywilejowane jako root.

Zamiast więc znaleźć wolny port, możesz uzyskać listę używanych portów za pomocą poniższego polecenia

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

Następnie możesz użyć dowolnego portu z zakresu 1-65535 oprócz tych portów.

Vaibhav Panmand
źródło
2
Niektóre z netstatużywanych opcji nie są obsługiwane przez netstatimplementację Solaris .
jlliagre