ss - утилита для отображения информации о сетевых сокетах

  • Михаил
  • 8 мин. на прочтение
  • 29
  • 29 Feb 2024
  • 29 Feb 2024

ss — консольная утилита, которая предоставляет информацию о сетевых сокетах, подключениях TCP/UDP, маршрутизации и других сетевых статистических данных. ss отображает информацию аналогично утилите netstat и при этом выводит больше информации о сетевых соединениях и их состоянии, чем какие-либо другие инструменты. Информация о сокете выводится в виде таблицы. Каждый столбец отображает определенную информацию, относящуюся к сокету.

Описание выводимой информации в столбцах:

  • Netid — отображает тип сокета;
  • State — отображает состояние сокета. Может принимать следующие значения: сокет установлен — ESTAB, сокет не подключен — UNCONN, сокет прослушивается — LISTEN.
  • Recv-Q — отображает количество принятых пакетов в очереди;
  • Send-Q — отображает количество отправленных пакетов в очереди;
  • Local address:port — показывает адрес локальной машины и порт;
  • Peer address:port — отображает адрес удаленной машины и порт.

Синтаксис утилиты ss выглядит следующим образом:

ss <опции>

Утилита ss может принимать несколько опций:

ss <опция_1> <опция_2> <опция_3> …

Основные опции утилиты ss:

  • -V, --version — показать версию утилиты;
  • -n, --numeric — не определять имена служб;
  • -r, --resolve — определять сетевые имена адресов с помощью DNS;
  • -a, --all — отобразить все сокеты (открытые соединения);
  • -l, --listening — показать только прослушиваемые сокеты;
  • -o, --options — показать информацию таймера;
  • -e, --extended — выводить расширенную информацию о сокете;
  • -p, --processes — показать процессы, использующие сокет;
  • -i, --info — посмотреть внутреннюю информацию TCP;
  • -s, --summary — статистика использования сокета;
  • -D, --diag=<файл> — экспортировать текущее состояние TCP-сокетов в файл;
  • -F, --filter=<файл> — работать с информацией, взятой из файла.

Можно выводить информацию о сокете, который использует только необходимый протокол, используя следующие опции:

  • -4, --ipv4 — только сокеты протокола IPv4;
  • -6, --ipv6 — только сокеты протокола IPv6;
  • -0, --packet — только PACKET-сокеты;
  • -t, --tcp — TCP-сокеты;
  • -u, --udp — UDP-сокеты;
  • -x, --unix — UNIX-сокеты.

Для отображения всех TCP-соединений выполните команду:

ss -ta

Для отображения всех UDP-соединений выполните команду:

ss -ua

Для вывода информации о подключенных TCP- и UDP-сокетах, а также информации о процессах, которые используют сокеты — имя процесса и его PID, выполните:

ss -tupn

Для отображения открытых TCP- и UDP-сокетов, которые ожидают соединение, выполните команду, добавив опцию -l:

ss -tupnl


Вывод информации по IP-адресу
Утилита поддерживает фильтрацию информации об установленных подключениях по адресу назначения и по адресу получения.

Для фильтрации информации по адресу назначения выполните:

ss dst xx.xx.xx.xx

Для фильтрации информации по адресу получения выполните:

ss src xx.xx.xx.xx

где xx.xx.xx.xx — IP-адрес, по которому необходимо отфильтровать информацию.

 

Вывод информации по состоянию сокета
Можно отфильтровать информацию по состоянию сокета. Для этого используется дополнительный ключ state.

Состояния, которые может принимать сокет:

  • established;
  • listening;
  • syn-sent;
  • syn-recv;
  • time-wait;
  • closed;
  • close-wait;
  • last-ack;
  • fin-wait-1;
  • fin-wait-2;
  • closing.

Кроме того, ss распознаёт следующие идентификаторы состояний:

  • all — все состояния;
  • connected — все состояния, кроме прослушиваемых и закрытых;
  • synchronized — все состояния, кроме syn-sent;
  • bucket — состояния, представляющие собой минисокеты, например, time-wait или syn-recv;
  • big — все состояния, кроме bucket.

Для отображения всех открытых TCP-портов выполните команду:

ss -t state listening

Для отображения всех успешных соединений по IPv4 выполните:

ss -4 state established


Вывод информации по имени сервиса или номеру порта
Для фильтрации информации по номеру порта или его имени утилите необходимо передать соответствующие опции:

для порта получения:

ss <опции> sport = :<порт>

для порта назначения:

ss <опции> dport = :<порт>

где <порт> — номер порта или имя сервиса.

Для фильтрации TCP-соединения с выводом информации об использовании только порта получателя 22 выполните:

ss -ta '( sport = :22 )'

Для фильтрации TCP-соединения с выводом информации об использовании сервиса HTTPS в адресе назначения выполните:

ss -ta '( dport = :https )'