Блог ИТ склеротика. Bog BOS: Анализ сетевого трафика

Страницы

Расширенный поиск в статьях блога

15 апреля 2012 г.

Bog BOS: Анализ сетевого трафика

Анализ сетевого трафика позволяет выявить такие существующие в сети проблемы или симптомы, как повторная передача, застрявшее TCP-окно, широковещательный шторм): tcpdump, wireshark (ethereal), snoop.

Системные средства

ifconfig, netstat, /proc/net.

Утилита захвата трафика tcpdump

Утилита 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 имя-модуля (загрузить описание SNMP MIB модуля)
  • -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 (и значения).

Вариант для MS Windows - windump (winpcap).

Графическая программа захвата и анализа пакетов wireshark

Графическая программа захвата и анализа пакетов wireshark (до размолвки ethereal).

NetLogger

tcptrace

ntop

Ссылки

  • Network Performance Open Source Toolkit: Using Netperf, tcptrace, NISTnet, and SSFNet. 2003. Blum R.

.

Счетчик тИЦ и PR Яндекс.Метрика Msn bot last visit powered by MyPagerank.NetYahoo bot last visit powered by MyPagerank.Net ping fast  my blog, website, or RSS feed for Free