Из-за временных ограничений на территории РФ наблюдаются проблемы с оплатой. Если платёж не проходит, оставьте запрос в службу поддержки.Служба поддержки работает 24/7 — мы всегда на связи по вопросам хостинга и серверов.Открыт прием заявок на аренду выделенных серверов и размещение оборудования в дата-центре.Напоминаем: рекомендуем включить резервное копирование для дополнительной защиты данных.Доступна новая линейка VPS/VDS с NVMe-дисками и увеличенной производительностью.Технические работы на части серверов завершены. Все сервисы работают в штатном режиме.
Статья3 мин чтенияПросмотры1

Как узнать, какой процесс слушает порт в Linux

Проверяем TCP и UDP через ss, разбираем адрес привязки и отделяем локальный слушающий сокет от доступности сервиса из интернета.

Сетевые порты оборудования и подключённый кабель
В этой статье

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

Получите список слушателей

Команды предназначены для Linux с iproute2. Для TCP выполните:

ss -ltnp

Для UDP используется отдельная выборка:

ss -lunp

Параметр -l ограничивает список слушающими сокетами, -n сохраняет числовые адреса и порты, -p добавляет сведения о процессах. У обычного пользователя информация о чужих процессах может отсутствовать. Это не означает, что сокет никому не принадлежит.

Прочитайте адрес привязки

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

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

Проверьте конкретный порт

Если речь идёт о HTTPS, можно сократить TCP-вывод фильтром:

ss -ltnp 'sport = :443'

Число 443 приведено как пример. Для собственного сервиса используйте его фактический порт. Фильтр показывает локальный сокет; он не проверяет сертификат, ответ HTTP или готовность приложения обработать запрос.

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

Учтите контейнеры и пространства сети

Вывод относится к сетевому пространству, в котором выполняется команда. Приложение внутри контейнера и публикация порта на хосте — разные уровни. Отсутствие процесса в ожидаемом месте не доказывает отсутствие сервиса во всей системе.

Не запускайте новый слушатель для «проверки», если порт уже нужен рабочему приложению. Сначала составьте цепочку: внешний адрес, правила доступа, порт хоста, прокси или контейнер, порт приложения. На каждом шаге должен быть понятен владелец настройки.

Как выглядит полезный результат

Сохраните протокол, локальный адрес, порт, процесс и время наблюдения. Затем сопоставьте их с ожидаемой схемой подключения. После исправления проверьте и локальный сокет, и обычный запрос с нужной стороны сети. Успех одного уровня не гарантирует успех остальных: открытый TCP-порт ещё не означает исправный сайт, а недоступность из интернета не всегда означает остановленный процесс.

У UDP нет такого же установления соединения, как у TCP. Наличие локального UDP-сокета нужно сопоставлять с протоколом приложения и реальным ответом, а не проверять только попыткой TCP-подключения к тому же номеру порта. Пустая TCP-выборка в таком случае ожидаема.

Обсуждение 0

Делись опытом и задавай вопросы. Комментарии без ссылок появляются после проверки редактором.

Пока никто не написал. Начни обсуждение.