Фильтры
Синтаксис BPF: host, net, port, portrange, src/dst, tcp/udp/icmp,
объединяй and/or/not:
Полезно при ssh-сессии исключать свой же трафик:
and not port 22— иначе видишь в основном собственные пакеты.
Захватывает пакеты для диагностики «доходит ли трафик»; без -n резолвит каждый IP в DNS и заметно тормозит.
sudo tcpdump -ni any port 80
порт 80, без резолва
sudo tcpdump -ni any host IP
по хосту
sudo tcpdump -ni any 'tcp and not port 22'
TCP без своей ssh
sudo tcpdump -ni any -c 20
20 пакетов и стоп
sudo tcpdump -ni any -A port 80
payload (HTTP-текст)
sudo tcpdump -ni any port 80 -w cap.pcap
в файл → Wireshark
tcpdump захватывает сетевые пакеты — последнее средство, когда непонятно,
«доходит ли вообще трафик». Нужен root.
-n не резолвить IP, -nn ещё и порты; без них tcpdump тормозит на DNS.
-n не резолвит IP в имена, -nn дополнительно не резолвит номера портов в
названия сервисов — без них tcpdump заметно тормозит на DNS-запросах при
каждом новом адресе. По умолчанию пакет обрезается до части заголовков;
-s 0 захватывает его целиком, что нужно для просмотра полного payload.
| Ключ | Что делает | Пример |
|---|---|---|
-i IFACE |
Интерфейс для захвата; any захватывает на всех сразу. | sudo tcpdump -i any port 80 |
-n |
Не резолвить IP-адреса в имена. | sudo tcpdump -ni any |
-nn |
Не резолвить ни адреса, ни номера портов в названия сервисов. | sudo tcpdump -nni any port 80 |
-c N |
Остановиться после захвата N пакетов. | sudo tcpdump -ni any -c 20 |
-w FILE |
Писать сырой дамп в файл .pcap вместо вывода на экран (для Wireshark). | sudo tcpdump -ni any port 80 -w cap.pcap |
-r FILE |
Читать пакеты из файла .pcap вместо живого захвата. | sudo tcpdump -r cap.pcap 'host 10.0.0.5' |
-A |
Показать содержимое пакета как ASCII — удобно для незашифрованного HTTP. | sudo tcpdump -ni any -A port 80 |
-s N |
Длина захвата пакета в байтах; 0 — захватывать пакет целиком. | sudo tcpdump -ni any -s 0 -w cap.pcap |
-X |
Показать содержимое пакета в hex и ASCII одновременно. | sudo tcpdump -ni any -X port 80 |
-e |
Показать заголовок канального уровня (MAC-адреса). | sudo tcpdump -ni any -e |
Ничего не найдено. Попробуй запрос короче.
Синтаксис BPF: host, net, port, portrange, src/dst, tcp/udp/icmp,
объединяй and/or/not:
Полезно при ssh-сессии исключать свой же трафик:
and not port 22— иначе видишь в основном собственные пакеты.
На сервере sudo tcpdump -ni any port 80, сделай запрос с клиента. Видишь пакеты —
трафик доходит (проблема в приложении/локальном файрволе); тишина — не доходит
(маршрут/файрвол/не та сеть/не тот интерфейс).
Асимметричный маршрут или файрвол на обратном пути/у клиента. Снимай дамп с обеих сторон одновременно.
Сузь фильтром (host/port), ограничь -c N, исключи свою сессию (not port 22),
пиши в .pcap и разбирай в Wireshark.
tcpdump требует root (доступ к сырым сокетам). Список интерфейсов — sudo tcpdump -D
или ip -br a.
Есть неточность? Сообщить об ошибке в статье