Введение
Грамотная диагностика сетевого стека — базовый навык любого системного администратора и DevOps-инженера. Классический инструмент netstat уже давно признан устаревшим, а на смену ему пришла современная, высокопроизводительная утилита ss (Socket Statistics). В данном практическом руководстве мы подробно разберем, как с помощью ss мгновенно выявлять открытые порты, отслеживать активные соединения и сопоставлять сокеты с конкретными процессами в операционной системе Ubuntu.
1. Подготовка окружения и оценка глобальной статистики сокетов
Инструмент ss входит в состав стандартного набора сетевых утилит iproute2. Убедимся, что пакет установлен в системе и обновлен до актуальной версии:

В отличие от устаревших инструментов, считывающих данные через интерфейс /proc, утилита ss взаимодействует напрямую с пространством ядра Linux через интерфейс Netlink. Это обеспечивает колоссальный прирост скорости при обработке сотен тысяч открытых дескрипторов. Для быстрого аудита всей сетевой подсистемы применяется ключ -s, формирующий сводный отчет по всем типам соединений.
⚙️ [Ключевые аргументы командной строки]
-s : выводит агрегированную сводку по сокетам (TCP, UDP, RAW и др.).-t : ограничивает выборку только протоколом TCP.-u : выводит исключительно сокеты протокола UDP.-l : отображает порты, ожидающие входящих подключений (режим LISTEN).-a : формирует полный перечень сокетов (как активных, так и прослушиваемых).-n : отключает резолвинг сетевых имен, выводя адреса и порты в числовом формате.-p : идентифицирует владельца сокета (имя приложения и PID процесса).

2. Развертывание тестового сервиса и мониторинг прослушиваемых портов TCP
Для наглядной демонстрации работы сетевых фильтров установим веб-сервер Nginx и активируем его службу в фоновом режиме:

Запустив команду ss -tl, мы получим список всех конечных точек TCP, находящихся в режиме ожидания запросов (LISTEN). По умолчанию утилита преобразует стандартные номера портов в понятные имена служб (например, http, ssh, domain).
В сформированном списке отчетливо виден наш свежеустановленный сервер Nginx, занявший стандартный веб-порт (http).

Если требуется исключить трансляцию номеров в названия протоколов, добавьте флаг -n. Команда ss -tln выведет адреса и порты в строгом числовом виде.
Такой подход незаменим при автоматизации и парсинге скриптами: вместо абстрактных названий http или ssh вы получите точные значения 80 и 22.

3. Идентификация процессов и поиск PID по открытым портам
Чтобы выяснить, какая конкретно программа захватила порт, вызовите утилиту с флагом -p. Команда ss -tlp связывает каждый прослушиваемый сокет с управляющим им приложением.
В столбце Process отображается связка из наименования бинарного файла, его PID и дескриптора сокета. Здесь прекрасно видно взаимодействие демонов Nginx и системных служб systemd с портами ОС.

Наиболее востребованная на практике комбинация флагов — ss -tulpn. Она собирает единый структурированный срез по обоим протоколам (TCP и UDP), фильтрует слушающие сокеты, форматирует порты в числа и подтягивает идентификаторы процессов.
Благодаря этой связке вы за секунду определите, что веб-сервер Nginx висит на 80-м порту, SSH-сервер обслуживает 22-й, а встроенный резолвер systemd-resolved занял порт 53.

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

Флаг -a в связке ss -ta снимает ограничения по статусам и показывает абсолютно все TCP-сокеты — включая те, что перешли в фазу закрытия соединения (TIME-WAIT).
В итоговом выводе сразу фиксируется служебная сессия 127.0.0.1:http, перешедшая в состояние TIME-WAIT сразу после завершения передачи страницы клиенту.

Для мониторинга стабильно работающих клиентских каналов связи удобно применять встроенные фильтры состояний. Команда ss -t state established отбирает исключительно установленные соединения (ESTABLISHED), через которые прямо сейчас передаются данные.
Поскольку наш проверочный HTTP-запрос отработал мгновенно и сеанс разорвался, в текущей таблице активных соединений не зафиксировано.

Мощным преимуществом ss является поддержка сложных критериев отбора прямо в строке вызова. Синтаксис ss -tln 'sport = :80' позволяет изолировать порт источника (sport), оставив на экране лишь сокеты, привязанные к локальному 80-му порту.
Подобная прецизионная фильтрация избавляет от необходимости вручную вырезать строки через grep и позволяет моментально оценить состояние конкретного веб-приложения.

Мы подробно рассмотрели переход от архаичного netstat к современному стандарту ss для комплексной диагностики сетевого стека в Linux.
Внедрение связок вроде ss -tulpn и фильтров по портам существенно ускорит траблшутинг серверных инцидентов и повысит эффективность администрирования вашей инфраструктуры.