ss (socket stat) – это инструмент командной строки, который отслеживает соединения сокетов и отображает статистику сокетов системы Linux.
Она может отображать статистику для сокетов PACKET, сокетов TCP, сокетов UDP, сокетов DCCP, сокетов RAW, сокетов домена Unix и многого другого.
Она заменяет устаревшую команду netstat в последней версии Linux.
Команда ss работает намного быстрее и выводит более подробную сетевую статистику, чем команда netstat.
Если вы знакомы с командой netstat, вам будет легче понять команду ss, поскольку она использует аналогичные параметры командной строки для отображения информации о сетевых подключениях.
Перейдите по следующей ссылке, чтобы увидеть другие руководства по сетевым командам:
Сетевые команды Linux / Unix
- 1) Список всех подключений сокетов
- 3) Как просмотреть все прослушивающие сокеты
- 4) Отображение соединений сокетов TCP
- 4-a) Отображение соединений сокетов UDP
- 4-б) Отображение соединений сокетов UNIX
- 4-в) Отображение RAW сокетов
- 5) Вывод только прослушивающих TCP-сокетных соединений
- 6) Список подключений сокетов IPv4 и IPv6
- 7) Выведем имена процессов и pidы с помощью команды ss
- 8) Показать информацию о таймере подключений сокетов
- 9) Как вывести сводную статистику
- 10) Просмотр расширенного вывода соединений сокетов
- 11) Отображение использования памяти сокетными соединениями
- 12) Отфильтрумсоединения с помощью команды ss
- 12-a) Фильтрация соединений сокетов по состоянию
- 12-б) Фильтрация соединений сокетов по номеру порта
- 12-c) Фильтрация соединений сокетов по имени службы
- 12-г) Фильтрация сокетов по IP-адресу
- Заключение
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, для этого запустим:
$ 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 [::]:*