Посмотреть кто занимает порты linux

Содержание
  1. Кто слушает порт в Linux
  2. Найти процесс по номеру порта в Linux
  3. Пример использования netstat
  4. Пример использования fuser
  5. Пример использования lsof
  6. 11 примеров использования netstat
  7. 1. Список всех портов (как прослушиваемых, так и нет)
  8. 2. Список сокетов, находящихся в состоянии LISTEN
  9. 3. Просмотр статистики для каждого протокола
  10. 4. Отображение PID и имени процесса в выводе netstat
  11. 5. Разрешение имён в выводе netstat
  12. 6. Вывод информации netstat непрерывно
  13. 7. Неподдерживаемые системой семейства адресов
  14. 8. Маршрутизация ядра
  15. 9. Соответствие портов и процессов
  16. 10. Сетевые интерфейсы
  17. 11. netstat -lnptux
  18. Как проверить прослушивающие порты в Linux (используемые порты)
  19. Что такое порт прослушивания
  20. Проверьте порты прослушивания с помощью netstat
  21. Проверьте порты прослушивания с помощью ss
  22. Проверьте порты прослушивания с помощью lsof
  23. Выводы
  24. Проверка занятости порта сервисом в Linux
  25. Oct 4, 2018 06:09 · 637 words · 3 minute read lsof netstat fuser tips

Кто слушает порт в Linux

Открытый доступ к порту хоть и является угрозой безопасности системы, но по сути ничего плохого не представляет до тех пор, пока его не начинает использовать программа. А чтобы выяснить какая программа слушает какой порт можно использовать утилиты «netstat» (или «ss») и «lsof».

Чтобы узнать информацию о программе, которая прослушивает определённый порт, можно воспользоваться командой «lsof» со следующими ключами: Здесь «номер_порта» — это цифра.

Пример результата выполнения команды с 53 портом: Но рекомендуем чаще запускать команду для получения списка программ, которые используют какие-либо tcp/udp порты. В этом помогает «netstat» или «ss»: Опишем все ключи, которые используются в команде

  • -l показать только прослушиваемые «LISTEN» порты.
  • -n показывать адреса как ip, а не пытаться определять домены.
  • -t показывать TCP порты.
  • -u показывать UDP порты.
  • -p показать название программы, которая слушает порт.

Если запустить эту команду на веб сервере, то команда распечатает в терминале такую информацию (некоторые столбцы скрыты): По результату можно заметить какая программа прослушивает какой порт. Если ip в секции «Local Address» равен «127.0.0.1», то это локальное обращение. Такой порт можно не закрывать фаерволом — он и так не будет доступен извне. Но ip с нулями «0.0.0.0» говорят о том, что программа слушает все адреса. То есть она примет любой запрос, в том числе внешний.

Источник

Найти процесс по номеру порта в Linux

При работе в Unix-системах мне частенько приходится определять, какой процесс занимает порт, например, чтобы остановить его и запустить на нём другой процесс. Поэтому я решил написать эту небольшую статью, чтоб каждый, прочитавший её, мог узнать, каким процессом занят порт в Ubuntu, CentOS или другой ОС из семейства Linux.

Как же вычислить, какие запущенные процессы соотносятся с занятыми портами? Как определить, что за процесс открыл udp-порт 2222, tcp-порт 7777 и т.п.? Получить подобную информацию мы можем нижеперечисленными методами:

netstat утилита командной строки, показывающая сетевые подключения, таблицы маршрутизации и некоторую статистику сетевых интерфейсов; fuser утилита командной строки для идентификации процессов с помощью файлов или сокетов; lsof утилита командной строки, отображающая информацию об используемых процессами файлах и самих процессах в UNIX-системе; /proc/$pid/ в ОС Linux /proc для каждого запущенного процесса содержит директорию (включая процессы ядра) в /proc/$PID с информацией об этом процессе, в том числе и название процесса, открывшего порт.

Использование вышеперечисленных способов может потребовать права супер-пользователя.

Читайте также:  Не закрывается панель задач windows 10

Теперь давайте рассмотрим каждый из этих способов по отдельности.

Пример использования netstat

Введём в командную строку команду:

Получим примерно такой результат:

Из вывода видно, что 4942-й порт был открыт Java-приложением с PID’ом 3413. Проверить это можно через /proc :

Примерный результат выполнения команды:

При необходимости получения информации по конкретному порту (например, 80-му, используемого обычно для HTTP) вместо отображения всей таблицы можно grep -ануть результат:

Результат будет примерно такой:

Пример использования fuser

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

И получим результат:

Аналогичным образом, как мы делали выше, можно посмотреть процесс в его директории /proc/$PID , в которой можно найти много интересной дополнительной информации о процессе, такую как рабочая директория процесса, владелец процесса и т.д., но это выходит за рамки этой статьи.

Пример использования lsof

При использовании lsof введите команду по одному из шаблонов:

Пример реального использования:

После этого мы можем получить более полную информацию о процессах с PID’ами 2123, 2124 и т.д..

На выходе получим примерно следующее:

Получить информацию о процессе также можно следующим проверенным способом:

В этом выводе можно выделить следующие параметры:

  • 2727 — PID;
  • www-date — имя пользователя владельца;
  • www-date — название группы;
  • /usr/sbin/apache2 -k start — название команды с аргументами;
  • 14:27:33 — время работы процесса в формате [[дд-]чч:]мм:сс;
  • Mon Nov 30 21:21:28 2015 — время старта процесса.

Надеюсь, у меня получилось доступно объяснить, как определить процесс по порту в Linux-системах, и теперь у вас ни один порт не останется неопознанным!

Источник

11 примеров использования netstat

Команда netstat, входящая в стандартный набор сетевых инструментов UNIX, отображает различную network–related информацию, такую как сетевые подключения, статистику интерфейсов, таблицы маршрутизации, masquerade, multicast, и т.п.

В этой статье рассмотрим десять практических примеров использования команды netstat в Linux.

1. Список всех портов (как прослушиваемых, так и нет)

Перечислить все порты: netstat -a

Перечислить все TCP порты: netstat -at

Перечислить все UDP порты: netstat -au

2. Список сокетов, находящихся в состоянии LISTEN

Перечислить все прослушиваемые порты: netstat -l

Перечислить прослушиваемые TCP порты: netstat -lt

Перечислить прослушиваемые UDP порты: netstat -lu

Перечислить прослушиваемые UNIX сокеты: netstat -lx

3. Просмотр статистики для каждого протокола

Показать статистику всех портов: netstat -s

Показать статистику только TCP портов: netstat -st

Показать статистику только UDP портов: netstat -su

4. Отображение PID и имени процесса в выводе netstat

Опция netstat -p добавит «PID/Program Name» в вывод netstat, и может быть совмещена с любым другим набором опций. Это очень полезно при отладке, для определения того, какая программа работает на определённом порту.

5. Разрешение имён в выводе netstat

Когда вам не нужно резолвить имя хоста, имя порта, имя пользователя, используйте опцию netstat -n для вывода значений в цифровом формате. Команда покажет IP-адрес вместо хоста, номер порта вместо имени порта, UID вместо имени пользователя.

Это также ускорит вывод, так как netstat не станет выполнять ненужный поиск.

Для вывода цифровых значений только некоторых из этих пунктов, используйте следующие команды:

6. Вывод информации netstat непрерывно

Опция netstat -c будет выводить информацию непрерывно, в стиле top, обновляя экран каждые несколько секунд.

7. Неподдерживаемые системой семейства адресов

Опция netstat —verbose покажет подробный вывод, а в самом конце отобразит неподдерживаемые Address Family.

Читайте также:  Как удалить android studio полностью mac os

8. Маршрутизация ядра

Показать таблицу маршрутизации ядра: netstat -r

Примечание: Используйте netstat -rn для просмотра маршрута в цифровом формате без разрешения имён узлов.

9. Соответствие портов и процессов

Узнать, какой порт занимает определённая программа:

Выяснить, каким процессом используется определённый порт:

10. Сетевые интерфейсы

Показать список сетевых интерфейсов: netstat -i

Показать расширенную информацию об интерфейсах (аналогично ifconfig): netstat -ie

11. netstat -lnptux

Резюмируем вышеописанное и объединим ключи в одну полезную команду, которая покажет:

  • -l все открытые порты (LISTEN)
  • -t по протоколу TCP
  • -u по протоколу UDP
  • -x по протоколу UNIX Socket
  • -n без резолва IP/имён
  • -p но с названиями процессов и PID-ами

Примечание: Не все процессы могут быть идентифицированы последним ключом, чужие процессы показаны не будут. Вы должны иметь права root чтобы увидеть всё.

Источник

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

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

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

Что такое порт прослушивания

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

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

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

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

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

Проверьте порты прослушивания с помощью netstat

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

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

Читайте также:  Сколько весит оригинальный образ windows 10

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

Результат почти такой же, как у netstat :

Проверьте порты прослушивания с помощью lsof

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

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

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

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

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

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

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

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

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

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

Выводы

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

Если у вас есть вопросы или замечания, пожалуйста, оставьте комментарий ниже.

Источник

Проверка занятости порта сервисом в Linux

Oct 4, 2018 06:09 · 637 words · 3 minute read lsof netstat fuser tips

Однажды вам обязательно понадобится проверить используемый порт определенного сервиса (или наоборот, найти сервисы, слушающие конкретный порт) — в Linux существует несколько утилит командной строки, которые могут с этим помочь. Давайте разберемся!

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

Устанавливается данная утилита в разных дистрибутивах по-разному, например, для RedHat и CentOS:

Для вывода детальной информации о всех TCP и UDP ендпоинтах можно воспользоваться следующей командой:

Вывод будет примерно следующим:

  • -p — вывод ID процесса и его имени;
  • -n — вывод адресов;
  • -l — вывод сокетов;
  • -t — вывод TCP соединений;
  • -u — вывод UDP соединений.

Найти сервис, запущенный на определенном порту можно так:

Аналогично можно найти на каком порту запущен определенный сервис:

Также для наших целей подойдет утилита командной строки fuser . По умолчанию она не установлена в большинстве операционных систем, чтобы установить ее в Centos/RedHat делаем так:

Например, чтобы найти идентификаторы процессов (PIDs), запущенных на 80-м порту, выполняем команду:

Результат выполнения будет примерно следующим:

Далее можем найти имя процесса по его идентификатору (PID):

Еще один способ — использование утилиты lsof . Установка ее в RedHat/CentOS выглядит так:

Вывод всех активных TCP и UPD соединений:

Результатом будет примерно следующее:

Проверить использование конкретного порта можно так:

Напоследок можно также воспользоваться утилитой whatportis . Ее установка в RedHat/Centos требует чуть больше действий:

В Debian/Ubuntu все гораздо проще:

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

Если вам неизвестно точное имя сервиса, можно воспользоваться опцией —like , например:

Также доступен вывод информации в json-формате:

Источник

Оцените статью