Вопрос: Получить список открытых портов в Linux


Мне нужна команда Linux для перечисления всех открытых открытых портов для использования в приложении

lsof -i TCP| fgrep LISTEN

Не видно, что он помогает, поскольку его списки не обязательно бесплатны для использования. Как я могу перечислить свободные открытые порты, которые не используются?


151
2018-01-08 07:34


Источник


//, Что делать, если netstat недоступен на хосте? - Nathan Basanese


Ответы:


netstat -lntu

как ответил @askmish, вы получите список служб, запущенных в вашей системе, на портах tcp и udp, где

  • -l = только услуги, которые прослушивают какой-либо порт
  • -n = показать номер порта, не пытайтесь разрешить имя службы
  • -t = tcp порты
  • -u = udp порты
  • -p = название программы

Вам не нужен параметр «p», так как вас интересует только то, какие порты свободны, а не какая программа работает на нем.

Это только показывает, какие порты в вашей системе израсходованы. Это не указывает вам статус вашей сети, например. если вы находитесь за NAT, и вы хотите, чтобы некоторые службы были доступны извне. Или, если брандмауэр блокирует порт для внешних посетителей. В этом случае nmap приходит на помощь. ПРЕДУПРЕЖДЕНИЕ. Используйте nmap только в тех сетях, которые находятся под вашим контролем. Кроме того, существуют правила брандмауэра, которые могут блокировать nmap pings, вам нужно будет поиграть с параметрами, чтобы получить правильные результаты.


216
2018-01-08 11:51



Обратите внимание, что netstat устарела на многих системах и ss следует использовать вместо этого. - Johu


поскольку net-tools не рекомендуется, вы можете использовать ss команда вместо netstat если netstat нет на вашей машине:

ss -lntu

должен работать аналогично

netstat -lntu

согласно встроенной справке:

-n, --numeric       don't resolve service names
-l, --listening     display listening sockets
-t, --tcp           display only TCP sockets
-u, --udp           display only UDP sockets

53
2018-06-08 20:19





Эта команда будет отображать открытые сетевые порты и процессы, которые им принадлежат:

netstat -lnptu

вы можете в дальнейшем фильтровать результаты до ваших точных спецификаций.

Вы также можете использовать nmap для получения более подробных результатов о портах.


19
2018-01-08 07:45



Флаг -p требует прав root для некоторых процессов, поэтому он будет sudo netstat -lnptu - klaus se


Все открытые порты, включая трафик ответа:

netstat -tuwanp 2>/dev/null | awk '{print $4}' | sort | uniq -c | wc -l

4
2017-11-03 04:33



Список просто уникальные номера портов и только IPv4: netstat -tuwanp4 | awk '{print $4}' | grep ':' | cut -d ":" -f 2 | sort | uniq - Aaron C. de Bruyn
+1 для отображения того, как фильтровать и извлекать числа из результата. Отредактировано для удаления вывода stderr из netstat (который добавляет заголовок к результату в Ubuntu). - datashaman
Хм, поразмыслив. -1 за то, что не ответил на вопрос. - datashaman


Следующая команда будет работать на любом Unix, который выводится в том же формате, что и Ubuntu / Debian, где локальный адрес находится в столбце 4, а выход включает в себя 2-строчный заголовок вверху. Если любое из этих чисел отличается, настройте команду awk ниже.

Если вы хотите только IPv4:

netstat -lnt | awk 'NR>2{print $4}' | grep -E '0.0.0.0:' | sed 's/.*://' | sort -n | uniq

Если вы хотите только IPv6:

netstat -lnt | awk 'NR>2{print $4}' | grep -E ':::' | sed 's/.*://' | sort -n | uniq

Если вы хотите обоим вместе:

netstat -lnt | awk 'NR>2{print $4}' | grep -E '(0.0.0.0:|:::)' | sed 's/.*://' | sort -n | uniq

Команда выводит список номеров портов, которые прослушиваются на всех интерфейсах. Если вы хотите перечислить все порты, которые прослушивают интерфейс локального хоста, используйте следующее:

netstat -lnt | awk 'NR>2{print $4}' | grep -E '(127.0.0.1:|::1:)' | sed 's/.*://' | sort -n | uniq

0
2018-04-04 06:29