4 способа узнать, какие порты слушают в Linux
Состояние порта либо открыто, фильтрованный, закрыто, или нефильтрованный. Порт считается открытым, если приложение на целевой машине прослушивает соединения / пакеты на этом порту.В этой статье мы об
Содержание:
Состояние порта либо открыто, фильтрованный, закрыто, или нефильтрованный. Порт считается открытым, если приложение на целевой машине прослушивает соединения / пакеты на этом порту.
В этой статье мы объясним четыре способа проверки открытых портов, а также покажем вам, как определить, какое приложение прослушивает какой порт в Linux.
1. Использование команды Netstat
Вы также можете использовать команду grep, например, чтобы узнать, какое приложение прослушивает определенный порт.
Кроме того, вы можете указать порт и найти привязанное к нему приложение, как показано.
2. Использование команды ss
3. Использование команды Nmap
Чтобы просканировать все открытые / прослушивающие порты в вашей системе Linux, выполните следующую команду (выполнение которой займет много времени).
4. Использование команды lsof
Чтобы узнать, какое приложение прослушивает определенный порт, запустите lsof в таком виде.
Вот и все! В этой статье мы объяснили четыре способа проверки открытых портов в Linux. Мы также показали, как проверить, какие процессы привязаны к определенным портам. Вы можете поделиться своими мыслями или задать любые вопросы через форму обратной связи ниже.
Linux: Узнать, какой порт слушает процесс
Как пользователи Linux, мы иногда должны знать, на какой номер порта конкретный процесс слушает. Все порты связаны с идентификатором процесса или сервисом в ОС. Таким образом, как мы находим тот порт? Эта статья представляет три различных методики для Вас для нахождения, на каком номере порта процесс слушает.
Мы выполнили команды и процедуры, описанные в этой статье о системе Ubuntu 18.04 LTS.
Метод 1: Используя команду netstat
Netstat или утилита статистики сети используются для просмотра информации, связанной с сетевыми соединениями. Это включает информацию об интерфейсной статистике, таблицах маршрутизации и многое другое. Эта утилита доступна в большинстве систем Linux, таким образом давайте используем ее для просмотра информации, о котором портах определенные процессы используют в системе.
Для использования команды netstat необходимо установить утилиту сетевых инструментов, если это уже не установлено в системе посредством следующей команды:
Тогда выполните следующую команду:
Вышеупомянутая команда дает netstat информацию на основе следующих функций:
Например, в вышеупомянутом выводе команды netstat, программа Apache2 с идентификатором 950 процесса работает на номере порта 80.
Можно также отфильтровать статистику для определенного порта путем слияния функции grep в команду.
Эта команда скажет Вам конкретно, какой процесс работает на номере порта 80.
Метод 2: Используя команду lsof
lsof или утилита List of Open Files помогают в списке всех открытых файлов в Вашей системе Linux. Мы можем использовать эту утилиту для просмотра всех процессов, открытых на определенном порте.
Для использования команды lsof необходимо установить lsof утилиту, если это уже не установлено в системе посредством следующей команды:
Давайте использовать lsof для просмотра сервиса, слушающего на определенном порте.
Эта команда перечислит все процессы с помощью номера порта TCP 80.
Метод 3: Используя команду термофиксатора
Дисплеи команды термофиксатора, которые обрабатывают идентификаторы, используют именованные файлы, сокеты или файловые системы. Мы можем использовать эту команду для просмотра идентификаторов процесса, работающих на определенном порте TCP.
Для использования команды термофиксатора необходимо установить psmisc утилиту, если это уже не установлено в системе посредством следующей команды:
Давайте просмотрим все идентификаторы процесса, работающие на порте TCP 3306 посредством следующей команды:
Можно определить любой номер порта в этой команде для просмотра ее слушающих процессов.
В вышеупомянутом выводе Вы видите, что идентификатор 975 процесса слушает на TCP 3306.
Для просмотра, которые программируют этот идентификатор процесса, соответствует, выполните следующую команду:
Вывод показывает, что идентификатор 975 процесса соответствует названиям программы MySDLd. Таким образом идентификатор 975 процесса программы MySQLd слушает на номере порта 3306.
Через эти три метода Вы учились в этой статье, можно легко просмотреть, на какой порт TCP определенный процесс на Linux слушает.
Как проверить прослушивающие порты в Linux (используемые порты)
При устранении неполадок сетевого подключения или проблем, связанных с конкретным приложением, в первую очередь следует проверить, какие порты фактически используются в вашей системе и какое приложение прослушивает конкретный порт.
Что такое порт прослушивания
Сетевой порт идентифицируется по его номеру, связанному IP-адресу и типу протокола связи, например TCP или UDP.
Порт прослушивания — это сетевой порт, на котором приложение или процесс прослушивает, выступая в качестве конечной точки связи.
Каждый порт прослушивания может быть открыт или закрыт (отфильтрован) с помощью брандмауэра. В общих чертах, открытый порт — это сетевой порт, который принимает входящие пакеты из удаленных мест.
У вас не может быть двух служб, слушающих один и тот же порт на одном IP-адресе.
Проверьте порты прослушивания с помощью netstat
netstat — это инструмент командной строки, который может предоставить информацию о сетевых подключениях.
Чтобы вывести список всех прослушиваемых портов TCP или UDP, включая службы, использующие порты, и статус сокета, используйте следующую команду:
Параметры, используемые в этой команде, имеют следующее значение:
Результат будет выглядеть примерно так:
Важными столбцами в нашем случае являются:
Выходные данные показывают, что на этой машине порт 22 используется сервером SSH:
Если вывод пуст, это означает, что порт ничего не прослушивает.
Вы также можете фильтровать список по критериям, например, PID, протоколу, состоянию и так далее.
Проверьте порты прослушивания с помощью ss
Результат почти такой же, как у netstat :
Проверьте порты прослушивания с помощью lsof
lsof — это мощная утилита командной строки, которая предоставляет информацию о файлах, открытых процессами.
В Linux все является файлом. Вы можете думать о сокете как о файле, который записывает в сеть.
Чтобы получить список всех прослушивающих TCP-портов с типом lsof :
Используются следующие параметры:
Большинство имен выходных столбцов говорят сами за себя:
Чтобы узнать, какой процесс прослушивает определенный порт, например порт 3306 вы должны использовать:
Выходные данные показывают, что сервер MySQL использует порт 3306 :
Для получения дополнительной информации посетите страницу руководства lsof и прочтите обо всех других мощных возможностях этого инструмента.
Выводы
Мы показали вам несколько команд, которые вы можете использовать, чтобы проверить, какие порты используются в вашей системе, и как узнать, какой процесс прослушивает определенный порт.
Если у вас есть вопросы или замечания, пожалуйста, оставьте комментарий ниже.
Как узнать, какой номер порта используется процессом в Linux?
Как администратор Linux, вы должны знать, является ли соответствующая служба обязательной / прослушивающей с правильным портом или нет.
Это поможет вам легко устранить проблему, когда вы столкнулись с проблемами, связанными с портами.
Порт – это логическое соединение, которое идентифицирует конкретный процесс в Linux.
Доступны два вида порта: физическое и программное обеспечение.
Поскольку операционная система Linux является программным обеспечением, мы собираемся обсудить порт программного обеспечения.
Программный порт всегда связан с IP-адресом хоста и соответствующим типом протокола для связи. Порт используется для распознования приложения.
Большинство служб, связанных с сетью, должны открыть сокет для прослушивания входящих сетевых запросов.
Socket уникален для каждого сервиса.
Сокет – это комбинация IP-адреса, программного порта и протокола.
Область номеров портов доступна для протокола TCP и UDP.
Протокол управления передачей (TCP) и протокол пользовательских дейтаграмм (UDP) используют номера портов для связи.
Это значение от 0 до 65535.
Ниже приведены категории присвоений портов.
Вы можете проверить детали зарезервированных портов в файле /etc/services в Linux.
Это может быть достигнуто с использованием шести методов.
Метод-1: Использование команды ss
ss используется для вывода статистики сокетов.
Он позволяет отображать информацию, аналогичную netstat.
Он может отображать больше информации о TCP и его состоянии, чем другие инструменты.
Он может отображать статистику для всех типов сокетов, таких как PACKET, TCP, UDP, DCCP, RAW, домен Unix и т. д.
В качестве альтернативы вы также можете проверить это с помощью номера порта.
Способ-2: Использование команды netstat
netstat – вывод сетевых подключений, таблиц маршрутизации, статистики интерфейсов, соединений маскарада и многоадресной рассылки.
По умолчанию netstat отображает список открытых сокетов.
Если вы не укажете каких-либо семейств адресов, будут выведены активные сокеты всех сконфигурированных семейств адресов.
Эта программа устарела. Замена для netstat – ss.
В качестве альтернативы вы также можете проверить это с помощью номера порта.
Метод-3: использование команды lsof
lsof – список открытых файлов.
Команда lsof Linux выводит информацию о файлах, открытых для процессов, запущенных в системе.
В качестве альтернативы вы также можете проверить это с помощью номера порта.
Метод-4: Использование команды fuser
Утилита fuser должна записывать на стандартный вывод идентификаторы процессов, запущенных в локальной системе, которые открывают один или несколько именованных файлов.
Метод-5: Использование команды nmap
Nmap («Network Mapper») – это инструмент с открытым исходным кодом для проверки сети и проверки безопасности.
Он был разработан для быстрого сканирования больших сетей, хотя он отлично работает с одиночными хостами.
Nmap использует необработанные IP-пакеты в новых способах определения того, какие хосты доступны в сети, какие службы (имя и версия приложения) эти хосты предлагают, какие операционные системы (и версии ОС) они запускают, какие типы фильтров пакетов / брандмауэры используются, и десятки других характеристик
Метод-6: Использование команды systemctl
systemctl – Управление системой systemd и менеджером сервисов.
Это замена старого системного управления SysV, и большинство современных операционных систем Linux были адаптированы под systemd.
Вышеприведенный пример будет показывать фактический порт прослушивания службы SSH при запуске службы SSHD в последнее время.
В большинстве случаев вышеприведенный вывод не показывает фактический номер порта процесса. в этом случае я предлагаю вам проверить детали, используя приведенную ниже команду из файла журнала
Найти процесс по номеру порта в Linux
При работе в Unix-системах мне частенько приходится определять, какой процесс занимает порт, например, чтобы остановить его и запустить на нём другой процесс. Поэтому я решил написать эту небольшую статью, чтоб каждый, прочитавший её, мог узнать, каким процессом занят порт в Ubuntu, CentOS или другой ОС из семейства Linux.
Как же вычислить, какие запущенные процессы соотносятся с занятыми портами? Как определить, что за процесс открыл udp-порт 2222, tcp-порт 7777 и т.п.? Получить подобную информацию мы можем нижеперечисленными методами:
netstat утилита командной строки, показывающая сетевые подключения, таблицы маршрутизации и некоторую статистику сетевых интерфейсов; fuser утилита командной строки для идентификации процессов с помощью файлов или сокетов; lsof утилита командной строки, отображающая информацию об используемых процессами файлах и самих процессах в UNIX-системе; /proc/$pid/ в ОС Linux /proc для каждого запущенного процесса содержит директорию (включая процессы ядра) в /proc/$PID с информацией об этом процессе, в том числе и название процесса, открывшего порт.
Использование вышеперечисленных способов может потребовать права супер-пользователя.
Теперь давайте рассмотрим каждый из этих способов по отдельности.
Пример использования netstat
Введём в командную строку команду:
Получим примерно такой результат:
Из вывода видно, что 4942-й порт был открыт Java-приложением с PID’ом 3413. Проверить это можно через /proc :
Примерный результат выполнения команды:
Результат будет примерно такой:
Пример использования fuser
Для того, чтобы вычислить процесс, занимающий порт 5050, введём команду:
И получим результат:
Пример использования lsof
При использовании lsof введите команду по одному из шаблонов:
Пример реального использования:
После этого мы можем получить более полную информацию о процессах с PID’ами 2123, 2124 и т.д..
На выходе получим примерно следующее:
Получить информацию о процессе также можно следующим проверенным способом:
В этом выводе можно выделить следующие параметры:
Надеюсь, у меня получилось доступно объяснить, как определить процесс по порту в Linux-системах, и теперь у вас ни один порт не останется неопознанным!











