tcpdump — это инструмент командной строки для анализа пакетов, который позволяет перехватывать сетевые пакеты на основе правил фильтрации пакетов, интерпретировать содержимое пакетов и отображать результат в удобочитаемом формате.
tcpdump помогает:
- Диагностировать потерю пакетов
- Проверять производительность приложений
- Проверьте маршрутизацию трафика в многосетевой среде
- Отслеживать теги VLAN
- Прослушивать трафик
Просмотр списка сетевых интерфейсов в tcpdump
Для того что бы показать список сетевых интерфейсов используемых в системе, необходимо указать параметр -D
1 | tcpdump -D |
Захват пакетов с определенного с сетевого интерфейса
По умолчанию, Tcpdump прослушивает сетевой интерфейс с наименьшим номером в списке.
для прослушивания конкретного сетевого интерфейса, необходимо использовать опцию -i с именем интерфейса в качестве параметра
К примеру прослушивание всего локального (Loopback) трафика
1 | tcpdump -i lo |
Захват пакетов со всех доступных интерфейсов
Если необходимо захватить трафик со всех сетевых интерфейсов, к примеру если в системе несколько сетевых подключений, в tcpdump для таких случаев предусмотрено специальное "имя" any
1 | tcpdump -i any |
Измените формат вывода tcpdump
Вывод MAC адресов
1 | tcpdump -e |
10:05:49.070508 2f:c0:1b:21:4a:c4 (oui Unknown) > 7a:f4:2b:96:0b:41 (oui Unknown), ethertype IPv4 (0x0800), length 118: 192.168.1.100.9088 > server.local.ssh: Flags [P.], seq 1601:1665, ack 391488, win 1028, length 64
Вывод IP адреса, без преобразование в DNS имя
1 | tcpdump -n |
10:09:09.440334 IP 192.168.1.7.22 > 192.168.1.100.51095: Flags [.], ack 720, win 36, length 0
Настройка детализации вывода
1 2 3 | tcpdump -v tcpdump -vv tcpdump -vvvv |
Захват пакетов с определенным IP-адресом или подсетью
Захвата пакетов с IP-адреса 1.1.1.1
1 | tcpdump src 1.1.1.1 |
Захват пакетов, исходящих из подсети 192.168.0.0/24
1 | tcpdump src net 192.168.0.0/24 |
Захват пакетов с IP-адресом назначения 192.168.1.1
1 | tcpdump dst 192.168.1.1 |
Захват пакетов в подсеть 192.168.100.0/24
1 | tcpdump dst net 192.168.100.0/24 |
Захват пакетов между двумя хостами или двумя подсетями
Захват пакетов с адреса 10.0.0.1 на адрес 192.168.0.1
1 | tcpdump src 10.0.0.1 and dst 192.168.0.1 |
Захват пакетов из сети 10.0.0.0/24 в подсеть 192.168.0.0/24
1 | tcpdump src net 10.0.0.0/24 and dst net 192.168.0.0/24 |
Захват пакетов между 10.0.0.1 и 192.168.0.1 в обоих направлениях
1 | tcpdump host 10.10.0.1 and host 192.168.100.54 |
Захват пакетов между двумя подсетями 10.0.0.0/24 и 192.168.0.0./24 в обоих направлениях
1 | tcpdump net 10.0.0.0/24 and net 192.168.0.0/24 |
Захват пакетов с определенного сетевого протокола
tcpdump позволяет захватывать сетевой трафик определенного сетевого протокола. Для известных протоколов уровня 3 или уровня 4 нужно указать их имена.
Захват только IP пакетов
1 | tcpdump ip |
Захват только ICMP пакетов
1 | tcpdump icmp |
Захват только ARP пакетов
1 | tcpdump arp |
Захват TCP пакетов
1 | tcpdump tcp |
Захват UDP пакетов
1 | tcpdump udp |
Захват только TCP пакетов между 10.0.0.1 и 192.168.0.1 в обоих направлениях
1 | tcpdump tcp and host 10.0.0.1 and host 192.168.0.1 |
Захват пакетов с определенных портов TCP/UDP
Захват пакетов с портом назначения 80
1 | tcpdump dst port 80 |
Захват UDP-пакетов с порта 6000
1 | tcpdump udp src port 6000 |
Захват DNS-пакетов (исходный или целевой порт 53)
1 | tcpdump port 53 |
Захват пакетов с 80 или 8080 портами
1 | tcpdump port 80 or port 8080 |
Захват пакетов в диапазоне портов от 1000 до 10000
1 | tcpdump portrange 1000-10000 |
Захват пакетов кроме определенного
Исключить все SSH (порт 22) пакетов с IP 192.168.0.100
1 | tcpdump port not 22 and not host 192.168.0.100 |
Захват первых N пакетов
Захват первых 100 пакетов
1 | tcpdump -c 100 tcp |
Захват пакетов с определенной длиной
Захват пакетов, длина которых превышает 200 байт
1 | tcpdump greater 200 |
Захват пакетов длина который меньше 200 байт
1 | tcpdump less 200 |
Захват пакетов размером от 200 до 700 байт
1 | tcpdump not less 200 and not greater 700 |
Захват пакетов с определенным MAC-адресом
Захват широковещательного трафика (пакетов с MAC-адресом назначения ff:ff:ff:ff:ff:ff)
1 | tcpdump ether dst ff:ff:ff:ff:ff:ff |
Захват пакетов между 2f:c0:1b:21:4a:c4 и 7a:f4:2b:96:0b:41 в обоих направлениях
1 | tcpdump ether host 2f:c0:1b:21:4a:c4 and ether host 7a:f4:2b:96:0b:41 |
Захват пакетов, отправленных или полученных 2f:c0:1b:21:4a:c4
1 | tcpdump ether host 2f:c0:1b:21:4a:c4 |
Вывод содержимого пакетов
Вывод содержимого TCP-пакетов в формате ASCII
1 | tcpdump -A tcp |
Вывод содержимого пакетов в HEX формате
1 | tcpdump -X |
Сохранение захваченных пакетов в файл (pcap)
Сохранить первые 1000 пакетов в файл save.pcap:
1 | tcpdump -c 1000 -w save.pcap |
Чтение PCAP файла
Чтение TCP пакетов из файла
1 | tcpdump -r save.pcap tcp |
Ротация сохранение в файл по времени и размеру
Ротация файла каждый час или каждые 500 мегабайт
1 | tcpdump -w /tmp/save -W 24 -G 3600 -C 500 |
Создаст файлы (/tmp/save00, /tmp/save01,...) за 24 часа. После этого файлы перезапишутся с самого начала.
Ротация PCAP файлов каждые 30 минут, с указанием временных меток
1 | tcpdump -w /tmp/save-%Y-%m-%d_%H-%M.pcap -G 1800 |
Захват пакетов с высокой точностью временных меток
По умолчанию tcpdump использует микросекунды для временных меток пакетов. Tcpdump 4.6 или более поздней версии поддерживает отметку времени в наносекундах.
1 | tcpdump --time-stamp-precision nano |
Захват пакетов с различными форматами временных меток
Временная метка в формате Unix (в секундах с 1 января 1970 г.)
1 | tcpdump -tt |
Временная метка в формате дата, часы, минуты, секунды и микросекунды
1 | tcpdump -tttt |
Относительная временная метка (с момента захвата первого пакета)
1 | tcpdump -ttttt |
Временная метка в определенном часовом поясе
1 | TZ=Asia/Seoul tcpdump |
1 | TZ=Europe/Moscow tcpdump |
Захват пакетов с определенными флагами
tcpdump позволяет вам проверять произвольные диапазоны байтов в пакете. Используя эту возможность, tcpdump позволяет перехватывать пакеты TCP с определенными флагами в их заголовках.
Захват TCP SYN пакетов
1 | tcpdump "tcp[tcpflags] & (tcp-syn) != 0" |