ss (iproute2) — современная быстрая замена netstat для анализа сокетов: TCP/UDP/UNIX, слушающие порты, фильтры по состояниям, PID/процессы, таймеры и метрики TCP.

📝 Топ‑20 полезных флагов и приёмов ss#

  • -t/-u/-x — показать только TCP / UDP / UNIX‑сокеты.
  • -l — только слушающие сокеты.
  • -a — все сокеты (включая LISTEN).
  • -p — показать PID/имя процесса (нужны права).
  • -nне резолвить имена (быстрее, вывод в виде IP:порт).
  • -H — без заголовка (удобно для парсинга).
  • -4/-6 — только IPv4 / только IPv6.
  • -s — краткая сводка статистики.
  • -o — таймеры и TCP‑таймауты (timer, retrans).
  • -i — TCP internals (RTO, cwnd, ssthresh, bbr/cubic).
  • -m — использование памяти сокетом.
  • -e — расширенный вывод (UID, ino, opts).
  • -r — наоборот резолвить имена (если отключено -n по умолчанию дистрибутивом).
  • -f inet/inet6/unix — выбрать семейство протоколов.
  • state ESTABLISHED (и др.) — фильтр по состояниям TCP.
  • src/dst / sport/dport — фильтрация по адресу/порту (например, dport = :443).
  • -D FILE — дампировать вывод в файл (для отладки).
  • -K FILTERубить соединения, подходящие под фильтр (TCP RST).
  • -w — показать RAW сокеты (или -f inet -w).

🚀 Айсберг команд ss — от базового к гуру#

🟢 Уровень 1 — База (разогрев)#

ss -tuln

  • Все слушающие TCP/UDP порты, без DNS‑резолва

ss -tan

  • Все TCP‑соединения (не только LISTEN), числовой вывод

ss -uan

  • Все UDP‑сокеты

ss -s

  • Сводная статистика по протоколам

ss -tp

  • TCP‑соединения с PID/процессами (root покажет всё)

🟡 Уровень 2 — Быстрая диагностика портов#

ss -ltnp | grep ':22 '

  • Кто слушает порт 22 (SSH)

ss -ltnp | grep ':5432 '

  • Кто держит PostgreSQL

ss -ltn 'sport = :80'

  • Слушающие на 80 порту (HTTP)

ss -ltn 'sport = :80 or sport = :443'

  • HTTP(S) слушатели одним фильтром

ss -tan | grep ESTAB

  • Активные установленные TCP‑соединения

🟠 Уровень 3 — Фильтры по адресам и портам#

ss -tan 'dst 1.2.3.4'

  • Соединения к конкретному IP‑адресу

ss -tan 'src :443'

  • Исходные сокеты с портом 443

ss -tan 'dport = :443'

  • Назначение порт 443 (HTTPS)

ss -tan 'src 10.0.0.0/8 and dport = :22'

  • Фильтр по подсети и порту (SSH)

ss -tuan 'sport = :53 or dport = :53'

  • Все DNS‑сокеты (UDP/TCP, порт 53)

🔵 Уровень 4 — Состояния TCP и троттлинг#

ss -tan 'state established'

  • Только установленные соединения

ss -tan 'state syn-sent'

  • Исходящие попытки подключения (SYN‑SENT)

ss -tan 'state time-wait'

  • Соединения в TIME‑WAIT

ss -tan 'state fin-wait-1 or state fin-wait-2'

  • Завершающиеся соединения

watch -n 1 "ss -tan 'state syn-recv or state syn-sent' | wc -l"

  • Монитор задержек и очередей подключения

🟣 Уровень 5 — Метрики TCP и внутренняя кухня#

ss -tni 'state established'

  • Показать RTO/cwnd/bytes_acked и др. для активных соединений

ss -to 'state established'

  • Показать таймеры (retrans, rto) для TCP

ss -temoi

  • Максимально подробная информация (extended+mem+opts+internals)

ss -tn 'state established' -o '( dport = :443 )'

  • Таймеры только для HTTPS‑соединений

ss -tin 'src 192.168.1.0/24'

  • TCP‑метрики для подсети

🔴 Уровень 6 — UNIX‑сокеты и системные демоны#

ss -xan

  • Все UNIX‑сокеты (демоны, systemd, docker и т.п.)

ss -lx

  • Слушающие UNIX‑сокеты

ss -xap | grep docker

  • UNIX‑сокеты, связанные с Docker

ss -xan 'state listening'

  • Только слушающие UNIX‑сокеты (явный state)

🟤 Уровень 7 — Гуру‑режим (скрипты, килл, парсинг)#

ss -K 'dst 1.2.3.4 dport = :443'

  • Закрыть все TCP‑соединения к 1.2.3.4:443 (нужны права root, осторожно!)

ss -tanH | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head

  • Топ IP по количеству соединений

watch -n 1 "ss -tan 'state established' | wc -l"

  • Счётчик активных TCP‑соединений в реальном времени

ss -tan 'state syn-recv' | awk '{print $4}' | cut -d: -f2 | sort | uniq -c | sort -nr | head

  • Какие порты чаще всего получают SYN

ss -tan 'dport = :80' -oH | awk '{print $(NF)}' | sort | uniq -c | sort -nr | head

  • Анализ таймеров по HTTP‑сессиям

🧩 Бонус — практические рецепты#

Найти, кто слушает 8080 и показать процесс:

ss -ltnp | grep ':8080 '

Только IPv6 слушатели:

ss -ltn6

Показать все соединения к домену (без DNS‑резолва):

ss -tan 'dst 93.184.216.34'

Отфильтровать только HTTPS‑клиентов и показать таймеры:

ss -tan 'dport = :443' -o

Сводка по всем протоколам:

ss -s