Инструмент незаменимый, возможностей у него огромное количество, но на практике чаще всего хватает небольшого набора команд. Ниже краткая шпаргалка из того, что реально используется в работе.
⚠️ Практически всегда добавляю ключ
-nn, чтобы tcpdump не резолвил IP-адреса в домены и не подменял номера портов именами сервисов. В отладке это только мешает.▪️ Список интерфейсов для захвата. Посмотреть, с каких интерфейсов можно слушать трафик:
tcpdump -D
Если запускать tcpdump без параметров, он будет слушать первый активный интерфейс из списка.
▪️ Захват трафика. Слушаем все интерфейсы:
tcpdump -nn -i any
Или конкретный:
tcpdump -nn -i eth0
▪️ Фильтрация по портам. Иногда один протокол полностью забивает вывод. Например, SSH. Его можно исключить:
tcpdump -nn -i any not port 22
Или наоборот смотреть только нужный порт:
tcpdump -nn -i any port 443
▪️ Фильтрация по IP. Трафик к определенному серверу:
tcpdump -nn dst 1.1.1.1
Несколько адресов:
tcpdump -nn dst 1.1.1.1 or dst 9.9.9.9
Комбинация адреса и порта:
tcpdump -nn dst 1.1.1.1 and port 443
Фильтры можно комбинировать через and / or / not.
▪️ Фильтрация по протоколу. Например, посмотреть ARP:
tcpdump -nn -i any arp
Или исключить его:
tcpdump -nn -i any not arp
▪️ Сохранение вывода. Если трафика много, удобнее писать его в файл:
tcpdump -nn -i any > ~/traffic.log
▪️ Пример из практики. Посмотреть HTTPS-трафик от конкретного клиента к серверу через VPN:
tcpdump -nn -i tun0 src 10.10.0.25 and dst 10.10.0.5 and port 443
Несмотря на пугающий вывод, tcpdump довольно простой инструмент.
Чаще всего достаточно увидеть строки вроде:
IP 10.0.0.12.53422 > 10.0.0.5.443
Где указаны источник, порт, получатель и порт назначения. Этого уже хватает, чтобы понять, что происходит в сети.
#network #tcpdump
🧑💻 NetworkAdmin