Команда ss (Socket Statistics) - это современная утилита в Linux для просмотра статистики сетевых соединений. Она предназначена для замены устаревшей команды netstat.
ss?Она показывает информацию о:
Основное преимущество перед 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))
Например, посмотреть все установленные (ESTABLISHED) подключения:
ss -t state ESTABLISHED
Другие полезные состояния TCP-соединений:
LISTENING — сокет ожидает входящие соединения (серверная сторона).SYN-SENT — клиент отправил SYN-пакет и ожидает ответа (начало трёхэтапного рукопожатия).SYN-RECV — сервер получил SYN, отправил SYN-ACK и ожидает финальный ACK от клиента.ESTABLISHED — соединение успешно установлено; данные могут передаваться в обе стороны.FIN-WAIT-1 — сторона инициировала закрытие соединения (отправила FIN) и ожидает ACK или FIN от удалённой стороны.FIN-WAIT-2 — получено подтверждение (ACK) на свой FIN, теперь ожидается FIN от удалённой стороны.CLOSE-WAIT — получено FIN от удалённой стороны; локальное приложение должно завершить передачу и закрыть сокет.LAST-ACK — локальная сторона отправила свой FIN в ответ на полученный ранее и ожидает финального ACK.CLOSING — обе стороны одновременно отправили FIN (редкий случай); ожидается ACK на свой FIN.TIME-WAIT — соединение закрыто, но сокет остаётся в этом состоянии некоторое время (обычно 2×MSL), чтобы гарантировать доставку последнего ACK и избежать путаницы с пакетами от старого соединения.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.