ss -tulpan вместо netstat
Сеть · Диагностика
Проблема
netstat на нагруженном хосте с десятками тысяч сокетов отрабатывает по несколько секунд, не показывает namespace'ы и на многих современных дистрибутивах официально deprecated (вынесен из net-tools в пользу iproute2). В 2026 году его всё ещё тащат по привычке из 2005-го.
Решение
Перейти на ss из пакета iproute2. Базовая комбинация флагов покрывает 90% задач диагностики:
-t— TCP-u— UDP-l— только слушающие сокеты-p— показать процесс-владелец-a— все состояния, не только LISTEN-n— не резолвить порты/адреса в имена
Мнемоника tulpan (тюльпан) запоминается сразу и покрывает типичный кейс «кто что слушает и у кого соединения».
Пример
# Кто слушает порты (замена netstat -tlnp)
ss -tlnp
# Всё разом: TCP + UDP, listen + established, процессы, без DNS
ss -tulpan
# Только установленные TCP-соединения на порт 443
ss -tan state established '( dport = :443 or sport = :443 )'
# Статистика по всем сокетам
ss -s
# Сокеты конкретного процесса
ss -tp | grep nginx
Типовой сценарий разбора инцидента «порт занят»:
$ ss -tlnp sport = :8080
LISTEN 0 128 0.0.0.0:8080 0.0.0.0:* users:(("old-service",pid=4821,fd=6))
Одна команда — видно и порт, и PID, и имя процесса.
Когда применять
- На любом production-хосте вместо
netstat. - В плейбуках Ansible:
ansible.builtin.command: ss -tulpan. - В инцидентах уровня «что-то слушает порт, а я не знаю что».
Источник
- trimstray/the-book-of-secret-knowledge — раздел Networking
man ss(8)— полная таблица state-фильтров и синтаксис запросов
Как применить у себя
- Убедиться, что
iproute2установлен:ss --version. - Добавить алиас в
~/.bashrc/~/.zshrc:alias listen='ss -tulpan' - Обновить внутренние runbook'и: везде, где в инструкциях был
netstat, поменять наss. - После первого реального инцидента, разобранного через
ss, — перевести статус в Изучено.