Відповіді:
На сучасному Linux використовуйте утиліту 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
netstat -an | grep ESTABLISHED | wc -l
дасть вам кількість відкритих портів, 32 в моєму випадку.
cat /proc/sys/net/ipv4/ip_local_port_range
Повернеться щось на кшталт:
32768 61000
що означає, 61000 - 32768 - $ OPENPORTS = AvailablePorts
У моїй коробці:
61000-32768-32 = 28200 доступних номерів портів.
Як уже згадували інші, netstat - це інструмент, який можна визначити, які порти зараз використовуються. Щодо обмежень, кількість доступних портів - це 16-бітове ціле число, яке не підписується, що дає діапазон 0-65535. Порти, доступні для прикладних програм, є зарезервованими привілейованими / кореневими портами (0-1024) плюс те, що не охоплено діапазоном ефемерних портів.
Ви можете переглянути свої ефемерні порти, запустивши cat /proc/sys/net/ipv4/ip_local_port_range
.
Щоб постійно змінювати це, вам доведеться додати / змінити "net.ipv4.ip_local_port_range" у файл /etc/sysctl.conf або інтерактивно з sysctl -n net.ipv4.ip_local_port_range="<start_port> <end_port>"
Особисто я віддаю перевагу nmap. Ви можете знайти стан усіх портів, видавши nmap -P 1-65535 target. У більшості дистрибутивів цей пакет повинен бути доступний через менеджера пакунків.
netstat дозволить вам побачити, які порти відкриті, зробіть "netstat -", щоб побачити, що найкраще відповідає вашим потребам.
netstat --inet
допоможе найбільше.
'nmap localhost' надасть вам усі ваші відкриті порти та служби, що працюють на них.
netstat -tulnp
Аргументи програми netstat наведені нижче:
*
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