База знаний по Open Source
Yandex поиск по всему сайту
Авторизация

ss – программа для исследования сокетов. Работает аналогично команде NetStat, но может отображать больше информации, чем другие утилиты. Большинство современных дистрибутивов Linux сразу устанавливаются с ss.

Синтаксис программы ss

ss [опции] [ ФИЛЬТР ]

Описание программы ss

ss используется для вывода статистики сокета в формате netstat. Эта программа выводит больше информации по TCP чем другие программы.

Опции программы ss

Программа придерживается обычной практики синтаксиса опций GNU, когда длинные опции начинаются с двух дефисов (`-‘). ss поддерживает следующие опции:

-h, –help
Вывести справку.
-V, –version
Вывести версию программы.
-n, –numeric
Не раскрывать имена служб.
-r, –resolve
Не раскрывать номера адресов/портов.
-a, –all
Показывать все сокеты.
-l, –listening
Показывать слушающие сокеты.
-o, –options
Показывать информацию таймера.
-e, –extended
Показывать детальные сведения о сокете.
-m, –memory
Показывать использование памяти сокетом.
-p, –processes
Показывать процесс, использующий сокет.
-i, –info
Показывать внутреннюю информацию TCP.
-s, –summary
Выводить сводку. Эта опция не обрабатывает список сокетов, а получает сведения из других источников. Полезно при огромном количестве сокетов, что делает обработку файла /proc/net/tcp слишком долгим.
-4, –ipv4
Показывать только сокеты IP версии 4 (аналогично -f inet).
-6, –ipv6
Показывать только сокеты IP версии 6 (аналогично -f inet6).
-0, –packet
Показывать пакетные сокеты.
-t, –tcp
Показывать только сокеты TCP.
-u, –udp
Показывать только сокеты UDP.
-d, –dccp
Показывать только сокеты DCCP.
-w, –raw
Показывать только сокеты RAW.
-x, –unix
Показывать только сокеты Unix.
-f ТИП, –family=ТИП
Показывать только сокеты указанного ТИПА. Поддерживаются следующие типы: unix, inet, inet6, link, netlink.
-A ЗАПРОС, –query=ЗАПРОС
Список таблиц сокетов, разделенных запятыми. Поддерживаются следующие идентификаторы: all, inet, tcp, udp, raw, unix, packet, netlink, unix_dgram, unix_stream, packet_raw, packet_dgram.
-D ФАЙЛ
Не показывать ничего, вывести необработанные данные о сокетах TCP в ФАЙЛ с учетом фильтров. Если ФАЙЛ указан как -, вывести на стандартный вывод.
-F ФАЙЛ, –filter=ФАЙЛ
Прочитать фильтр из ФАЙЛА. Каждая строка ФАЙЛА интерпретируется как отдельная опция командной строки. Если ФАЙЛ указан как -, получить содержимое из стандартного ввода.
FILTER := [ state ФЛАГ_TCP ] [ ВЫРАЖЕНИЕ ]
Обратитесь к официальной документации (пакет iproute-doc в Debian) для описания фильтров.

Примеры ss

1. Просмотр общей статистики по сокетам

$ ss -s

Пример вывода

Total: 484 (kernel 0)
TCP: 48 (estab 6, closed 38, orphaned 0, synrecv 0, timewait 7/0), ports 0

Transport Total IP IPv6
* 0 - - 
RAW 0 0 0 
UDP 4 3 1 
TCP 10 4 6 
INET 14 7 7 
FRAG 0 0 0

2. Просмотр открытых портов

$ ss -l

Пример вывода

Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port 
nl UNCONN 0 0 rtnl:-603977212 * 
nl UNCONN 0 0 rtnl:-2038429180 * 
nl UNCONN 0 0 rtnl:ntpd/3782 * 
nl UNCONN 0 0 rtnl:kernel * 
nl UNCONN 0 0 rtnl:ntpd/3782 * 
nl UNCONN 4352 0 tcpdiag:ss/16869 * 
nl UNCONN 768 0 tcpdiag:kernel * 
nl UNCONN 0 0 selinux:kernel * 
nl UNCONN 0 0 iscsi:iscsid/2539 * 
nl UNCONN 0 0 iscsi:kernel * 
nl UNCONN 0 0 iscsi:iscsid/2539 * 
nl UNCONN 0 0 audit:-354350988 * 
nl UNCONN 0 0 audit:libvirtd/2564 * 
nl UNCONN 0 0 audit:kernel * 
nl UNCONN 0 0 audit:sudo/16115 * 
nl UNCONN 0 0 audit:systemd/1 * 
nl UNCONN 0 0 audit:systemd/1 * 
nl UNCONN 0 0 fiblookup:kernel * 
nl UNCONN 0 0 connector:kernel
u_dgr UNCONN 0 0 /var/spool/postfix/dev/log 15123 * 0 
u_str LISTEN 0 128 /var/lib/lxd/devlxd/sock 20906 * 0 
u_dgr UNCONN 0 0 /run/user/1000/systemd/notify 39144 * 0 
u_str LISTEN 0 128 /run/user/1000/systemd/private 39145 * 0 
u_seq LISTEN 0 128 /run/udev/control 9571 * 0 
u_str LISTEN 0 128 /var/lib/lxd/unix.socket 18493 * 0 
u_str LISTEN 0 30 /sys/fs/cgroup/cgmanager/sock 15114 * 0 
u_dgr UNCONN 0 0 /run/systemd/notify 9564 * 0 
u_str LISTEN 0 100 @/var/lib/lxd/containers/lxdns/command 20924 * 0 
u_str LISTEN 0 100 @/var/lib/lxd/containers/lxopenfire/command 20107 * 0

Если добавить p, то в выводе будет видно какой процесс использует сокет

$ ss -l
tcp LISTEN 0 128 127.0.0.1:45015 *:* users:(("node",pid=5813,fd=11))
tcp LISTEN 0 128 *:5719 *:* 
tcp LISTEN 0 128 :::4000 :::* users:(("node",pid=12885,fd=18))
tcp LISTEN 0 128 :::5719 :::*

3. Просмотр TCP сокетов

$ ss -t -a
State      Recv-Q Send-Q   Local Address:Port         Peer Address:Port
LISTEN     0      128                  *:www                     *:*
LISTEN     0      128                 :::ssh                    :::*
LISTEN     0      128                  *:ssh                     *:*
LISTEN     0      128          127.0.0.1:postgresql                 *:*     
LISTEN     0      128                ::1:postgresql                :::*     
ESTAB      0      0          192.168.1.117:ssh           192.168.1.220:3823

последней строчкой видно меня, подключенного к серверу по ssh 🙂

4. Просмотр UDP подключений

$ss -u -a

5. Просмотр активных подключений

$ ss -o state established '( dport = :smtp or sport = :ssh )'