Утилита ss (socket stat) – это инструмент командной строки, который отслеживает соединения сокетов и отображает статистику сокетов системы Linux. Она может отображать статистику для сокетов TCP, сокетов UDP, сокетов DCCP, сокетов RAW, сокетов домена Unix и многого другого. Ss позволяет отображать информацию, аналогичную netstat, при этом отображает больше информации о TCP и состоянии, чем другие инструменты.
Команда ss работает так же, как и любые другие утилиты командной строки Linux. Если взглянуть на страницу справки по ss (вызвать её можно командой man ss), можно заметить, что тут присутствует гораздо меньше ключей командной строки, чем у netstat. Однако это не говорит о скудных возможностях ss. На самом деле, ss весьма мощный инструмент, который пришел на замену устаревшему netstat.
Часто используемые ключи для ss, обратите внимание ниже приведен пример команды netstat и ключи у обоих утилит одинаковые и соответственно они и выведут похожую информацию:
ss -tulpn netstat -tulpn
Если запустить ss без аргументов командной строки или опций, она выведет полный список работающих соединений.
# ss -s Total: 3363 (kernel 3693) TCP: 809 (estab 467, closed 120, orphaned 0, synrecv 0, timewait 118/0), ports 664 Transport Total IP IPv6 * 3693 - - RAW 0 0 0 UDP 1735 1735 0 TCP 689 688 1 INET 2424 2423 1 FRAG 0 0 0
Опция -t позволяет просматривать сведения по TCP-соединениям, опция -u предназначена для вывода данных по UDP-соединениям, опция -x выводит данные по соединениям Unix. По умолчанию использование опций -t, -u или -x выведет лишь данные по установленным соединениям. Если нужно отобрать соединения, ожидающие подключений, понадобится добавить к вызову команды опцию -a
ss -t показывает активные TCP-соединения. ss -u показывает активные UDP-соединения. ss -tlp показывает TCP-соединения и их ассоциированные процессы. ss -ulp показывает UDP-соединения и их ассоциированные процессы. ss -s показывает общую статистику по типам сокетов.
# ss -t -a
# ss -u -a State Recv-Q Send-Q Local Address:Port Peer Address:Port UNCONN 0 0 10.161.85.55:49408 *:* UNCONN 0 0 10.161.85.55:48768 *:* UNCONN 276 0 10.161.85.55:21888 *:*
# ss -p state listening '( sport = :443 )' # ss -tlp '( sport = :443 )' # ss -p state listening '( sport = :http or sport = :https )'
# ss -o state established '( dport = :smtp or sport = :smtp )'
# ss -o state established '( dport = :https or sport = :https )'
# ss -o state fin-wait-1 '( sport = :http or sport = :https )' dst 202.54.1/24
Что означают состояния сокетов, смотрите в статье Сокеты TCP и их состояния, ниже пример для TIME_WAIT (сокет закрыт, но ожидает пакеты, ещё находящиеся в сети для обработки):
ss -o state time-wait '( sport = :http or sport = :https )'