Tcpdump в linux. Примеры использования.

Утилита tcpdump является удобным средством анализа сетевых проблем. Она позволяет перехватывать сетевой трафик компьютера, на котором установлена, для дальнейшего анализа. В статье описаны примеры использования утилиты для операционной системы linux.

Полную справку по утилите можно получить по команде man tcpdump.

Рассмотрим примеры наиболее часто используемых ключей tcpdump в linux:

-i - указание интерфейса, с которого собираем трафик
-s - количество байт пакета, отбрасываемых tcpdump. По умолчанию устанавливаем в 0 для отображения содержимого всего пакета. Однако, при большом потоке трафика это может увеличить нагрузку на систему и время обработки каждого пакета.
-w - запись пакетов в файл, вместо того, чтобы парсить их и отображать на экране. Я обычно записываю дампы с ключом -w и потом просматриваю их при помощи wireshark, который дает обширные возможности для анализа.
-r - позволяет tcpdump прочесть трафик из файла, записанного с ключом -w.

tcpdump -s 0 -i eth01 -w dump.cap

запишет дамп dump.cap c полным размером пакетов на интерфейсе eth01.

tcpdump -r dump.cap

прочитает файл дампа dump.cap и отобразит его содержимое в командной строке.

src и dst - позволяют задать IP адрес (можно использовать ключ host) и порт (ключ port) источника и получателя трафика. Для использования нескольких условий одновременно, необходимо применять операторы and (&&), or (||) и not (!). Приоритет операторов: инверсия, затем and, после - or.

tcpdump -s 0 -i eth1 dst port 80 -w dump.cap

запишет трафик на интерфейсе eth01, приходящий на 80 порт в файл дампа dump.cap c полным размером пакетов. Обратите, внимание, что в дамп попадут лишь пакеты которые приходят на 80 порт. Ответные пакеты в дамп уже не попадут, так как не удовлетворяют условиям фильтра.

Если необходимо просмотреть трафик между двумя хостами, то применяем оператор or

tcpdump -s 0 -i eth01 src 92.57.125.98 or dst 92.57.125.98 -w dump.cap

запишет трафик на интерфейсе eth01. При этом 92.57.125.98 - адрес удаленного хоста. Соответственно в файл дампа dump.cap попадет весь обмен пакетами с хостом 92.57.125.98.

Чтобы собрать трафик определенной подсети, необходимо указать подсеть с маской в десятичной форме. Следующий пример будет собирать весь трафик от подсети 92.57.125.0 255.255.255.0

tcpdump -s 0 -i eth1 src 92.57.125.0/24 -w dump.cap

Можно собрать дамп пакетов определенного протокола. Например весь трафик TCP, UDP или ICMP. Для этого необходимо указать требуемый протокол.

tcpdump -s 0 -i eth01 udp and src 92.54.115.98 -w dump.cap

запишет UDP трафик на интерфейсе eth01, приходящий с ip адреса 92.57.125.98

-n - не конвертировать IP адреса в имена хостов. Используестся чтобы избежать обращения к DNS.
-nn - отображать номер порта вместо названия протокола

Для примера рассмотрим дамп трафика на интерфейсе eth01 с адреса 92.57.125.98.

tcpdump -s 0 -i eth01 src 92.57.125.98
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on p21p1, link-type EN10MB (Ethernet), capture size 65535 bytes
08:56:16.624920 IP 98.125-57-92.telenet.ru.65261 > 192.168.100.4.ssh: Flags [.], ack 426096053, win 4129, length 0
08:56:16.836691 IP 98.125-57-92.telenet.ru.65261 > 192.168.100.4.ssh: Flags [.], ack 165, win 4088, length 0
08:56:17.046840 IP 98.125-57-92.telenet.ru.65261 > 192.168.100.4.ssh: Flags [.], ack 313, win 4051, length 0

Использование ключа -n для отображения IP адресов вместо имени хоста

tcpdump -s 0 -i eth01 -n src 92.57.125.98
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on p21p1, link-type EN10MB (Ethernet), capture size 65535 bytes
08:56:29.437372 IP 92.57.125.98.65261 > 192.168.100.4.ssh: Flags [.], ack 426100017, win 4253, length 0
08:56:29.639817 IP 92.57.125.98.65261 > 192.168.100.4.ssh: Flags [.], ack 149, win 4216, length 0
08:56:29.839783 IP 92.57.125.98.65261 > 192.168.100.4.ssh: Flags [.], ack 297, win 4179, length 0

Использование ключа -nn для отображения IP адреса и номера порта

tcpdump -s 0 -i eth01 -nn src 92.57.125.98
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on p21p1, link-type EN10MB (Ethernet), capture size 65535 bytes
08:56:38.244503 IP 92.57.125.98.65261 > 192.168.100.4.22: Flags [.], ack 426102837, win 4305, length 0
08:56:38.456577 IP 92.57.125.98.65261 > 192.168.100.4.22: Flags [.], ack 149, win 4268, length 0
08:56:38.459823 IP 92.57.125.98.65261 > 192.168.100.4.22: Flags [P.], seq 0:52, ack 297, win 4231, length 52

Мы рассмотрели наиболее часто используемые ключи и аргументы tcpdump в linux и примеры их использования. Tcpdump предоставляет гибкие средства анализа трафика, однако это уже тема отдельного материала. Если у вас есть вопросы по использованию утилиты, оставляйте их в комментариях. Я обязательно постараюсь на них ответить.

Андрей

11.07.2017

Понравилась статья? Поделитесь с друзьями!

Добавить комментарий


Защитный код
Обновить