Ответ
Я регулярно использую tcpdump для низкоуровневой диагностики сетевых проблем в Linux-средах. Основные сценарии применения:
- Отладка сетевых соединений: Определение, доходят ли пакеты до хоста, анализ установки TCP-сессий (SYN, SYN-ACK, ACK) и выявление неожиданных RST-пакетов.
- Анализ протоколов: Исследование трафика HTTP, DNS, DHCP для поиска аномалий или несоответствий.
- Фильтрация и сохранение трафика: Использую мощные фильтры BPF для захвата только релевантных пакетов и сохранения дампов в файл для последующего разбора в Wireshark.
Практические примеры команд:
- Захват 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)' - Захват только SYN-пакетов (начало соединений) для диагностики проблем с подключением:
sudo tcpdump -i any 'tcp[tcpflags] == tcp-syn' - Сохранение дампа в файл для дальнейшего анализа:
sudo tcpdump -i eth0 -w investigation.pcap port 443
Для анализа шифрованного трафика (HTTPS, TLS) tcpdump позволяет видеть только метаданные (IP, порты, время установления соединения), но этого часто достаточно для изоляции проблемы на сетевом уровне.