Гид по технологиям

ss: просмотр и фильтрация сетевых сокетов в Linux

6 min read Linux Обновлено 12 Apr 2026
ss: просмотр сокетов в Linux
ss: просмотр сокетов в Linux

Розетка и вилка — метафора сетевого соединения

Что такое ss

ss (socket statistics) — это утилита в составе пакета iproute2 для просмотра информации о сетевых соединениях и сокетах в Linux. Она заменяет устаревший netstat и обычно работает быстрее и даёт более подробные данные. Одной строкой: ss показывает, какие сокеты открыты, какие процессы их держат и в каком они состоянии.

Краткое определение: ss — инструмент для диагностики сетевых соединений и поиска проблем с сокетами.

Важно: ss чаще предустановлен в современных дистрибутивах; если его нет, установите пакет iproute2 через менеджер пакетов вашего дистрибутива.

Быстрая памятка по часто используемым флагам

  • -a — все сокеты (listening и non-listening)
  • -l — только прослушивающие сокеты (listening)
  • -t — TCP
  • -u — UDP
  • -x — Unix-сокеты
  • -4 / -6 — IPv4 / IPv6
  • -p — показать PID и имя процесса
  • -n — не резолвить имена хостов/портов (numeric)
  • -e — расширенная информация
  • -o — отобразить таймеры
  • -m — показать используемую память на сокет
  • -w / –raw — raw-сокеты

Эта памятка пригодится при оперативной диагностике.

Базовый синтаксис

ss [опции]

Без опций ss по умолчанию покажет список установленных соединений. Пример самой простой команды:

ss

Вывод (пример):

Вывод ss без опций: только установленные соединения

Колонки в выводе:

  • Netid — тип сокета (TCP, UDP, u_seq, u_str и т.д.)
  • State — состояние соединения (ESTAB, UNCONN, LISTEN и др.)
  • Recv-Q / Send-Q — очереди приема/отправки
  • Local address:port / Peer address:port — локальный и удалённый адрес с портом

Полный список сокетов

Показать все сокеты, включая прослушивающие и непрослушивающие:

ss -a

Показать все сокеты

Только прослушивающие сокеты

ss -l

Список прослушивающих сокетов

Примечание: каждый прослушивающий сокет остаётся в состоянии UNCONN, пока не появится входящее соединение; при подключении создаётся дочерний сокет для обслуживания сессии.

Фильтрация по типу сокета: TCP, UDP, Unix

TCP:

ss -t

Информация по TCP-сокетам

UDP:

ss -u

Список UDP-сокетов

Unix-сокеты:

ss -x

Unix-сокеты

Чтобы показать все типы одновременно вместе с состояниями, комбинируйте флаги, например:

ss -ta
ss -ua
ss -xa

Фильтрация TCP по состоянию

TCP-соединения имеют состояния (например, established, listening, time-wait). Формат фильтрации:

ss -t state established

Примеры состояний: established, syn-recv, time-wait, closed, listening и др. Используйте их для быстрого поиска проблемных состояний.

Фильтрация TCP по состоянию

IPv4 и IPv6

Отдельно вывести IPv4 или IPv6:

ss -4
ss -6

IPv4 и IPv6 сокеты

Также можно комбинировать с фильтрами состояния:

ss -4 state established
ss -6 state established

Фильтрация по порту

ss поддерживает выражения для портов: dport — destination port, sport — source port. Пример: отобрать соединения по портам назначения/исхода:

ss -ta '( dport = :https or sport = :39700)'

Фильтрация по порту

Соединение фильтра по состоянию и по порту:

ss -ta state established '( dport = :https or sport = :https )'

Подсказка: используйте -n, чтобы увидеть числовые порты, а не имена служб: ss -tan

Сырые (raw) сокеты

Показать raw-сокеты:

ss -w
ss --raw

Raw сокеты

Фильтрация по адресу назначения

Показать соединения, направленные на конкретный IP:

ss dst 192.0.2.10

Соединения к конкретному адресу

Показать PID и имя процесса

Чтобы быстро найти, какой процесс держит сокет:

ss -t -p

PID и имя процесса

После этого можно получить детальную информацию о процессе через ps или systemctl (если это системный сервис).

Пример: показать процесс и его командную строку

ps -p  -o pid,cmd

Сводная статистика сети

Для быстрой оценки общего состояния:

ss -s

Сводная статистика сети

Вывод показывает общее число соединений по протоколам и состояниям.

Сохранение вывода в файл

ss > output.txt

Сохранение вывода

Это удобно для постаналитики или передачи вывода в тикет инцидента.

Использование ss вместе с grep / awk / sed

Если вы не помните точный синтаксис выражений ss, проще отфильтровать вывод утилитой grep:

ss -t | grep ESTAB

ss piped to grep

Полезные комбинации:

ss -tanp | grep ':443 '                # все TCP-соединения к порту 443
ss -uap | awk '/127.0.0.1/ {print $0}' # UDP-сокеты на localhost

Полезные расширенные флаги и примеры

  • Показать расширенную информацию и таймеры:
ss -tpeo
  • Показать использование памяти сокетов:
ss -m
  • Быстрый аналог netstat -tulpn (прослушивающие TCP/UDP с pid и без резолов):
ss -tulpen

Важно: опция -p требует прав root для отображения PID/имен всех процессов.

Ментальные модели и эвристики

  • «Найти слушающий сокет» — сначала ss -lpn: показывает сервисы, ожидающие соединений.
  • «Найти источник трафика» — ss -ta | grep затем ps -p .
  • «Проверка перегрузки очередей» — смотреть Recv-Q и Send-Q: ненулевые значения указывают на задержки/узкие места.
  • «Проверка таймаутов» — ss -o показывает таймеры TCP (retransmits, keepalive).

Эти простые эвристики ускоряют расследование.

Когда ss может не помочь

  • Если проблема в сетевых устройствах вне ОС (коммутаторы, ISP), ss даст данные только по стороне хоста.
  • Для сниффинга трафика и анализа пакетов нужен tcpdump или wireshark, ss не показывает сами пакеты.
  • ss отображает состояние в момент запроса; для корреляции событий используйте запись вывода в файл через cron или systemd timer.

SOP: быстрый план расследования сетевого инцидента (шаги)

  1. Снять общую статистику: ss -s
  2. Найти прослушивающие сервисы: ss -lpn
  3. По симптомам — фильтровать по порту/адресу: ss -tanp | grep ‘:PORT’
  4. Посмотреть PID процесса: ss -p
  5. Просмотреть журнал сервиса: journalctl -u
  6. При необходимости — захват пакетов: tcpdump -i port
  7. Сохранить выводы в файл и добавить в запись инцидента

Критерии приёмки расследования: найдено соответствие между подозрительным соединением, PID и логами приложения; при повторяемой проблеме — воспроизводимость и шаги для mitigation.

Чек-листы по ролям

Sysadmin

  • ss -lpn — найти слушающие сервисы
  • ss -tanp — активные соединения
  • ss -s — обзор
  • Проверить журналы и процесс

Разработчик

  • ss -p | grep — проверить, есть ли соединения от/к приложению
  • ps + lsof для сопоставления дескрипторов

Инженер по безопасности

  • ss -tulpen — найти неожиданные прослушивания
  • ss -4 | ss -6 — проверить оба стека
  • Сопоставить с политиками firewall (iptables/nft)

Безопасность и рекомендации по укреплению

  • Закрывайте ненужные прослушивающие сокеты. Используйте ss -lpn, чтобы найти процессы.
  • Не давайте привилегию root приложениям без необходимости — ss покажет владельца процесса.
  • Используйте брандмауэр для ограничения доступа по IP/портам, а ss — для верификации применённых правил.

Совместимость и переход с netstat

ss входит в пакет iproute2 и присутствует в большинстве современных дистрибутивов Linux. Команды netstat можно соотнести с ss (например, netstat -tulpn ≈ ss -tulpen). Рекомендация: привыкать к ss — он быстрее и расширяем.

Примеры приёма для тестирования (тест-кейсы)

  • Ожидается, что служба слушает порт 80: ss -ltn | grep ‘:80’ -> должен быть ответ
  • После подключения TCP на порт 22 состояние должно быть ESTAB: ss -tan | grep :22
  • При запуске сервиса с правами non-root ss -lpn не должен показывать root-процесс для этого порта (если это политика)

Мелкая галерея пограничных случаев

  • Прослушивающие сокеты без PID (показывает ‘-‘) — обычно потому, что процесс завершился до запроса или нет прав root.
  • Большие значения Recv-Q — возможный сетевой/программный буферный застой.

Простой шаблон отчёта для инцидента

  • Время обнаружения
  • Команда ss и её вывод (файл)
  • PID и процесс
  • Действия предпринятые и результат
  • Рекомендации

Краткий глоссарий

  • Сокет — конечная точка сетевого соединения.
  • LISTEN — сокет ожидает входящие соединения.
  • ESTAB — соединение установлено.
  • Recv-Q / Send-Q — очереди приёма и отправки.

Итог

ss — это основной инструмент для диагностики сетевых проблем в Linux. Он быстрее и информативнее, чем старый netstat. Комбинация флагов и фильтров позволяет быстро локализовать проблемный порт, процесс или состояние соединения. Включите использование ss в повседневный набор инструментов оператора и автоматизируйте сбор выводов для последующего анализа.

Важно: всегда сохраняйте выводы и сопоставляйте их с журналами приложения и сетевыми захватами для полной картины.


Если нужно, добавлю готовые команды для ваших конкретных сервисов или подготовлю systemd-timer, который будет периодически сохранять вывод ss в файл для мониторинга.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Сводные таблицы в Python — руководство
Аналитика данных

Сводные таблицы в Python — руководство

Как изучить Microsoft 365: курсы и видео
Обучение

Как изучить Microsoft 365: курсы и видео

Объединение Excel-файлов с Python
Python

Объединение Excel-файлов с Python

Бесплатный LinkedIn Learning через библиотеку
Образование

Бесплатный LinkedIn Learning через библиотеку

Заполнение пропущенных значений в pandas
Data Science

Заполнение пропущенных значений в pandas

Покраска 3D-печатных моделей — полное руководство
3D-печать

Покраска 3D-печатных моделей — полное руководство