Як знайти кількість відкритих портів у Linux?


17

Як знайти кількість відкритих портів у Linux? Я хочу побачити, чи не закінчується портів. Крім того, як я бачу ліміт моєї ОС?


2
Що ти робиш, що боїшся не вичерпати портів?
MDMarra

Відповіді:


27

На сучасному 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        

9
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 доступних номерів портів.


-a46 не працював. Будь-яка допомога?
erotsppa

який дистрибутив ти працюєш? (працює на сервері ubuntu 10.04 LTS). Звичайно, якщо у вас не встановлено ipv6, просто використовуйте netstat -a.
Грізлі

Випробуваний на моєму вікні CentOS, здається, він висить, якщо ви не використовуєте "-n" для зупинки роздільної здатності імені. (netstat -an | grep Встановлено | wc -l)
Grizly

Тільки що побачив "ss" внизу, дивовижно, не знав про це ... набагато краще! Використовуйте ip_local_port_range, щоб визначити, що налаштований ваш Linux, але це показує вам, що ви зараз використовуєте у набагато доступнішому форматі!
Грізлі

8

Як уже згадували інші, 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>"


1
збирання ніт, але це не зовсім обмеження ipv4. Це межа tcp / udp. і вони працюють незалежно від ipv4. (наприклад, ipv6 нічого не робить для транспортного шару)
Joel K

Ааа, ти маєш рацію. У своїй відповіді я видалив посилання IPV4.
Алекс

1

Особисто я віддаю перевагу nmap. Ви можете знайти стан усіх портів, видавши nmap -P 1-65535 target. У більшості дистрибутивів цей пакет повинен бути доступний через менеджера пакунків.



0

netstat дозволить вам побачити, які порти відкриті, зробіть "netstat -", щоб побачити, що найкраще відповідає вашим потребам.


1
netstat --inetдопоможе найбільше.
Пол Томблін

Я мав на увазі -? зниклий символ.
jer.salamon

або прочитайте сторінку
MDMarra

Також включіть --inet6 (короткий для обох: -4 -6), щоб отримати сокети IPv6 та ip-агностичні сокети (останні є типовими для хостів з двома стеками, див. Rfc 3493, розділ 3.7).
Тобу,

0

'nmap localhost' надасть вам усі ваші відкриті порти та служби, що працюють на них.


1
насправді, він буде сканувати порти лише на 127.0.0.1, але не на будь-який Wan IP
Lucas Kauffman

0

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

0

використовуйте наступну команду на терміналі, щоб перевірити всі порти

netstat -lntu

Для перегляду конкретного статусу портів скористайтеся наступною командою

netstat -an | grep ':6060'

замініть 6060 на свій конкретний номер порту.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.