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

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

lsof -i TCP| fgrep LISTEN

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

149 голосов | спросил ErrorNotFoundException 8 Jam1000000amTue, 08 Jan 2013 11:34:55 +040013 2013, 11:34:55

5 ответов


215
netstat -lntu

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

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

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

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

ответил mehulved 8 Jpm1000000pmTue, 08 Jan 2013 15:51:03 +040013 2013, 15:51:03
53

Так как 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
ответил Eric Finn 8 J0000006Europe/Moscow 2016, 23:19:05
19

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

netstat -lnptu

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

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

ответил askmish 8 Jam1000000amTue, 08 Jan 2013 11:45:50 +040013 2013, 11:45:50
4

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

netstat -tuwanp 2>/dev/null | awk '{print $4}' | sort | uniq -c | wc -l
ответил diyism 3 12014vEurope/Moscow11bEurope/MoscowMon, 03 Nov 2014 07:33:36 +0300 2014, 07:33:36
0

Следующая команда будет работать в любом 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

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

netstat -lnt | awk 'NR>2{print $4}' | grep -E '(127.0.0.1:|::1:)' | sed 's/.*://' | sort -n | uniq
ответил datashaman 4 AMpMon, 04 Apr 2016 09:29:27 +030029Monday 2016, 09:29:27

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132