Мониторинг сети с помощью tcpdump: фильтры, pcap и диагностика

tcpdump – классика сетевой диагностики: перехват и разбор пакетов на интерфейсе без тяжёлой GUI. Полезен, когда нужно быстро понять, ходит ли трафик, на каком порту, с какими флагами TCP и не «теряется» ли он по пути.

Установка

На большинстве UNIX-систем пакет уже есть. Если нет – через менеджер пакетов:

  • Debian/Ubuntu: sudo apt install tcpdump
  • CentOS/RHEL: sudo yum install tcpdump (или dnf на новых релизах)
  • Fedora: sudo dnf install tcpdump

Для захвата нужен root или capability CAP_NET_RAW. Имя интерфейса смотрите через ip link / ip a: вместо устаревшего eth0 часто бывают ens3, enp0s3, wlan0.

Базовые фильтры

Протокол ICMP (ping)

sudo tcpdump -i eth0 icmp

Хост и порт

Трафик к/от конкретного адреса на порту 22 (SSH):

sudo tcpdump -i eth0 'host 192.168.1.1 and port 22'

Логика OR / AND / NOT

HTTP и HTTPS в одном фильтре:

sudo tcpdump -i eth0 'port 80 or port 443'

ARP

sudo tcpdump -i eth0 arp

TCP-флаги и «сырой» BPF

Только SYN (старт TCP-сессии) – удобно ловить сканы и обрывы handshake:

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

Без broadcast и multicast, если мешает «шум» L2:

sudo tcpdump -i eth0 'not broadcast and not multicast'

Удобные ключи вывода

Временные метки

sudo tcpdump -tttt -i eth0

Обрезать пакет (snaplen)

Первые 64 байта обычно хватают для заголовков и экономят диск/CPU:

sudo tcpdump -s 64 -i eth0

ASCII payload

Текст пакета в stdout (осторожно с паролями в открытом HTTP/SMTP):

sudo tcpdump -A -i eth0

Для hex + ASCII чаще берут -X / -XX.

Запись в pcap и разбор позже

Пишем в файл, смотрим offline в tcpdump или Wireshark:

sudo tcpdump -w traffic.pcap -i eth0
sudo tcpdump -r traffic.pcap

На нагруженном интерфейсе добавьте фильтр сразу при записи – меньше объём и меньше дропов буфера. Счётчик «dropped by kernel» в конце вывода стоит смотреть: если растёт, поднимите буфер (-B) или сузьте фильтр.

Когда tcpdump реально помогает

  • Нет ответа на порт: SYN уходит, SYN-ACK нет – проблема дальше по сети или на firewall.
  • Неожиданный трафик: лишние подключения, сканы, «чужие» DNS-запросы.
  • Проверка, что сервис вообще слушает и принимает пакеты на ожидаемом интерфейсе.
  • Сверка с логами приложения: «запрос дошёл до сервера или отвалился раньше».

Практика и ограничения

  • Фильтры BPF – основной навык: чем точнее выражение, тем чище картина.
  • На production не оставляйте долгий -w без ротации: pcap быстро раздувает диск.
  • Юридически: захват чужого трафика без полномочий – зона риска. Работайте в рамках своих систем и политики компании.

tcpdump не заменяет полноценный NMS, но для точечной диагностики на Linux/BSD это первый инструмент, который стоит держать в голове рядом с ss, curl -v и логами firewall.

Источники и ссылки


Комментарии загружаются…