Как проанализировать сетевые соединения сервера?

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

Ответ

Анализ сетевых соединений — рутина для DevOps при диагностике проблем с доступностью, производительностью или безопасностью. Мы используем комбинацию статических снимков и динамического трассирования.

1. Анализ активных и слушающих соединений:

  • Современная утилита ss (замена netstat):

    # Показать все слушающие сокеты с именами процессов
    ss -tulnp
    # Ключи: -t (TCP), -u (UDP), -l (listening), -n (numeric), -p (process)
    
    # Показать все установленные TCP-соединения
    ss -tn
    
    # Показать соединения в определенном состоянии (например, TIME-WAIT)
    ss -tn state time-wait
  • Использование lsof для сетевых соединений:
    # Все сетевые соединения
    lsof -i
    # Соединения конкретного процесса (например, Docker daemon)
    lsof -i -a -p $(pidof dockerd)

2. Динамический анализ трафика (трассировка):

  • tcpdump для захвата пакетов:
    # Захват HTTP-трафика на порту 80 интерфейса eth0
    tcpdump -i eth0 -nn 'tcp port 80' -w capture.pcap
    # Захват трафика до/от конкретного IP
    tcpdump -i any host 10.0.1.5
  • ngrep для поиска по содержимому:
    # Поиск строки "POST /api" в сетевом трафике
    ngrep -d any 'POST /api' port 80

3. Мониторинг и метрики (DevOps-подход):

  • Prometheus + Node Exporter: Сбор метрик node_netstat_Tcp_CurrEstab (активные соединения), node_network_receive_bytes_total.
  • Специализированные экспортеры: Например, haproxy_exporter или nginx-prometheus-exporter для мониторинга соединений на уровне балансировщика.
  • Cloud-мониторинг:
    • AWS: VPC Flow Logs (логируются все IP-трафик), анализ в CloudWatch Logs Insights или Athena.
    • GCP: Firewall Rules Logging и VPC Flow Logs.

4. Диагностика конкретных проблем:

  • Куда уходит исходящий трафик?
    ss -tn dst :443  # Все исходящие соединения на 443 порт
  • Есть ли исчерпание лимита портов?
    ss -tan | grep -c TIME-WAIT  # Подсчет соединений в TIME-WAIT
    # Проверка системных лимитов
    sysctl net.ipv4.ip_local_port_range
    sysctl net.ipv4.tcp_tw_reuse  # Можно ли переиспользовать TIME-WAIT сокеты?
  • Какой процесс установил соединение с подозрительным IP?
    lsof -i @192.168.1.100

5. Автоматизация и IaC: Конфигурация сетевых правил (фаерволы, security groups) управляется через Terraform/CloudFormation, что делает сетевую топологию предсказуемой и версионируемой. Анализ соединений часто нужен, чтобы проверить, что реальный трафик соответствует декларируемой конфигурации.