проверить прослушиваемые порты (использующиеся порты)

Thank you for reading this post, don't forget to subscribe!

При устра­не­нии непо­ла­док сете­во­го под­клю­че­ния или про­блем, свя­зан­ных с кон­крет­ным при­ло­же­ни­ем, в первую оче­редь сле­ду­ет про­ве­рить, какие пор­ты фак­ти­че­ски исполь­зу­ют­ся в вашей систе­ме, а какое при­ло­же­ние про­слу­ши­ва­ет опре­де­лен­ный порт.

В этой ста­тье объ­яс­ня­ет­ся, как узнать, какие услу­ги про­слу­ши­ва­ет пор­ты с помо­щью команд netstat, ss и lsof. Инструк­ции при­ме­ни­мы для всех опе­ра­ци­он­ных систем на осно­ве Linux и Unix, таких как macOS.

 

Сете­вой порт иден­ти­фи­ци­ру­ет­ся его номе­ром, соот­вет­ству­ю­щим IP-адре­сом и типом про­то­ко­ла свя­зи, таким как TCP или UDP.

Порт про­слу­ши­ва­ния – это сете­вой порт, кото­рый про­слу­ши­ва­ет при­ло­же­ние или про­цесс, высту­пая в каче­стве конеч­ной точ­ки связи.

Каж­дый порт про­слу­ши­ва­ния может быть открыт или закрыт (отфиль­тро­ван) с помо­щью бранд­мау­э­ра. В общих чер­тах, откры­тый порт – это сете­вой порт, кото­рый при­ни­ма­ет вхо­дя­щие паке­ты из уда­лен­ных мест.

Вы не може­те иметь две служ­бы, про­слу­ши­ва­ю­щие один и тот же порт на одном и том же IP-адресе.

Напри­мер, если вы исполь­зу­е­те веб-сер­вер Apache, кото­рый про­слу­ши­ва­ет пор­ты 80 и 443 и вы пыта­е­тесь уста­но­вить Nginx, позд­нее не удаст­ся запу­стить, пото­му что пор­ты HTTP и HTTPS уже используются.

 

netstat это инстру­мент команд­ной стро­ки, кото­рый может предо­ста­вить инфор­ма­цию о сете­вых подключениях

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

 

Пара­мет­ры, исполь­зу­е­мые в этой коман­де, име­ют сле­ду­ю­щее значение:

  • -t – Пока­зать пор­ты TCP.
  • -u – Пока­зать пор­ты UDP.
  • -n – Пока­зать чис­ло­вые адре­са вме­сто раз­ре­ше­ния хостов.
  • -l – Пока­зы­вать толь­ко пор­ты прослушивания.
  • -p – Пока­зать PID и имя про­цес­са слу­ша­те­ля. Эта инфор­ма­ция отоб­ра­жа­ет­ся, толь­ко если вы запус­ка­е­те коман­ду от име­ни поль­зо­ва­те­ля root или sudo.

Вывод будет выгля­деть при­мер­но так:

 

Важ­ны­ми столб­ца­ми в нашем слу­чае являются:

  • Proto – Про­то­кол, исполь­зу­е­мый сокетом.
  • Local Address – IP-адрес и номер пор­та, на кото­ром слу­ша­ет процесс.
  • PID/Program name – PID и назва­ние процесса.

Если вы хоти­те отфиль­тро­вать резуль­та­ты, исполь­зуй­те коман­ду grep . Напри­мер, что­бы узнать, какой про­цесс про­слу­ши­ва­ет TCP-порт 22, вы долж­ны набрать:

 

Выход­ные дан­ные пока­зы­ва­ют, что на этой машине порт 22 исполь­зу­ет­ся сер­ве­ром SSH:

 

Если вывод пуст, это озна­ча­ет, что на пор­те ниче­го не прослушивается.

Вы так­же може­те отфиль­тро­вать спи­сок на осно­ве кри­те­ри­ев, напри­мер, PID, про­то­ко­ла, состо­я­ния и т. д.

netstat уста­рел и заме­нен на ss и ip, но все же это одна из наи­бо­лее часто исполь­зу­е­мых команд для про­вер­ки сете­вых подключений.

 

ssно­вый netstat. В нем отсут­ству­ют неко­то­рые netstat­функ­ции, но он предо­став­ля­ет боль­ше состо­я­ний TCP и рабо­та­ет немно­го быст­рее. Пара­мет­ры коман­ды в основ­ном оди­на­ко­вы, поэто­му пере­ход с netstat на ss не сложен.

Что­бы полу­чить спи­сок всех про­слу­ши­ва­ю­щих пор­тов с ss, про­сто наберите:

 

Вывод почти такой же, как тот, о кото­ром сооб­щи­ли netstat:

 

lsof это мощ­ная ути­ли­та команд­ной стро­ки, кото­рая предо­став­ля­ет инфор­ма­цию о фай­лах, откры­тых процессами.

В Linux все явля­ет­ся фай­лом. Вы може­те думать о соке­те как о фай­ле, кото­рый пишет в сеть.

Что­бы полу­чить спи­сок всех про­слу­ши­ва­ю­щих TCP-пор­тов, вызо­ви­те lsof:

 

Исполь­зу­ют­ся сле­ду­ю­щие параметры:

  • -n – Не кон­вер­ти­руй­те номе­ра пор­тов в име­на портов.
  • -p – Не раз­ре­шай­те име­на хостов, пока­зы­вай­те чис­ло­вые адреса.
  • -iTCP -s TCP:LISTEN – Пока­зы­вать толь­ко сете­вые фай­лы с состо­я­ни­ем TCP LISTEN.

     

Боль­шин­ство имен выход­ных столб­цов гово­рят сами за себя:

  • COMMAND, PID, USER – имя, pid и поль­зо­ва­тель , запу­стив про­грам­му, свя­зан­ную с портом.
  • NAME – номер порта.

 

Что­бы узнать, какой про­цесс про­слу­ши­ва­ет опре­де­лен­ный порт, напри­мер, порт 3306, кото­рый вы используете:

 

Выход­ные дан­ные пока­зы­ва­ют, что порт 3306 исполь­зу­ет­ся сер­ве­ром MySQL:

Для полу­че­ния допол­ни­тель­ной инфор­ма­ции посе­ти­те стра­ни­цу руко­вод­ства lsof и про­чи­тай­те обо всех дру­гих мощ­ных опци­ях это­го инструмента.