Утилита tcpdump

03.05.2020

Теги: CLILinuxКомандаСетевойИнтерфейс

Утилита tcpdump есть практически в любом дистрибутиве Linux. Она позволяет перехватывать все пакеты трафика и сохранять их в файл для дальнейшего анализа. Если утилита вызвана для прослушивания некоторого интерфейса, она переводит его в «неразборчивый режим». В этом режиме интерфейс ловит вообще все пакеты, которые до него добрались, а не только пакеты, адресованные непосредственно ему.

Синтаксис

# tcpdump [опции] [фильтры]

Опции

  • -i — Какой сетевой интерфейс использовать для захвата пакетов. Если интерфейс не указан, будет использован первый попавшийся. Можно использовать any для выбора всех интерфейсов.
  • -D — Показать список сетевых интерфейсов, доступных для прослушивания.
  • -n — Отключить преобразование ip-адресов в доменные имена. Если указано -nn, то запрещается преобразование номеров портов в название протокола.
  • -p — Не переводить интерфейс в режим приема всех пакетов (promiscuous mode). То есть захватывать только трафик, предназначенный данному узлу. По-умолчанию — захват всех пакетов, которые добрались до узла, в том числе широковещательных.
  • -q — Переход в бесшумный режим, т.е. показывать минимальное количество информации о пакете.
  • -v, -vv, -vvv — Показывать больше (еще больше, еще больше) информации о пакетах.
  • -t — Не показывать метку времени в каждой строке.
  • -e — Отображать данные канального уровня (MAC-адрес, протокол, длина пакета) помимо IP-адресов.
  • -c — Получить только указанное количество пакетов, а затем остановить.
  • -w — Имя файла, в который нужно записывать собранную информацию.
  • -r — Имя файла, из которого нужно прочитать собранную информацию.

Фильтры позволяют указать:

  • хост, сеть и порт (host, net, port и portrange)
  • откуда и/или куда идут пакеты (src и dst)
  • протокол (ip, arp, rarp, tcp, udp, icmp и другие)

Кроме того, условия фильтрации можно комбинировать с использованием ключевых слов or, and и not.

Популярные фильтры

  • dst хост — Проверяет, совпадает ли адрес получателя IP-пакета с указанным значением. Значение можно задавать как IP-адрес, подсеть в формате 10.0.0.1/24, так и имя хоста.
  • src хост — Проверяет, совпадает ли адрес отправителя IP пакета с указанным значением. Значение можно задавать как IP-адрес, подсеть в формате 10.0.0.1/24, так и имя хоста.
  • host хост — Проверяет, совпадает ли адрес отправителя или получателя с заданным значением. Значение можно задавать как IP-адрес, подсеть в формате 10.0.0.1/24, так и имя хоста.
  • net сеть — Проверяет, находится ли адрес отправителя или получателя в заданной сети. Возможно указание сети в формате 10.0.0.1/24, либо указание имени сети, заданной в файле /etc/networks.
  • ip | arp | rarp | tcp | udp | icmp [хост] — Проверяет, принадлежит ли пакет одному из указанных протоколов и при указании адреса хоста проверяет, совпадает ли адрес отправителя/получателя с заданным. Возможно задавать как IP, подсеть в формате 10.0.0.1/24, так и имя хоста.
  • [tcp | udp] dst port порт — Проверяет, принадлежит ли пакет протоколу TCP/UDP и равен ли порт назначения заданному. Можно указать номер порта, либо имя, заданное в файле /etc/services.
  • [tcp | udp] src port порт — Проверяет, принадлежит ли пакет протоколу TCP/UDP и равен ли порт источника заданному. Можно указать номер порта, либо имя, заданное в файле /etc/services.
  • [tcp | udp] port порт — Проверяет, принадлежит ли пакет протоколу TCP/UDP и равен ли порт назначения или источника заданному. Можно указать номер порта, либо имя, заданное в файле /etc/services.
  • ip broadcast — Проверяет, является ли IP пакет широковещательным.
  • ether [src | dst | host] MAC-адрес — Проверяет, принадлежит ли Ethernet-кадр источнику, назначению, источнику или назначению, имеющему заданный MAC-адрес.
  • ether broadcast — Проверяет, является ли Ethernet-кадр широковещательным.

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

Трафик хоста 123.123.123.123, будь то источник пакетов или их место назначения:

# tcpdump -i eth0 host 123.123.123.123

Выделить трафик на основе адреса источника или пункта назначения:

# tcpdump -i eth0 src 111.111.111.111
# tcpdump -i eth0 dst 222.222.222.222

Найти пакеты, идущие в определенную сеть или из определенной сети:

# tcpdump -i eth0 net 192.168.100.0/24

Показать трафик, связанный с определенным портом:

# tcpdump -i eth0 port 3389

Найти трафик с помощью указания протокола:

# tcpdump -i eth0 icmp

Трафик, связанный с определенным протоколом и портом назначения:

# tcpdump -i eth0 tcp dst port 3389

Найти весь трафик с хоста 123.123.123.123 на порт 3389:

# tcpdump -i eth0 src 123.123.123.123 and dst port 3389

Показать кадры Ethernet, идущие с определённого MAC-адреса:

# tcpdump -i eth0 ether src c0:b6:f9:da:af:3e

Показать кадры Ethernet, идущие на определённый MAC-адрес:

# tcpdump -i eth0 ether dst c0:b6:f9:da:af:3e

Показать кадры Ethernet, идущие с/на определённый MAC-адрес:

# tcpdump -i eth0 ether host c0:b6:f9:da:af:3e

Трафик, идущий с хоста 123.123.123.123 в сеть 192.168.100.0/24 или в сеть 192.168.200.0/24

# tcpdump src host 123.123.123.123 and \(dst net 192.168.100.0/24 or 192.168.200.0/24\)

Поиск: CLI • Linux • Команда • Сетевой интерфейс • Фильтр • tcpdump • Протокол • Пакет • Кадр

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.