Большинство используют tcpdump как "посмотреть весь трафик на 80 порт". Но настоящая сила в BPF-фильтрах. Правильный фильтр = меньше шума, быстрее диагностика и меньше нагрузки на сервер. Небольшая шпаргалка фильтров, которые реально пригождаются.
1️⃣ Конкретный хост + порт
tcpdump -i eth0 host 10.10.10.5 and port 443
Когда нужно понять, что происходит между двумя узлами.
2️⃣ Только входящий или исходящий трафик
Исходящий:
tcpdump -i eth0 src host 192.168.1.10
Входящий:
tcpdump -i eth0 dst host 192.168.1.10
3️⃣ Только SYN (поиск новых соединений)
tcpdump -i eth0 'tcp[tcpflags] & tcp-syn != 0'
Подойдет для: выявления сканирования, анализа всплеска подключений, диагностики DoS
Только SYN без ACK:
tcpdump -i eth0 'tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-syn'
4️⃣ Исключить шум. Например, убрать SSH:
tcpdump -i eth0 not port 22
Или исключить конкретную подсеть:
tcpdump -i eth0 not net 10.0.0.0/8
5️⃣ Поиск ресетов (Rst-шторм)
tcpdump -i eth0 'tcp[tcpflags] & tcp-rst != 0'
Помогает понять, кто рвет соединения: сервер, клиент или firewall.
6️⃣ Поиск retransmissions (косвенно). Прямого фильтра нет, но можно смотреть повторяющиеся sequence numbers:
tcpdump -nn -i eth0 tcp
Дальше анализ через Wireshark или tcptrace.
7️⃣ HTTP без мусора
tcpdump -i eth0 -A -s 0 'tcp port 80'
-A - показать ASCII-s 0 - не обрезать пакетыМожно сразу фильтровать по методу:
tcpdump -i eth0 -A 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]>>4)<<2)) != 0)'
(когда нужно видеть payload, а не только заголовки)
8️⃣ Захват в файл для анализа
tcpdump -i eth0 -w dump.pcap
С ограничением по размеру:
tcpdump -i eth0 -C 100 -W 5 -w dump.pcap
Это создаст ротацию файлов по 100MB (до 5 файлов).
9️⃣ Поиск DNS-аномалий
tcpdump -i eth0 port 53
Только большие ответы:
tcpdump -i eth0 'udp port 53 and greater 512'
Часто помогает при подозрении на туннелирование через DNS.
#linux #tcpdump
🧑💻 NetworkAdmin