Сообщить об ошибке.

Команда ss, просмотр статистики сокетов

Содержание:

Команда ss (Socket Statistics) - это современная утилита в Linux для просмотра статистики сетевых соединений. Она предназначена для замены устаревшей команды netstat.

Для чего нужна команда ss?

Она показывает информацию о:

  • Открытых сокетах: как сетевых (TCP, UDP), так и локальных (UNIX).
  • Установленных соединениях.
  • Прослушиваемых портах (listening ports).
  • Статистике по протоколам.

Основное преимущество перед netstat: ss работает значительно быстрее, потому что читает информацию о сокетах напрямую из ядра Linux (/proc/net/), а не из файлов в /proc/.

Основной синтаксис

ss [ОПЦИИ] [ФИЛЬТР]

Самые полезные опции и примеры использования

Показать все подключения (как netstat -tunap)

Самая частая команда - посмотреть все соединения для основных протоколов.

ss -tuna
  • -t - показать TCP-сокеты.
  • -u - показать UDP-сокеты.
  • -n - не резолвить имена (показывать IP-адреса и номера портов вместо имен). Всегда используйте эту опцию для скорости!
  • -a - показать все сокеты (как слушающие, так и установленные).
  • -l - показать только слушающие (LISTEN) сокеты.

Пример вывода:

Netid State  Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp   LISTEN 0      128         0.0.0.0:22        0.0.0.0:*
tcp   ESTAB  0      0       192.168.1.10:22   192.168.1.5:54322
udp   UNCONN 0      0         127.0.0.1:323        0.0.0.0:*

Показать только слушающие порты (какие сервисы ждут подключений)

ss -tln
ss -uln
  • -l - ключевая опция для просмотра слушающих портов.

Показать процессы, использующие сокеты (аналог netstat -p)

Полезно, чтобы узнать, какая программа открыла порт.

ss -tunap
  • -p - показать процесс (PID и имя). Требует прав root для просмотра всех процессов.

Пример вывода (часть):

tcp   LISTEN 0 128 *:22 *:* users:(("sshd",pid=123,fd=3))

4. Показать все TCP-соединения в определенном состоянии

Например, посмотреть все установленные (ESTABLISHED) подключения:

ss -t state ESTABLISHED

Другие полезные состояния TCP-соединений:

  1. LISTENING — сокет ожидает входящие соединения (серверная сторона).
  2. SYN-SENT — клиент отправил SYN-пакет и ожидает ответа (начало трёхэтапного рукопожатия).
  3. SYN-RECV — сервер получил SYN, отправил SYN-ACK и ожидает финальный ACK от клиента.
  4. ESTABLISHED — соединение успешно установлено; данные могут передаваться в обе стороны.
  5. FIN-WAIT-1 — сторона инициировала закрытие соединения (отправила FIN) и ожидает ACK или FIN от удалённой стороны.
  6. FIN-WAIT-2 — получено подтверждение (ACK) на свой FIN, теперь ожидается FIN от удалённой стороны.
  7. CLOSE-WAIT — получено FIN от удалённой стороны; локальное приложение должно завершить передачу и закрыть сокет.
  8. LAST-ACK — локальная сторона отправила свой FIN в ответ на полученный ранее и ожидает финального ACK.
  9. CLOSING — обе стороны одновременно отправили FIN (редкий случай); ожидается ACK на свой FIN.
  10. TIME-WAIT — соединение закрыто, но сокет остаётся в этом состоянии некоторое время (обычно 2×MSL), чтобы гарантировать доставку последнего ACK и избежать путаницы с пакетами от старого соединения.
  11. CLOSED — соединение не существует; сокет неактивен (это «нулевое» состояние, обычно не отображается в списках активных соединений).

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

ss позволяет очень гибко фильтровать вывод.

  • Показать соединения с определенным портом (например, 80):

    ss -tun sport = :80
    # Или для исходного порта (source port)
    ss -tun dport = :443
    # Или для получателя (destination port)
    ss -tun dport = :443
    
  • Показать соединения с определенным IP-адресом:

    ss -tun dst 192.168.1.5
    # Или по адресу источника (source)
    ss -tun src 10.0.0.1
    

Показать статистику по протоколам

ss -s

Выведет общее количество подключений по протоколам (TCP, UDP, etc.), что полезно для диагностики общей загрузки сети.

Шпаргалка по самым важным командам

КомандаОписание
ss -tunaВсе TCP и UDP подключения (основная команда).
ss -tlnВсе слушающие TCP-порты.
ss -tunap | grep "nginx"Найти все соединения процесса nginx.
ss -t state establishedПоказать все активные TCP-соединения.
ss -t dst 8.8.8.8Показать TCP-соединения с конкретным хостом.
ss -sПоказать статистику.

Вывод: Команда ss - это мощный и быстрый инструмент для сетевой диагностики, который должен знать каждый системный администратор или разработчик, работающий с Linux.