Последнее изменение файла: 2007.08.15
Скопировано с www.bog.pp.ru: 2023.10.01
Bog BOS: Анализ сетевого трафика
Анализ сетевого трафика позволяет выявить такие существующие в сети проблемы или симптомы, как
повторная передача, застрявшее TCP-окно, широковещательный шторм): tcpdump,
wireshark (ethereal), snoop.
Утилита tcpdump позволяет наблюдать за существующим сетевым трафиком,
дешифрует заголовки и данные пакетов, позволяет сохранять трафик в файл для
последующего анализа.
Требует наличия библиотеки libpcap. В командной строке может задаваться фильтр пакетов.
Ключи (версия 3.9.4):
-A (выдавать весь пакет, кроме канального заголовка, в текстовом виде)
-c число-пакетов (прекратить работу после захвата указанного числа пакетов)
-C МБ (максимальный размер файла для сохранения трафика,
при превышении создаётся следующий файл)
-d (вывести фильтр в гуманном виде)
-dd (вывести фильтр в виде кода на C)
-D (вывести список доступных сетевых интерфейсов)
-e (вывести канальный заголовок)
-E spi@IP-адрес алгоритм:пароль (дешифровать пакеты IPsec ESP для указанного адреса с указанным
spi (Security Parameter Index))
-f (не преобразовывать нелокальные IP-адреса в имена)
-F имя-файла (прочитать фильтр из файла)
-i имя-интерфейса-или-номер (можно указывать псевдоинтерфейс "any", но из него можно читать
только свои пакеты)
-l (буферизовать вывод)
-L (вывести список известных типов канала для указанного интерфейса)
-M пароль (используется для верификации подписанных TCP пакетов по RFC-2385)
-n (не преобразовывать IP-адреса в имена)
-nn (не преобразовывать номера портов и протоколов в имена)
-N (не выводить домены в именах хостов)
-O (не использовать оптимизатор фильтров)
-p (не переводить интерфейс в режим прослушивания чужих пакетов;
однако, интерфейс уже может быть в этом режиме)
-q (выводить меньше информации)
-r имя-файла (читать из файла ранее сохранённый там трафик; стандартный ввод: "-")
-S (выводить абсолютные номера последовательности TCP)
-s байт (68; захватывать указанное число байт; 0 - весь пакет)
-T тип (задать явно тип пакета: rpc, rtp, rtcp, snmp, tftp и др.)
-t (не выводить временные отметки)
-tt (выводить временные отметки в необработанном виде)
-ttt (выводить временные отметки относительно предыдущей строки)
-u (выводить NFS в необработанном виде)
-U (выводить в файл попакетно)
-v (выводить больше информации: TTL, длина; проверка контрольных сумм IP и ICMP)
-vv (ещё больше информации: декодирование NFS и SMB)
-vvv
-w имя-файла (выводить захваченные пакеты в файл; стандартный вывод: "-")
-W макс-число-файлов (в дополнение к ключу "-C"; затем запись идёт опять в первый файл)
-x (вывести содержимое пакета, кроме канального заголовка, в 16-ричном виде)
-xx (вывести содержимое пакета в 16-ричном виде)
-X (вывести содержимое пакета, кроме канального заголовка, в 16-ричном и текстовом виде)
-XX (вывести содержимое пакета в 16-ричном и текстовом виде)
-y (установить тип канала; см. -L)
-Z имя (-Z pcap; сменить пользователя после запуска)
Фильтр представляет собой логической выражение ("and" или "&&",
"or" или "||", "not" или "!",
можно использовать скобки), составленое из следующих примитивов (в реальности,
язык туманен и неоднозначен, развитые правила умолчания привели к необходимости ключа '-d';
кстати, заметьте 'or' и 'and' между 'src' и 'dst' ;):
[ dst | src | src or dst | src and dst ] host имя-или-адрес
{ether | wlan | ip | arp | rarp | tcp | udp} { dst | src | src or dst | src and dst } [host] имя-или-адрес
gateway имя-или-адрес (эквивалент: ether host MAC-адрес and not host имя-или-адрес)
[dst | src | src or dst | src and dst ] net { адрес-сети [mask маска] | адрес-сети/длина }
{ dst | src | src or dst | src and dst } port номер-порта
{ dst | src | src or dst | src and dst } portrange от-до
{ less | greater } размер-пакета (равенство также устраивает; "len <= размер")
ip proto { tcp | udp | icmp | icmp6 | igmp | igrp | pim | ah | esp | vrrp } (ключевые слова
tcp, udp и icmp необходимо предварять символом '\')
ether proto имя-протокола (ip, ip6, arp, rarp, atalk, aarp, decnet,
sca, lat, mopdl, moprc, iso, stp, ipx, netbeui;
ключевые слова необходимо предварять символом '\')
{ ether | ip } {broadcast | multicast}
vlan [идентификатор]
mpls
pppoed (PPP-over-Ethernet Discovery)
pppoes (PPP-over-Ethernet Session)
выражение1 операция-отношения выражение2
Операции отношения: >, <, >=, <=, =, !=.
Выражения строятся из целых констант без знака, вычислительных операций
(+, -, *, /, &, |, <<, >>), оператора len (длина пакета) и вырезок
из пакета:
протокол '[' выражение-смещения : размер ']'
Для некоторых выражений имеются сокращения:
icmptype (и значения), icmpcode, tcpflags (и значения).