ss (socket stat) – это инструмент командной строки, который отслеживает соединения сокетов и отображает статистику сокетов системы Linux.
Она может отображать статистику для сокетов PACKET, сокетов TCP, сокетов UDP, сокетов DCCP, сокетов RAW, сокетов домена Unix и многого другого. Она заменяет устаревшую команду netstat в последней версии Linux. Команда ss работает намного быстрее и выводит более подробную сетевую статистику, чем команда netstat.
Если вы знакомы с командой netstat, вам будет легче понять команду ss, поскольку она использует аналогичные параметры командной строки для отображения информации о сетевых подключениях.
Перейдите по следующей ссылке, чтобы увидеть другие руководства по сетевым командам:
Сетевые команды Linux / Unix
1) Список всех подключений сокетов
Базовая команда ss без аргументов, которая отображает все сокеты или сетевые подключения:
$ ss

Понимание заголовков в выводе:
- Netid: Тип сокета. Распространенными типами являются TCP, UDP, u_str (поток Unix) и u_seq (последовательность Unix).
- State: состояние сокета. Общие состояния: ESTAB (установлено), UNCONN (отключено), LISTEN (прослушивание), CLOSE-WAIT и SYN-SENT.
- Recv-Q: количество полученных пакетов в очереди.
- Send-Q: количество отправленных пакетов в очереди.
- Local Address:Port – Адрес локальной машины и порта.
- Peer Address:Port – Адрес удаленного компьютера и порта.
Вывод по умолчанию показывает тысячи строк одновременно, и часть вывода не будет видна на терминале, поэтому используйте команду «меньше» для постраничной отчетности.
$ ss | less Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port u_seq ESTAB 0 0 @0000d 54585 * 54586 u_seq ESTAB 0 0 @0000e 54587 * 54588 u_seq ESTAB 0 0 @0000f 55132 * 55133 u_seq ESTAB 0 0 @00010 55134 * 55135 u_str ESTAB 0 0 * 439093 * 442955 u_str ESTAB 0 0 * 260423 * 260424 u_seq ESTAB 0 0 * 153096 * 153095 u_str ESTAB 0 0 * 57451 * 57450 u_str ESTAB 0 0 * 55382 * 49033 u_str ESTAB 0 0 * 41956 * 41957 u_seq ESTAB 0 0 * 41936 * 41935 u_str ESTAB 0 0 /run/user/1000/bus 39750 * 35633
3) Как просмотреть все прослушивающие сокеты
Отобразим только прослушивающие соединения сокетов в нашей системе Linux, для этого запустим:
$ ss -l Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port nl UNCONN 0 0 rtnl:chrome/3578 * nl UNCONN 0 0 rtnl:kernel * nl UNCONN 0 0 rtnl:chrome/3618 * nl UNCONN 0 0 rtnl:mission-control/2102 * nl UNCONN 0 0 rtnl:atom/3381 * nl UNCONN 0 0 rtnl:goa-daemon/2107 * nl UNCONN 0 0 rtnl:firefox/2979 * nl UNCONN 0 0 rtnl:evolution-calen/2207 * nl UNCONN 0 0 rtnl:nscd/1262 * nl UNCONN 0 0 rtnl:gnome-software/2229 * nl UNCONN 0 0 rtnl:avahi-daemon/1184 * nl UNCONN 0 0 rtnl:evolution-addre/2329 * nl UNCONN 0 0 rtnl:wpa_supplicant/1547 *
4) Отображение соединений сокетов TCP
Отобразим только соединения сокетов TCP в нашей системе Linux,для этого запустим:
$ ss -ta State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 192.168.43.4:38658 142.250.183.2:https ESTAB 0 0 192.168.43.4:47464 142.250.182.227:https ESTAB 0 0 192.168.43.4:40184 34.102.149.62:https ESTAB 0 0 192.168.43.4:34546 23.211.105.67:https ESTAB 0 0 192.168.43.4:41188 52.37.132.164:https ESTAB 0 0 192.168.43.4:34548 23.211.105.67:https ESTAB 0 0 192.168.43.4:57118 142.250.196.34:https ESTAB 0 0 192.168.43.4:59392 35.244.159.8:https ESTAB 0 0 192.168.43.4:49948 94.237.76.92:ssh ESTAB 0 0 192.168.43.4:52680 142.250.77.34:https
4-a) Отображение соединений сокетов UDP
$ ss -ua State Recv-Q Send-Q Local Address:Port Peer Address:Port UNCONN 0 0 192.168.43.4:46312 0.0.0.0:* UNCONN 0 0 224.0.0.251:mdns 0.0.0.0:* UNCONN 0 0 224.0.0.251:mdns 0.0.0.0:* UNCONN 0 0 0.0.0.0:mdns 0.0.0.0:* UNCONN 0 0 0.0.0.0:47347 0.0.0.0:* UNCONN 0 0 192.168.43.4:56078 0.0.0.0:* ESTAB 0 0 192.168.43.4%wlan0:bootpc 192.168.43.1:bootps UNCONN 0 0 [::]:mdns [::]:* UNCONN 0 0 [2402:3a80:462:e78:e4ca:8bb:a7ae:8888]:40157 [::]:* UNCONN 0 0 [::]:48993 [::]:* UNCONN 0 0 [2402:3a80:462:e78:e4ca:8bb:a7ae:8888]:33353 [::]:* ESTAB 0 0 [2402:3a80:462:e78:e4ca:8bb:a7ae:8888]:33597 [2404:6800:4009:809::2004]:https
4-б) Отображение соединений сокетов UNIX
$ ss -xa Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port u_str LISTEN 0 128 /run/systemd/journal/stdout 13825 * 0 u_str LISTEN 0 128 /tmp/.ICE-unix/1989 36552 * 0 u_dgr UNCONN 0 0 /run/systemd/journal/socket 13827 * 0 u_str LISTEN 0 5 /tmp/.esd-1000/socket 40072 * 0 u_str LISTEN 0 1 /tmp/.X11-unix/X0 37262 * 0 u_str LISTEN 0 128 /run/user/1000/keyring/.ssh 514311 * 0 u_str LISTEN 0 128 @/tmp/.ICE-unix/1989 36551 * 0 u_str LISTEN 0 10 /run/mcelog/mcelog-client 28958 * 0 u_str LISTEN 0 128 /var/run/nscd/socket 29728 * 0 u_str LISTEN 0 1 @/tmp/.X11-unix/X0 37261 * 0
4-в) Отображение RAW сокетов
$ ss -wa State Recv-Q Send-Q Local Address:Port Peer Address:Port UNCONN 0 0 *:ipv6-icmp *:*
5) Вывод только прослушивающих TCP-сокетных соединений
Чтобы вывести только прослушивающие соединения TCP-сокета, запустите:
$ ss -ltn State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 0.0.0.0:22 0.0.0.0:* LISTEN 0 5 127.0.0.1:631 0.0.0.0:* LISTEN 0 100 127.0.0.1:25 0.0.0.0:* LISTEN 0 10 0.0.0.0:3689 0.0.0.0:* LISTEN 0 128 [::]:22 [::]:* LISTEN 0 5 [::1]:631 [::]:* LISTEN 0 100 [::1]:25 [::]:* LISTEN 0 10 [::]:3689 [::]:*
6) Список подключений сокетов IPv4 и IPv6
Чтобы отобразить только подключения к сокетам IPv4, запустите:
$ ss -4 Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port udp ESTAB 0 0 192.168.43.4%wlan0:bootpc 192.168.43.1:bootps tcp ESTAB 0 0 192.168.43.4:41188 52.37.132.164:https tcp ESTAB 0 0 192.168.43.4:59392 35.244.159.8:https tcp ESTAB 0 0 192.168.43.4:49948 94.237.76.92:ssh tcp CLOSE-WAIT 1 0 192.168.43.4:50232 35.244.247.133:https tcp ESTAB 0 0 192.168.43.4:51714 142.250.77.34:https tcp ESTAB 0 0 192.168.43.4:51724 142.250.77.34:https tcp ESTAB 0 0 192.168.43.4:56566 13.227.129.99:https tcp ESTAB 0 0 192.168.43.4:48470 142.250.183.98:https tcp ESTAB 0 0 192.168.43.4:56718 216.58.196.66:https
7) Выведем имена процессов и pidы с помощью команды ss
Чтобы перечислить имя процесса и pid, связанные с сетевыми подключениями, выполните:
Вам нужно запустить эту команду с привилегией sudo, чтобы просмотреть все имена процессов и связанные pid.
$ sudo ss -ltp
[sudo] password for root:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:* users:(("sshd",pid=1338,fd=3))
LISTEN 0 5 127.0.0.1:ipp 0.0.0.0:* users:(("cupsd",pid=1260,fd=7))
LISTEN 0 100 127.0.0.1:smtp 0.0.0.0:* users:(("master",pid=1630,fd=13))
LISTEN 0 10 0.0.0.0:daap 0.0.0.0:* users:(("rhythmbox",pid=16209,fd=18))
LISTEN 0 128 [::]:ssh [::]:* users:(("sshd",pid=1338,fd=4))
LISTEN 0 5 [::1]:ipp [::]:* users:(("cupsd",pid=1260,fd=6))
LISTEN 0 100 [::1]:smtp [::]:* users:(("master",pid=1630,fd=14))
LISTEN 0 10 [::]:daap [::]:* users:(("rhythmbox",pid=16209,fd=19))8) Показать информацию о таймере подключений сокетов
Чтобы показать, как долго “живет” соединение сокета, запустите:
$ ss -tn -o State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 192.168.43.4:41188 52.37.132.164:443 timer:(keepalive,9min54sec,0) ESTAB 0 0 192.168.43.4:59392 35.244.159.8:443 ESTAB 0 0 192.168.43.4:50678 103.43.90.19:443 timer:(keepalive,9.512ms,0) ESTAB 0 0 192.168.43.4:49948 94.237.76.92:22 timer:(keepalive,38min,0) ESTAB 0 0 192.168.43.4:36528 182.161.72.130:443 ESTAB 0 0 192.168.43.4:48704 142.250.192.66:443 ESTAB 0 0 192.168.43.4:38544 103.43.89.4:443 timer:(keepalive,8sec,0) ESTAB 0 517 192.168.43.4:57978 182.161.72.137:443 timer:(on,288ms,0)
9) Как вывести сводную статистику
Чтобы просмотреть общую сводку всех подключений к сокетам, запустите:
$ ss -s Total: 1278 TCP: 35 (estab 10, closed 11, orphaned 0, timewait 2) Transport Total IP IPv6 RAW 1 0 1 UDP 11 7 4 TCP 24 13 11 INET 36 20 16 FRAG 0 0 0
Команда выведет результаты в табличном формате, включая количество подключений к сокетам TCP и UDP, IPv4 и IPv6.
10) Просмотр расширенного вывода соединений сокетов
Чтобы просмотреть расширенный вывод подключений сокетов, выполните:
$ ss -lte State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:* ino:27515 sk:4dc <-> LISTEN 0 5 127.0.0.1:ipp 0.0.0.0:* ino:30778 sk:4dd <-> LISTEN 0 100 127.0.0.1:smtp 0.0.0.0:* ino:34118 sk:4de <-> LISTEN 0 10 0.0.0.0:daap 0.0.0.0:* uid:1000 ino:442177 sk:586 <-> LISTEN 0 128 [::]:ssh [::]:* ino:27517 sk:4f3 v6only:1 <-> LISTEN 0 5 [::1]:ipp [::]:* ino:30777 sk:4f4 v6only:1 <-> LISTEN 0 100 [::1]:smtp [::]:* ino:34119 sk:4f5 v6only:1 <-> LISTEN 0 10 [::]:daap [::]:* uid:1000 ino:442178 sk:587 v6only:1 <->
Расширенный вывод будет отображать uid сокета и номер inode сокета.
11) Отображение использования памяти сокетными соединениями
Чтобы узнать, сколько памяти занято сокетным подключением, запустите:
$ ss -ltm
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:*
skmem:(r0,rb131072,t0,tb16384,f0,w0,o0,bl0,d0)
LISTEN 0 5 127.0.0.1:ipp 0.0.0.0:*
skmem:(r0,rb131072,t0,tb16384,f0,w0,o0,bl0,d0)
LISTEN 0 100 127.0.0.1:smtp 0.0.0.0:*
skmem:(r0,rb131072,t0,tb16384,f0,w0,o0,bl0,d0)
LISTEN 0 10 0.0.0.0:daap 0.0.0.0:*
skmem:(r0,rb131072,t0,tb16384,f0,w0,o0,bl0,d0)
LISTEN 0 128 [::]:ssh [::]:*
skmem:(r0,rb131072,t0,tb16384,f0,w0,o0,bl0,d0)
LISTEN 0 5 [::1]:ipp [::]:*
skmem:(r0,rb131072,t0,tb16384,f0,w0,o0,bl0,d0)
LISTEN 0 100 [::1]:smtp [::]:*
skmem:(r0,rb131072,t0,tb16384,f0,w0,o0,bl0,d0)
LISTEN 0 10 [::]:daap [::]:*
skmem:(r0,rb131072,t0,tb16384,f0,w0,o0,bl0,d0)12) Отфильтрумсоединения с помощью команды ss
Команда ss обеспечивает расширенную фильтрацию, которую можно использовать для фильтрации определенных соединений, статистики, порта, адреса или службы и т. д.
12-a) Фильтрация соединений сокетов по состоянию
Syntax: ss [option] [state] [name of the socet state]
Чтобы отобразить все сокеты tcp, которые находятся в состоянии «linstening», запустите:
$ ss -lt state established Recv-Q Send-Q Local Address:Port Peer Address:Port 0 0 192.168.43.4:39008 142.250.192.2:https 0 0 192.168.43.4:41188 52.37.132.164:https 0 0 192.168.43.4:59392 35.244.159.8:https 0 0 192.168.43.4:49948 94.237.76.92:ssh 0 0 192.168.43.4:48704 142.250.192.66:https 0 0 192.168.43.4:51714 142.250.77.34:https
Другое общее состояние может быть:
- closed
- syn-sent
- syn-recv
- fin-wait-1
- time-wait
- close-wait
- connected
- synchronized
12-б) Фильтрация соединений сокетов по номеру порта
Syntax: ss [option] dport = :[port number] ss [option] sport = :[port number] ss [option] '( dport = :[port number] or sport = :[port number] )'
Чтобы отфильтровать сокеты по номеру порта, запустите показанные ниже примеры.
Например, чтобы отфильтровать службу ssh, вы можете при необходимости выполнить следующие команды.
$ ss -at dport = :22 State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 192.168.43.4:49948 94.237.76.92:ssh
$ ss -lt sport = :22 State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:* LISTEN 0 128 [::]:ssh [::]:*
$ ss -at dst :22 State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 192.168.43.4:49948 94.237.76.92:ssh
$ ss -at src :22 State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:* LISTEN 0 128 [::]:ssh [::]:*
$ ss -at '( dport = :22 or sport = :22 )' State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:* ESTAB 0 0 192.168.43.4:49948 94.237.76.92:ssh LISTEN 0 128 [::]:ssh [::]:*
Чтобы отфильтровать сразу несколько портов, запустите:
$ ss -nt '( dst :443 or dst :22 )' State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 192.168.43.4:41188 52.37.132.164:443 ESTAB 0 0 192.168.43.4:44970 103.43.90.20:443 ESTAB 0 0 192.168.43.4:59392 35.244.159.8:443 ESTAB 0 0 192.168.43.4:43254 34.95.69.49:443 SYN-SENT 0 1 192.168.43.4:58884 182.161.72.137:443 ESTAB 0 0 192.168.43.4:49948 94.237.76.92:22 CLOSE-WAIT 1 0 192.168.43.4:50232 35.244.247.133:443
12-c) Фильтрация соединений сокетов по имени службы
Точно так же вы можете фильтровать соединения сокетов на основе имени службы!
$ ss -at dport = :ssh State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 192.168.43.4:49948 94.237.76.92:ssh
$ ss -lt sport = :ssh State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:* LISTEN 0 128 [::]:ssh [::]:*
$ ss -at dst :https State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 192.168.43.4:45084 103.43.90.20:https ESTAB 0 0 192.168.43.4:45076 103.43.90.20:https ESTAB 0 0 192.168.43.4:41188 52.37.132.164:https ESTAB 0 0 192.168.43.4:59392 35.244.159.8:https ESTAB 0 0 192.168.43.4:43254 34.95.69.49:https
$ ss -at src :ssh State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:* LISTEN 0 128 [::]:ssh [::]:*
$ ss -at '( dport = :ssh or sport = :ssh )' State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:* ESTAB 0 0 192.168.43.4:49948 94.237.76.92:ssh LISTEN 0 128 [::]:ssh [::]:*
$ ss -at '( dst :https or dst :ssh )' State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 192.168.43.4:41188 52.37.132.164:https ESTAB 0 0 192.168.43.4:59392 35.244.159.8:https ESTAB 0 0 192.168.43.4:49948 94.237.76.92:ssh CLOSE-WAIT 1 0 192.168.43.4:50232 35.244.247.133:https ESTAB 0 0 192.168.43.4:51714 142.250.77.34:https
$ ss -at '( dst :https or src :ssh )' State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:* ESTAB 0 0 192.168.43.4:41188 52.37.132.164:https ESTAB 0 0 192.168.43.4:59392 35.244.159.8:https CLOSE-WAIT 1 0 192.168.43.4:50232 35.244.247.133:https ESTAB 0 0 192.168.43.4:51714 142.250.77.34:https
$ ss -at '( src :smtp or src :ssh )' State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:* LISTEN 0 100 127.0.0.1:smtp 0.0.0.0:* LISTEN 0 128 [::]:ssh [::]:* LISTEN 0 100 [::1]:smtp [::]:*
12-г) Фильтрация сокетов по IP-адресу
Чтобы вывести список подключений к определенному IP-адресу назначения, запустите:
Syntax: ss [option] dst [IP Address]
Например, чтобы просмотреть список подключений, установленных к определенному IP-адресу, запустите:
$ ss -at dst 192.168.43.40 State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 192.168.43.4:49948 192.168.43.40:ssh
Если вы хотите изучить другие параметры, недоступные в этом руководстве, посетите страницу руководства по команде ss.
$ man ss или $ ss --help
Заключение
В этом руководстве мы показали вам, как использовать команду ss в Linux, на нескольких примерах, включая различные параметры фильтрации.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии!