tcpdump инструкция на русском и примеры.
-A задает вывод каждого пакета (без заголовков канального уровня) в формате ASCII. Этот режим удобен для сбора трафика HTTP.
-c <число пакетов> задает завершение работы программы после захвата заданного числа пакетов.
-C <размер файла> задает необходимость проверки размера файла захвата перед записью в него каждого нового пакета. Если размер файла превышает значение параметра file_size, этот файл закрывается
и создается новый файл для записи в него пакетов. Для файлов захвата используется имя, заданное параметром -w и, начиная со второго файла к имени добавляется в качестве
суффикса номер файла. Переменная file_size задает размер файла в миллионах байтов (не в мегабайтах = 1 048 576 байт).
-d задает вывод дампа скомпилированного кода соответствия пакетов (packet-matching code) в понятном человеку формате и завершение работы программы.
-dd выводит дамп кода соответствия в виде фрагмента C-программы.
-ddd выводит дамп кода соответствия в виде строки десятичных значений, перед которой следует строка со значением счетчика.
-D выводит список сетевых интерфейсов системы, с которых tcpdump может собирать пакеты. Для каждого сетевого интерфейса указывается имя и номер, за которыми может следовать
текстовое описание интерфейса. Имя и номер интерфейса могут использоваться с флагом -i для задания сбора пакетов с одного интерфейса.
Эта опция может быть весьма полезна для систем, не дающих информации об имеющихся сетевых интерфейсах3.
Флаг -D не поддерживается, если программа tcpdump была скомпилирована со старой версией libpcap, которая не поддерживает функцию pcap_findalldevs().
-e выводит заголовок канального уровня в каждой строке дампа.
-E задает использование алгоритма и секрета spi@ipaddr для расшифровки пакетов IPsec ESP, направленных по адресу ipaddr и содержащих and в поле Security Parameter Index значение
spi. Комбинация spi и адреса может быть повторена с использованием в качестве разделителя запятой или новой строки. Отметим, что установка секрета для пакетов IPv4 ESP в
настоящее время поддерживается.
В качестве алгоритмов могут использоваться des-cbc, 3des-cbc, blowfish-cbc, rc3-cbc, cast128-cbc или none. По умолчанию применяется алгоритм des-cbc. Возможность дешифровки
пакетов обеспечивается только в тех случаях, когда при компиляции tcpdump были включены опции поддержки криптографии.
Параметр secret содержит ASCII-текст секретного ключа ESP. Если секрет начинается с символов 0x, будет считываться шестнадцатеричное значение. Опция предполагает использование
ESP в соответствии с RFC 2406, а не RFC 1827. Эта опция поддерживается только для отладки и использовать ее с реальными секретными ключами не следует, поскольку введенный в
командной строке ключ IPsec доступен другим пользователям системы4.
Кроме явного указания параметров в командной строке их можно задать в файле опций, который tcpdump будет читать при получении первого пакета ESP.
-f задает вывод чужих адресов IPv4 в числовом формате. Использование этой опции позволяет избавиться от проблем, возникающих на серверах Sun NIS при попытках трансляции
нелокальных адресов. Проверка чужеродности адреса IPv4 осуществляется с использованием адреса и маски принявшего пакет интерфейса. Если адрес и маска интерфейса недоступны
(например, при использовании unnumbered-интерфейсов или при захвате пакетов со всех адресов в Linux с использованием фиктивного интерфейса any), эта опция будет работать
некорректно.
-F <файл> задает использование фильтров, содержащихся в указанном файле. В этом случае заданные в командной строке фильтры игнорируются.
-i <интерфейс> задает сбор пакетов с указанного интерфейса. Если интерфейс не задан, tcpdump ищет в системе список доступных интерфейсов и выбирает в нем активное устройство с минимальным
номером (исключая loopback).
В системах Linux, начиная с ядра 2.2 поддерживается фиктивный интерфейс с именем any, обеспечивающий сбор пакетов со всех активных интерфейсов системы. Отметим, что сбор
пакетов с устройства any осуществляется в обычном (не promiscuous) режиме.
Если в системе поддерживается флаг -D, можно в качестве аргумента задавать номер интерфейса, выводимый при использовании этого флага.
-l задает буферизацию строк stdout. Эта опция полезна в тех случаях, когда вы хотите просматривать данные во время сбора пакетов. Например, команды
tcpdump -l | tee dat
или
tcpdump -l > dat & tail -f dat
обеспечивают запись пакетов в файл dat и одновременный вывод на консоль.
-L задает вывод списка известных типов канального уровня и завершение работы программы.
-m <файл> загружает модуль определений SMI MIB из указанного файла. Эта опция может использоваться неоднократно для загрузки нескольких модулей MIB.
-n отключает преобразование адресов и номеров портов в символьные имена.
-N задает использование только имен хостов, а не полных доменных имен. Например, вместо lhotze.bilim-systems.net при использовании этой опции моя рабочая станция будет
обозначаться как lhotze.
-O отключает оптимизатор кода проверки соответствия пакетов условиям фильтрации. Используйте эту опцию, если вам покажется, что оптимизатор работает с ошибками.
-p указывает программе, что интерфейс не нужно переводить в режим захвата5. Опцию -p нельзя использовать вместе с фильтром ether host {local-hw-addr} or ether broadcast.
-q задает вывод минимального объема информации.
-R при установке этого флага предполагается, что пакеты ESP/AH используют старый вариант спецификации6 и tcpdump не будет выводить поля replay prevention (защита от
воспроизведения). Поскольку спецификация ESP/AH не включает поля с номером версии, tcpdump не может определить версию протокола ESP/AH по заголовкам пакетов.
-r <файл> задает чтение данных из файла, созданного ранее с использованием команды tcpdump -w или с помощью другой программы, поддерживающей формат tcpdump (например, Ethereal). Если в
качестве имени файла задан символ -, используется поток данных от стандартного устройства ввода (stdin).
-S задает вывод абсолютных порядковых номеров TCP взамен относительных.
-s задает захват из каждого пакета snaplen байтов вместо отбираемых по умолчанию 68 байтов7. Значение 68 подходит для протоколов IP, ICMP, TCP и UDP но может приводить к потере
протокольной информации для некоторых пакетов DNS и NFS. Потеря части пакетов по причине малого размера кадра захвата (snapshot) указывается в выходных данных полями вида
[|proto]’, где proto – имя протокольного уровня, на котором произошло отсечение части пакета8. Отметим, что увеличение кадра захвата приведет к дополнительным временным
затратам на обработку пакетов и уменьшению числа буферизуемых пакетов, что может привести к потере части пакетов. Используйте минимальное значение snaplen, которое позволит
обойтись без потери информации об интересующем вас протоколе. Установка snaplen = 0 приведет к захвату полных пакетов.
-T <тип> задает интерпретацию пакетов, выбранных с помощью фильтра, как пакетов указанного параметром типа. В настоящее время поддерживаются типы aodv9, cnfp10, rpc11, rtp12, rtcp13,
snmp14, tftp15, vat16 и wb17.
-t отключает вывод временных меток в каждой строке дампа.
-tt задает вывод в каждой строке дампа неформатированных временных меток.
-ttt задает вывод временных интервалов (в микросекундах) между захватом предыдущего и данного пакетов в каждой строке дампа.
-tttt задает вывод временных меток в принятом по умолчанию формате для каждой строки дампа.
-u задает вывод манипуляторов (handle) NFS без декодирования.
-U задает режим “буферизации на уровне пакетов” для файлов, сохраняемых с помощью опции -w. В этом режиме каждый пакет записывается в выходной файл как только он будет захвачен
(не дожидаясь заполнения выходного буфера). Флаг -U не будет поддерживаться, если программа tcpdump была скомпилирована со старой опцией libpcap, не поддерживающей функцию
pcap_dump_flush().
-v задает вывод дополнительной информации при захвате файлов. К такой информации может относиться значение TTL (время жизни), идентификация, общий размер, опции IP и т. п. При
использовании этого флага также выполняется дополнительная проверка целостности пакетов с помощью контрольных сумм (например, для протоколов IP и ICMP).
-vv задает дополнительное увеличение объема выводимой информации (например, полное декодирование пакетов SMB, вывод дополнительных полей откликов NFS и т. п.).
-vvv задает максимальный объем выводимой информации (например, полностью выводятся опции telnet SB … SE). При использовании вместе с ключом -X опции Telnet выводятся также в
шестнадцатеричном представлении.
-w <файл> задает запись необработанных (raw) пакетов. Собранные в файл пакеты можно впоследствии просматривать с использованием флага -r или передавать для анализа другим программам
(например, Ethereal). Если в качестве имени файла указан символ -, запись осуществляется на стандартное устройство вывода (stdout).
-x задает вывод шестнадцатеричного дампа (без заголовка канального уровня) для каждого захваченного пакета. Объем выводимой информации определяется меньшим из двух значений —
размер пакета и значение параметра snaplen. Отметим, что при захвате полных кадров канального уровня дамп может включать также байты заполнения, если пакет сетевого уровня
имеет малый размер.
-xx задает вывод шестнадцатеричного дампа для каждого пакета с включением заголовков канального уровня.
-X задает вывод дампа в шестнадцатеричном и ASCII-формате без заголовков канального уровня. Эта опция может быть очень удобна при анализе новых протоколов.
-XX задает вывод дампа в шестнадцатеричном и ASCII-формате с включением заголовков канального уровня.
-y <тип> задает тип канального уровня, используемого при захвате пакетов. Поддерживаемые значения можно посмотреть с помощью флага -L.
Примеры.
- Ловим весь исходящий трафик
tcpdump -i re0 -n -nn -ttt dst host 192.168.1.2
- Ловим весь исходящий трафик кроме нашей ssh сессии ибо очень большой поток данных получается.
tcpdump -i re0 -n -nn -ttt ‘dst host 192.168.1.110 and not ( src host 192.168.1.2 and dst port 22 )’
- Просмотр общения dns
tcpdump -i re0 -n -nn -ttt ‘host 192.168.1.110 and port 53’
- Просмотр icmp пакетов
tcpdump -i re0 -n -nn -ttt ‘ip proto \icmp’
- Трафик переходящий из сети 10.7.20 с назначением на сети 10.7.0. или 10.7.24.:
tcpdump -nvX src net 10.7.20.0.0/16 and dst net 10.7.0.0/8 or 10.7.24.0/16
- Трафик идущий с сети 10.7.0.0 на порты назначения 22 или 4589:
tcpdump ’src 10.7.0.0 and (dst port 22 or 4589)’
- Посмотреть трафик на интерфейсе:
tcpdump -i reo
- посмотреть трафик одного хоста:
tcpdump host 192.168.1.1
- Посмотреть трафик на порте:
tcpdump src port 80
- Посмотреть IP трафик на хост:
tcpdump ip host 192.168.1.2
- Посмотреть ARP трафик на хост:
tcpdump arp host 192.168.1.2
- Смотрим RARP трафик на хост:
tcpdump rarp host 192.168.1.2
- Смотрим трафик, кроме хоста pav253
tcpdump not host pav253
- Смотрим трафик на pav253 и pav210
tcpdump host pav253 or host pav210
- Смотрим содержимое пакетов на интерфейсе re0 на хост likeunix.ru
tcpdump -X -i re0 host likeunix.ru
- icq трафик
tcpdump -X -i re0 port aol
- Смотрим содержимое пакетов на интерфейсе tun0 на хост ya.ru, при этом прочитать из каждого пакета по 1500 байт и не преобразовывать IP в имя хоста
tcpdump -X -s 1500 -n -i re0 host likeunix.ru
- Top активных взимодействий
tcpdump -tn -c 10000 -i re0 tcp or udp | awk -F «.» ‘{print $1″.»$2″.»$3″.»$4}’ | \ sort | uniq -c | sort -nr | awk ‘$1 > 100’
- Смотрим все TCP пакеты с флагом SYN (начало сессии).
tcpdump -i eth0 -nn tcp[13] == 2 and src net 192.168.1.0/24
- Просмотр syn и fin пакетов из вне
tcpdump ‘tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net 192.168.1.0’
- Просмотр все ipv4 http пакеты с порта 80, кроме syn / fin / ack данных
tcpdump ‘tcp port 80 and (((ip[2:2] — ((ip[0]&0xf)<>2)) != 0)’
- Просмотр только syn пакеты
tcpdump -i re0 tcp[13] == 2
Top активных взимодействий
tcpdump -tn -c 10000 -i re0 tcp or udp | awk -F «.» ‘{print $1″.»$2″.»$3″.»$4}’ | \ sort | uniq -c | sort -nr | awk ‘$1 > 100’
Выдаёт:
bash: sort: команда не найдена
awk: ‘
awk: ^ invalid char ‘▒’ in expression
awk: ‘{print
awk: ^ invalid char ‘▒’ in expression
tcpdump: re0: No such device exists
(SIOCGIFHWADDR: No such device)
Конечно, в рамках одной статьи надо-бы использовать одно название интерфейса, а не зоопарк. Ну и с кавычками да… Беда…