Какой у вас опыт работы с tcpdump?

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

Ответ

Я регулярно использую tcpdump для низкоуровневой диагностики сетевых проблем в Linux-средах. Основные сценарии применения:

  • Отладка сетевых соединений: Определение, доходят ли пакеты до хоста, анализ установки TCP-сессий (SYN, SYN-ACK, ACK) и выявление неожиданных RST-пакетов.
  • Анализ протоколов: Исследование трафика HTTP, DNS, DHCP для поиска аномалий или несоответствий.
  • Фильтрация и сохранение трафика: Использую мощные фильтры BPF для захвата только релевантных пакетов и сохранения дампов в файл для последующего разбора в Wireshark.

Практические примеры команд:

  1. Захват HTTP-запросов к конкретному хосту:
    sudo tcpdump -i eth0 -A -s 0 'tcp port 80 and host 10.0.1.5 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
  2. Захват только SYN-пакетов (начало соединений) для диагностики проблем с подключением:
    sudo tcpdump -i any 'tcp[tcpflags] == tcp-syn'
  3. Сохранение дампа в файл для дальнейшего анализа:
    sudo tcpdump -i eth0 -w investigation.pcap port 443

Для анализа шифрованного трафика (HTTPS, TLS) tcpdump позволяет видеть только метаданные (IP, порты, время установления соединения), но этого часто достаточно для изоляции проблемы на сетевом уровне.