Как проверить открытые / закрытые порты на моем компьютере?


135

Как проверить открытые / закрытые порты на моем компьютере?

Я использовал netstat -aв командной строке.

  • Означает ли состояние порта «LISTENING», что порт открыт?
  • Любой порт, который не показан на выходе, закрыт?


2
@Justgivemeaname: nmapинструмент для проверки открытых портов на другом хосте. Если вы можете работать netstatна машине, это намного быстрее и надежнее в использовании.
Дэвид Фёрстер

@DavidFoerster: не знал о netstat, так что я узнал это. В ссылке сказано, что его следует использовать с другого хоста. Спасибо!
Justgivemeaname

Ответы:


164

Для этого есть несколько параметров netstat:

  • -lили --listeningпоказывает только сокеты, которые в данный момент прослушивают входящее соединение.
  • -aили --allпоказывает все используемые в данный момент сокеты.
  • -tили --tcpпоказывает сокеты TCP.
  • -uили --udpпоказывает розетки udp.
  • -nили --numericпоказывает хосты и порты в виде чисел, вместо разрешения в dns и поиска в / etc / services.

Вы используете их сочетание, чтобы получить то, что вы хотите. Чтобы узнать, какие номера портов используются в настоящее время, используйте один из них:

netstat -atn           # For tcp
netstat -aun           # For udp
netstat -atun          # For both

На выходе все упомянутые порты используются либо для прослушивания входящего соединения, либо для соединения с одноранговым узлом ** все остальные закрыты. Порты TCP и UDP имеют ширину 16 бит (от 1 до 65535)

** Они также могут подключаться / отключаться от сверстника.


71

Вы можете использовать эту команду:

netstat -tulnp | grep <port no>

Если это показывает какой-то процесс, его использовали. Он закрыт (не используется), если нет выхода.


20

Другая альтернативная командная строка, простая в использовании, чтобы узнать, какой процесс использует порт:

lsof -n -i4TCP:$PORT | grep LISTEN

Я добавил следующую функцию в мой .bash_profile,

function pslisten {
    echo `lsof -n -i4TCP:$1 | grep LISTEN`
}

и теперь запустите «pslisten 5060», чтобы увидеть, кто захватывает мой SIP-порт.

Это работает с Apple Mac OS X тоже.


13

Статус порта "LISTENING" означает, что порт открыт?

Да. Это означает, что какая-то служба прослушивает этот порт на вашем компьютере для входящего соединения, т.е. этот порт открыт для установления новых соединений.

Любой порт, который не отображается в выводе, указывает, что он закрыт?

Да. Помните, что netstat -aбудут показаны все активные ( прослушивающие ) и пассивные ( не прослушивающие ) соединения, т.е. порты, которые действуют как оба сервера (некоторые службы прослушивают эти порты для соединений с другой машины / процесса) и установлены (соединения устанавливаются на этих порты независимо от того, хост / служба может быть сервером или клиентом)

Все порты TCP и UDP относятся к категории, называемой сокетами, и их очень много. Для просмотра информации о сокете вы можете проверить man ss.


Благодарю. ты написал что -aзначит сервер и установил. Означает ли "сервер" порты, которые прослушиваются некоторыми службами? Означает ли «установленный» порты, где существуют существующие соединения, независимо от того, является ли это портом клиента или сервера? Тогда какие виды портов -aне показывает?
Тим

Я не думаю, что -aопция означает «все активные» сокеты; это просто означает «все». netstat показывает все активные сокеты по умолчанию, но пропускает пассивные сокеты (открытый, прослушивание). При использовании этой -aопции отображаются как активные, так и пассивные разъемы.
Эгон Олье,

@EgonOlieux Спасибо. Я исправлен; отредактировал ответ.
Heemayl

@heemayl Вторая часть вашего ответа все еще не верна. Сокет TCP в состоянии «прослушивания» никогда не может быть соединением; это ни с чем не связано, это только слушание. Из-за этого прослушиваемые сокеты TCP также называются пассивными сокетами. Если клиент пытается подключиться к (прослушивающему) сокету на сервере, новый сокет будет создан на сервере для установления соединения с клиентом. Сокет, который является частью установленного соединения, называется активным сокетом.
Эгон Олье,

3

Другой вариант - сс . Это намного проще в использовании ....

Приведенная ниже команда выведет только список текущих прослушивающих сокетов.

root@server:~# ss -l

    Netid  State      Recv-Q Send-Q                                     Local Address:Port                                                      Peer Address:Port   


u_dgr  UNCONN     0      0                                                      * 23353                                                                * 23352                
u_dgr  UNCONN     0      0                                                      * 568                                                                  * 362                  
u_dgr  UNCONN     0      0                                                      * 14836                                                                * 14837                
u_dgr  UNCONN     0      0                                                      * 20446                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 22877                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 504                                                                  * 347                  
u_dgr  UNCONN     0      0                                                      * 16298                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 23343                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 24125                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 24617                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 23352                                                                * 23353                
u_dgr  UNCONN     0      0                                                      * 23334                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 17113                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 16957                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 14793                                                                * 362                  
u_dgr  UNCONN     0      0                                                      * 23345                                                                * 362                  
u_dgr  UNCONN     0      0                                                      * 24070                                                                * 369                  
udp    UNCONN     0      0                                                      *:sunrpc                                                               *:*                    
udp    UNCONN     0      0                                                      *:981                                                                  *:*                    
udp    UNCONN     0      0                                                     :::sunrpc                                                              :::*                    
udp    UNCONN     0      0                                                     :::981                                                                 :::*                    
tcp    LISTEN     0      128                                            127.0.0.1:85                                                                   *:*                    
tcp    LISTEN     0      128                                                    *:ssh                                                                  *:*                    
tcp    LISTEN     0      128                                                    *:3128                                                                 *:*                    
tcp    LISTEN     0      100                                            127.0.0.1:smtp                                                                 *:*                    
tcp    LISTEN     0      128                                                    *:8006                                                                 *:*                    
tcp    LISTEN     0      128                                                    *:sunrpc                                                               *:*                    
tcp    LISTEN     0      128                                                   :::ssh                                                                 :::*                    
tcp    LISTEN     0      100                                                  ::1:smtp                                                                :::*                    
tcp    LISTEN     0      128                                                   :::sunrpc                                                              :::*                    

1
Я не знал об этом, спасибо Зи
Ник Фокс

2

Или это может помочь с помощью часов, а затем поиграйте с тем, что вы хотите увидеть.

sudo watch -d -n0 "netstat -atnp | grep ESTA"

sudo watch -d -n0 "netstat -tulnp | grep ESTA"

1
-a конфликтует с -l, -a захватывает все, УСТАНОВЛЕНО или СЛУШАЕТ, и -l просто захватывает СЛУШАТЬ, поэтому в действительности это '-ltnp' tcp, '-lunp' udp или '-ltunp' tcp + udp
ModerateJavaScriptDev

1

На самом деле есть лучший способ увидеть, какие порты у вас открыты. Проблема с netstatили lsofзаключается в том, что они запрашивают сетевой стек и фактически не подключаются к машине, а вместо этого пытаются увидеть, что работает в системе. Лучше всего использовать nmapтак:

nmap -sT -O localhost

Чтобы увидеть открытые порты.


0
  1. Попробуйте это, чтобы получить список открытых портов в этом диапазоне.

    for p in {1..1023}
    do
       (echo >/dev/tcp/localhost/$p) >/dev/null 2>&1 && echo "$p open"
    done
  2. И эта команда покажет что это!

    cat /etc/services | grep {PORTNumber}
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.