0

ports

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

09.02.2023

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

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

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

sudo yum install net-tools

Fedora 22+:

dnf install net-tools

Debian/Ubuntu:

sudo apt-get install net-tools

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

netstat -pnltu

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

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      1323/systemd-resolv
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1661/sshd
tcp        0      0 127.0.0.1:17123         0.0.0.0:*               LISTEN      1753/python
tcp6       0      0 :::31341                :::*                    LISTEN      30068/java
tcp6       0      0 :::22222                :::*                    LISTEN      30068/java
tcp6       0      0 :::80                   :::*                    LISTEN      30068/java
tcp6       0      0 :::10769                :::*                    LISTEN      126755/docker-proxy
tcp6       0      0 :::10770                :::*                    LISTEN      129459/docker-proxy
tcp6       0      0 :::10771                :::*                    LISTEN      129540/docker-proxy
tcp6       0      0 :::10772                :::*                    LISTEN      130172/docker-proxy
tcp6       0      0 :::10773                :::*                    LISTEN      130187/docker-proxy
tcp6       0      0 :::10774                :::*                    LISTEN      130545/docker-proxy
tcp6       0      0 :::22                   :::*                    LISTEN      1661/sshd
tcp6       0      0 :::10775                :::*                    LISTEN      7406/docker-proxy

Здесь:

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

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

netstat -pnltu | grep -i "22"

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

netstat -pnltu | grep -i "sshd"

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

yum install psmisc

Fedora 22+

dnf install psmisc

Debian/Ubuntu

apt-get install psmisc

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

fuser 22/tcp

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

22/tcp:               1661 105268 105302

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

ps -p 1661 -o comm=

Результат:

sshd

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

yum install lsof

Fedora 22+

dnf install lsof

Debian/Ubuntu:

apt-get install lsof

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

lsof -i

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

COMMAND      PID            USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
systemd-r   1323 systemd-resolve   12u  IPv4     20197      0t0  UDP 127.0.0.53:domain
systemd-r   1323 systemd-resolve   13u  IPv4     20198      0t0  TCP 127.0.0.53:domain (LISTEN)
sshd        1661            root    3u  IPv4     29741      0t0  TCP *:ssh (LISTEN)
sshd        1661            root    4u  IPv6     29743      0t0  TCP *:ssh (LISTEN)
python      1754        dd-agent    4u  IPv6     39499      0t0  UDP localhost.localdomain:8125
docker-pr   7406            root    4u  IPv6 287933991      0t0  TCP *:10775 (LISTEN)
docker-pr   7459            root    4u  IPv6 287906596      0t0  TCP *:10776 (LISTEN)
docker-pr   7792            root    4u  IPv6 287937795      0t0  TCP *:10777 (LISTEN)
docker-pr   8435            root    4u  IPv6 287955267      0t0  TCP *:10778 (LISTEN)
docker-pr   8447            root    4u  IPv6 287915222      0t0  TCP *:10779 (LISTEN)
docker-pr   9060            root    4u  IPv6 287891442      0t0  TCP *:10780 (LISTEN)
docker-pr   9429            root    4u  IPv6 287957044      0t0  TCP *:10781 (LISTEN)
docker-pr   9463            root    4u  IPv6 287921075      0t0  TCP *:10782 (LISTEN)
ntpd       10594             ntp   16u  IPv6  35365570      0t0  UDP *:ntp

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

lsof -i :22

Результат:

COMMAND    PID   USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
sshd      1661   root    3u  IPv4     29741      0t0  TCP *:ssh (LISTEN)
sshd      1661   root    4u  IPv6     29743      0t0  TCP *:ssh (LISTEN)

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

yum install epel-release
yum install python34-setuptools
easy_install-3.4 pip
pip install whatportis

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

apt install python-pip
pip install whatportis

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

whatportis [номер_порта | имя_сервиса]

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

whatportis ssh --like

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

whatportis 22 --json

Свежие комментарии

Подписка

Лучшие статьи

Рубрики

Популярное

mail
Previous Story

Миграция на Zimbra при помощи imapsync

asterisk
Next Story

Миграция с SIP на PJSIP в Asterisk

Latest from Blog

VictoriaMetrics

В рамках данной инструкции мы рассмотрим установку и настройку автозапуска VictoriaMetrics, а также ee интеграцию с Prometheus и визуализацию в Grafana. Предполагается, что последние две уже установлены и настроены. Ссылки на инструкции, как это

Создание копий в MYSQL/MARIADB Выполним команды для установки percona xtrabackup на centos/fedora/redhat

P.S. Выбрать  версию RPM пакета* percona xtrabackup для загрузки  можно в  официальном репозитории: http://www.percona.com/downloads/percona-release/redhat/ С информацией о том, что такое RPM пакет можно ознакомиться на сайте WIKIPEDIA:  https://ru.wikipedia.org/wiki/RPM После этого мы увидим: Теперь

Настройка репликации MYSQL

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

Тонкая настройка MYSQL

Эта заметка, в основном, является переводом соответствующих разделов руководства по MySQL.Здесь собраны возможные способы настройки и использования MySQL-сервера для достижения максимальной производительности. Все нижесказанное относится к версии 3.22 для Linux. Для других

HotSpot настройка

Wi-Fi роутеры MikroTik прекрасно подходят для того, чтобы предоставлять гостевой доступ в интернет в таких общественных местах как парки, кафе, гостиницы, торговые центры и т.п. Такой сервис еще называется HotSpot (хотспот). MikroTik
Go toTop
%d такие блоггеры, как: