Что такое netstat в Linux и для чего он используется?

«Что такое netstat в Linux и для чего он используется?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

netstat (network statistics) — это классическая сетевая утилита командной строки для отображения информации о сетевых подключениях, таблицах маршрутизации, статистике интерфейсов и сокетах. Хотя в современных дистрибутивах рекомендуется использовать её более быструю замену ss, netstat всё ещё широко используется для диагностики.

Основные варианты использования для диагностики:

  1. Просмотр активных сетевых подключений и слушающих портов:

    # Показать все TCP/UDP подключения и слушающие порты с номерами и именами процессов
    netstat -tulnp
    • -t — TCP
    • -u — UDP
    • -l — только слушающие (LISTEN) сокеты
    • -n — показывать числовые адреса (не резолвить имена)
    • -p — отображать PID и имя процесса
  2. Анализ таблицы маршрутизации ядра:

    netstat -rn  # Аналог команды `ip route show`
  3. Просмотр статистики по протоколам и интерфейсам:

    netstat -s  # Подробная статистика по протоколам (TCP, UDP, ICMP)
    netstat -i  # Статистика по сетевым интерфейсам (аналог `ip -s link`)

Интерпретация вывода (столбцы для netstat -tulnp):

  • Proto: Протокол (tcp, udp).
  • Local Address: IP-адрес и порт, на котором слушает или установлено локальное соединение (например, 0.0.0.0:443 означает "все интерфейсы").
  • Foreign Address: Удаленный адрес и порт для установленных соединений.
  • State: Состояние TCP-сокета (LISTEN, ESTABLISHED, TIME_WAIT, CLOSE_WAIT).
  • PID/Program name: Процесс, использующий сокет.

Переход на ss (socket statistics): Утилита ss из пакета iproute2 быстрее и предоставляет более детальную информацию. Большинство флагов netstat имеют прямые аналоги:

ss -tulnp  # Прямой аналог `netstat -tulnp`
ss -s      # Краткая статистика сокетов
ss -o state established '( dport = :443 or sport = :443 )' # Фильтр по состоянию и порту

Для DevOps: netstat/ss — это инструменты первого реагирования при проблемах с сетевым подключением (порт не слушает, слишком много соединений в TIME_WAIT), проверки доступности сервисов и аудита безопасности (какие порты открыты нежелательными процессами).