(назад ...)
Программа tcpdump позволяет в командной строке задать все опции сбора и отображения пакетов, а также спецификацию фильтров захвата, описанных ниже. Таблица содержит список опций tcpdump и описание каждой их них. Отметим, что некоторые опции поддерживаются не всеми платформами, на которых может использоваться программа tcpdump.
Таблица 1 Опции командной строки 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 <algo:secret> |
задает использование алгоритма и секрета 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). |
задает вывод абсолютных порядковых номеров TCP взамен относительных. |
|
задает захват из каждого пакета 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. |
3Например, Windows или UNIX-системы, в которых не поддерживается команда ifconfig -a
4Например, его можно увидеть с помощью команды ps.
5Интерфейс может быть переведен в режим захвата другими программами, поэтому использование флага -p отнюдь не гарантирует работу интерфейса в обычном режиме – программа просто не будет переводить этот интерфейс в режим захвата. Кроме того, даже в обычном режиме захватываться будут не только пакеты, адресованные этому интерфейсу, поскольку в сети всегда присутствуют широковещательные пакеты и могут использоваться пакеты с групповыми адресами (multicast).
6RFC1825 - RFC1829
7В SunOS NIT минимум составляет 96 байтов.
8Например, при захвате пакетов в сети Ethernet с помощью команда tcpdump -s 12 на выходе будут появляться строки типа 22:31:43.385357 [|ether], показывающие, что усекновение пакетов произошло на уровне Ethernet
9Протокол Ad-hoc On-demand Distance Vector.
10Протокол Cisco NetFlow.
11Протокол Remote Procedure Call (удаленный вызов процедур).
12Протокол Real-Time Applications (приложения в реальном масштабе времени).
13Протокол управления приложениями реального времени (Real-Time Applications control protocol).
14Простой протокол сетевого управления (Simple Network Management Protocol).
15Тривиальный протокол обмена файлами (Trivial File Transfer Protocol).
16Visual Audio Tool.
17Распределенные доски White Board.
далее ...
Дата обновления 14.02.2005