🛰️ tcpdump: кратко и по делу#

tcpdump — мощный сниффер пакетов, анализ сетевого трафика на уровне IP/TCP/UDP/ICMP.
Используется для диагностики сети, отладки соединений и захвата пакетов для последующего анализа в Wireshark.

📝 Топ‑20 полезных флагов tcpdump#

  • -i IFACE — указать интерфейс (например, eth0).
  • -D — показать список доступных интерфейсов.
  • -n — не резолвить DNS, ускоряет работу.
  • -nn — не резолвить DNS и сервисы (порты → числа).
  • -c NUM — захватить NUM пакетов и выйти.
  • -s SIZE — установить snaplen (размер данных пакета), -s 0 = полный пакет.
  • -w FILE — записать захваченные пакеты в файл .pcap.
  • -r FILE — прочитать пакеты из файла .pcap.
  • -v/-vv/-vvv — увеличить детализацию вывода.
  • -X — показать пакет в hex + ASCII.
  • -XX — показать пакет в hex + raw Ethernet header.
  • -A — показать полезную нагрузку пакета в ASCII.
  • -q — компактный режим, минимум информации.
  • -tt — печатать абсолютные таймстемпы.
  • -tttt — печатать таймстемпы в читаемом формате.
  • -e — выводить MAC-адреса.
  • -Z USER — понизить привилегии до пользователя USER.
  • -G SEC — ротация файлов каждые SEC секунд.
  • -C SIZE — ротация файлов по размеру (в мегабайтах).
  • -U — писать в файл “на лету” (не ждать закрытия).

🚀 Айсберг команд tcpdump — от базового к гуру#

🟢 Уровень 1 — База (разогрев)#

tcpdump

  • Сниффить пакеты на первом доступном интерфейсе

tcpdump -i eth0

  • Захватить трафик на конкретном интерфейсе

tcpdump -i any

  • Захватить трафик на всех интерфейсах

tcpdump -n

  • Выводить IP-адреса вместо DNS-имён

tcpdump -c 10

  • Захватить 10 пакетов и выйти

🟡 Уровень 2 — Фильтрация по IP и портам#

tcpdump -i eth0 host 8.8.8.8

  • Трафик к/от 8.8.8.8

tcpdump -i eth0 src 192.168.1.10

  • Только пакеты от источника

tcpdump -i eth0 dst 192.168.1.20

  • Только пакеты к получателю

tcpdump -i eth0 port 443

  • HTTPS трафик

tcpdump -i eth0 portrange 20-25

  • Пакеты по диапазону портов

🟠 Уровень 3 — Фильтрация по протоколам#

tcpdump -i eth0 tcp

  • Только TCP пакеты

tcpdump -i eth0 udp

  • Только UDP пакеты

tcpdump -i eth0 icmp

  • Пинг и ICMP пакеты

tcpdump -i eth0 arp

  • ARP-запросы и ответы

tcpdump -i eth0 ether proto 0x888e

  • Захват PPPoE/EAPOL пакетов

🔵 Уровень 4 — Расширенные фильтры#

tcpdump -i eth0 'tcp[tcpflags] & tcp-syn != 0'

  • Показать только TCP SYN пакеты

tcpdump -i eth0 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

  • Только HTTP пакеты с полезной нагрузкой

tcpdump -i eth0 'src net 10.0.0.0/8'

  • Пакеты только из подсети 10.0.0.0/8

tcpdump -i eth0 'tcp dst port 22 and tcp[tcpflags] & tcp-ack != 0'

  • Проверка активных SSH соединений

tcpdump -i eth0 'ip6'

  • Только IPv6 пакеты

🟣 Уровень 5 — Захват в файлы и чтение#

tcpdump -i eth0 -w dump.pcap

  • Сохранить трафик в файл

tcpdump -r dump.pcap

  • Прочитать захваченный файл

tcpdump -nn -r dump.pcap | less

  • Читаем с отключением DNS резолвинга

tcpdump -r dump.pcap -vv

  • Более детализированное чтение pcap

tshark -r dump.pcap

  • Анализ того же файла через Wireshark CLI

🔴 Уровень 6 — Отладка приложений и сервисов#

tcpdump -i eth0 -A -s 0 'tcp port 80'

  • Смотреть HTTP-запросы в ASCII

tcpdump -i eth0 -X -s 0 'tcp port 443'

  • Смотреть расшифрованный HTTPS (если MITM)

tcpdump -i eth0 'port 22 and (tcp-syn|tcp-ack) != 0'

  • Проверка активности SSH соединений

tcpdump -i eth0 udp port 53

  • Анализ DNS-запросов

tcpdump -i eth0 dst port 25

  • SMTP трафик (отправка почты)

🟤 Уровень 7 — Гуру‑режим#

tcpdump -i eth0 -G 60 -w 'dump-%Y-%m-%d_%H:%M:%S.pcap'

  • Ротация файлов pcap раз в минуту

tcpdump -i eth0 'tcp[13] = 2'

  • Только пакеты с установленным SYN-флагом

tcpdump -i eth0 'tcp[13] = 18'

  • Только SYN+ACK пакеты

tcpdump -i eth0 'tcp[13] = 1'

  • Только FIN пакеты

tcpdump -i eth0 -tttt -vv -c 100

  • Точные таймстемпы + высокая детализация

🧩 Бонус — практические рецепты#

Захватить HTTP-трафик и посмотреть запросы:

tcpdump -i eth0 -A -s 0 tcp port 80

Сохранить трафик для анализа в Wireshark:

tcpdump -i eth0 -s 0 -w traffic.pcap

Показать только HTTPS-пакеты:

tcpdump -i eth0 port 443

Отслеживать только исходящие запросы:

tcpdump -i eth0 src host $(hostname -I | awk '{print $1}')

Анализировать DNS-запросы в реальном времени:

tcpdump -i eth0 udp port 53