ss & netstat

Тема дорожной карты · Linux & Unix Fundamentals

ss — это современная утилита, заменяющая устаревший netstat, который читает данные о сокетах напрямую из ядра через netlink. Это значительно ускоряет работу на нагрузках. Для получения списка слушающих TCP/UDP-сокетов с информацией о процессе, который их использует, применяется команда ss -tulpn. Для краткой сводки используется команда ss -s, а для фильтрации по состоянию соединения — команда ss -tan state established. Утилита netstat из пакета net-tools встречается в старых руководствах, но в большинстве дистрибутивов считается устаревшим и не рекомендуется для использования.

Как это работает

ss и netstat используются для получения информации о сетевых соединениях и сокетах. Они являются частью набора инструментов для сетевого администрирования, таких как ip (интерфейсы, маршруты, соседи — современная замена ifconfig/route), ss (сокеты), dig/host/nslookup (DNS), curl/wget (HTTP), ping/traceroute/mtr (доступность), tcpdump/wireshark (захват пакетов), nc (netcat), iptables/nftables/ufw/firewalld (firewall). В облачных виртуальных машинах доступ к этим данным может быть ограничен, но базовые инструменты остаются неизменными.

Когда применять

ss -tnlp используется для определения, какой порт открыт и кто его слушает. Команда ip a позволяет узнать IP-адрес интерфейсов. Эти две команды являются первыми инструментами отладки. mtr объединяет в себе функциональность ping и traceroute с непрерывной выборкой данных. tcpdump используется для захвата сетевых пакетов, когда подозревается, что пакеты не доходят до конечной точки. Захватанные данные можно сохранить и разобрать в Wireshark на ноутбуке. ufw (Ubuntu) или firewalld (RHEL) предпочтительнее использования сырого iptables, пока не возникнет необходимости в более сложных настройках.

Типичные ошибки

Существуют несколько ловушек при использовании ss и netstat. Например, правка правил firewall через SSH может привести к блокировке себя. В этом случае можно использовать screen-сессию с задержкой восстановления. Команда nslookup может давать другой ответ, чем dig, так как они используют разные DNS-резолверы. Открытый порт 22 без защиты fail2ban или с авторизацией только по ключу может стать целью для атак ботнетов. Также часто путают проблемы маршрутизации и DNS. Например, если curl http://example.com работает, а curl http://192.0.2.1 нет, это может указывать на проблему маршрутизации, а не DNS.

Связанные понятия

Полезные ресурсы