← Назад к вопросам

С какими ключами вводите команды netstat и их назначение

1.7 Middle🔥 181 комментариев
#Другое

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Команда netstat: ключи и их назначение

Команда netstat (network statistics) — классический инструмент для анализа сетевых подключений, статистики интерфейсов и таблиц маршрутизации. В современных дистрибутивах Linux её постепенно заменяют ss (socket statistics), но netstat остаётся востребованной ввиду её универсальности и поддержки на различных платформах (Linux, macOS, Windows). Я, как DevOps-инженер, часто использую её для быстрой диагностики сетевых проблем, проверки открытых портов и мониторинга сетевой активности сервисов.

Основные ключи и их назначение

1. Отображение сетевых подключений

  • netstat -a (или --all): показывает все активные соединения и порты, ожидающие подключений (listening). Без этого ключа отображаются только установленные соединения.
    netstat -a | head -10
    
  • netstat -t (или --tcp): отображает только TCP-соединения.
  • netstat -u (или --udp): отображает только UDP-соединения.
  • netstat -l (или --listening): показывает только порты в состоянии прослушивания (listening), что полезно для проверки запущенных сервисов.
  • netstat -n (или --numeric): отключает преобразование адресов и портов в имена (DNS и службы), ускоряя вывод и избегая проблем с разрешением имён. Это ключевой ключ для избежания блокировок из-за DNS.
    netstat -tnl  # Все TCP-порты в режиме listening с числовым выводом
    

2. Статистика и расширенная информация

  • netstat -s (или --statistics): выводит статистику по сетевым протоколам (TCP, UDP, ICMP и др.). Незаменима для анализа ошибок, например, количества повторных передач или отброшенных пакетов.
    netstat -s | grep -A 10 "Tcp:"  # Статистика TCP
    
  • netstat -e (или --extend): показывает дополнительную информацию, такую как пользователь (UID) в Linux или детали интерфейса в Windows. В Linux часто комбинируется с -p.
  • netstat -p (или --program): отображает PID и имя процесса, использующего соединение. Требует прав суперпользователя (sudo). Критически важен для идентификации приложений, открывающих порты.
    sudo netstat -tnp  # TCP-соединения с процессами
    

3. Таблицы маршрутизации и интерфейсы

  • netstat -r (или --route): выводит таблицу маршрутизации ядра, аналогично команде route -n. Полезна для диагностики проблем с маршрутами.
    netstat -rn  # Числовая таблица маршрутизации
    
  • netstat -i (или --interfaces): показывает статистику по сетевым интерфейсам (количество пакетов, ошибок, коллизий). Часто используется с ключом -e для расширенного вывода.

4. Дополнительные полезные ключи

  • netstat -c (или --continuous): непрерывный вывод с обновлением каждую секунду, аналогично top. Полезен для мониторинга изменений в реальном времени.
    netstat -ct  # Непрерывный вывод TCP-соединений
    
  • netstat -o (в Windows): аналог -p в Linux, показывает идентификаторы процессов. В Linux для этого используется -p.
  • netstat -g (или --groups): отображает информацию о multicast-группах.
  • netstat -W (или --wide): предотвращает обрезание длинных адресов в выводе, что актуально для IPv6.

Практические примеры использования в DevOps

В повседневной работе я комбинирую ключи для решения конкретных задач:

  1. Поиск процессов, слушающих порты:
    sudo netstat -tlnp | grep :80  # Что слушает порт 80?
    
  2. Мониторинг установленных соединений:
    netstat -tn | grep ESTABLISHED | wc -l  # Количество активных TCP-соединений
    
  3. Диагностика сетевых проблем:
    netstat -s | grep -E "segments retransmitted|listen queue"  # Анализ повторных передач и очередей
    
  4. Проверка маршрутизации:
    netstat -rn | grep default  # Шлюз по умолчанию
    

Замена на ss и совместимость

В современных системах netstat считается устаревшей (например, в net-tools), и рекомендуется использовать ss из пакета iproute2. ss работает быстрее и предоставляет более детальную информацию. Например:

ss -tlnp  # Аналог netstat -tlnp

Однако netstat остаётся полезной из-за её читаемости и кросс-платформенной поддержки, особенно в контейнерах или legacy-средах.

Вывод: Владение ключами netstat — базовый навык для DevOps-инженера, позволяющий оперативно диагностировать сетевые проблемы, анализировать подключения и контролировать сетевую активность инфраструктуры. Комбинации ключей, такие как -tlnp или -s, становятся частью рутинных проверок при развёртывании сервисов или инцидентах.