Почему ss показывает тысячи соединений, а netstat - другую картину На… — Network Admin — TG.ME

Почему ss показывает тысячи соединений, а netstat - другую картину

На одном сервере можно запустить:

ss -ant


и получить тысячи TCP-соединений, а затем:
netstat -ant
и увидеть совсем другое количество.

Это не обязательно означает, что один из инструментов врёт.
ss работает через современный интерфейс ядра Linux - NETLINK_INET_DIAG.

Ядро отдаёт ему информацию о сокетах напрямую, поэтому ss может получать состояние соединений без перебора /proc и без старого механизма netstat.


netstat из пакета net-tools - устаревший инструмент. Его возможности и способ получения данных отличаются, а часть информации может отображаться иначе.

Особенно заметна разница на серверах с большим количеством ephemeral connections и быстро меняющимся состоянием TCP.

Для диагностики лучше смотреть не просто количество строк:

ss -s


а разбивку состояний:

ss -ant | awk 'NR>1 {print $1}' | sort | uniq -c


Например:

ESTAB      18420
TIME-WAIT 7312
SYN-RECV 428


И отдельно проверить конкретный listener:
ss -lntp

Важный момент: TIME-WAIT, SYN-RECV, ESTAB и listening sockets - это разные состояния kernel socket state. Поэтому простое сравнение «сколько строк показывает утилита» может давать совершенно разные выводы.

ss сегодня является основным инструментом для анализа TCP/UDP-сокетов в Linux, а netstat в новых системах обычно оставляют только ради совместимости со старыми привычками и скриптами.

N.A.
👍6
August 24, 2026 1.4K 26