Кто слушает порт: диагностика TCP с помощью ss

2 мин чтения

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

От сокета к доступному сервису
  1. Адрес и портss показывает, где слушает сервис
  2. ПроцессНаходим владельца сокета
  3. ПодключениеПроверяем доступ с нужной стороны сети

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

Находим слушающий сокет

sudo ss -ltnp 'sport = :8080'
sudo lsof -nP -iTCP:8080 -sTCP:LISTEN

Первая команда показывает слушающие TCP-сокеты и, при достаточных правах, связанный процесс. Вторая полезна как независимая проверка при установленном lsof. Числовой вывод исключает лишнее разрешение имён. Пустой результат означает отсутствие такого сокета в текущем сетевом пространстве, а не доказанную неисправность всей машины.

Читаем адрес привязки

127.0.0.1:8080 доступен через локальный IPv4-интерфейс. Привязка к 0.0.0.0 охватывает IPv4-интерфейсы, но сама по себе не разрешает прохождение сетевого фильтра. Сокет IPv6 нужно оценивать вместе с настройками системы: не предполагается, что он обязательно обслуживает IPv4.

curl --connect-timeout 3 -I http://127.0.0.1:8080/
ss -tn state established

Проверка curl уместна для HTTP-сервиса. Для базы данных нужен её клиент: открытый TCP-порт не подтверждает корректную авторизацию или готовность запросов. Сравните локальную проверку и запрос с разрешённого удалённого узла. Это помогает отделить приложение от маршрута до него.

Контейнеры и службы

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

Источники и дальнейшее чтение