Со временем обрывки знаний и умений становится все труднее удержать в голове. Они расползаются по уголкам памяти заполняя все свободное место. Извлекать необходимое на свет становится все сложнее. Этот блог - рабочая записная книжка.

Tuesday, October 28, 2008

Анализируй это! (capture on cisco IOS, tcpdump on cisco)

Чуть больше года назад, я уже писал о инструментах подобных tcpdump в cisco рутерах и файрволлах. Напомню вкратце, для PIX/ASA существует удобный инструмент capture  с помощью которого можно захватывать и просматривать трафик, для IOS приходилось довольствоваться командой дебаг предварительно уточнив её с помощью access-list.
В свеженькой версии IOS 12.4(20)Т появилась новый и удобный функционал решающий эту проблему более элегантно. Конечно, версия достаточно новая и мало кто рискнет поставить её в реальную работу, но рано или поздно функционал появится и в стабильных версиях.

Первым делом необходимо создать буфер в который будут складывается пойманные пакеты. Как видно из команды ниже буферов может быть много и самых разных.


// buf1 - название буфера
// size и max-size - размер буфера и максимальный размер элемента в буфере, соответственно
// circular или linear - тип буфера, будут ли старые элементы вытеснятся новыми или нет

R2#monitor capture buffer buf1 size 256 max-size 256 circular

Далее создадим "точку ловли" (capture point), которая сообщит рутеру где ожидать трафика и в каком направлении он будет двигаться.

// ip cef - метод коммутации, мы используем cef
// cappoint - название точки
// далее следует интерфейс на котором слушать и в каком направлении - в обоих

R2#monitor capture point ip cef cappoint fa 0/0 both

После создания, появится следующее сообщение с логах.

*Oct 27 15:23:23.859: %BUFCAP-6-CREATE: Capture Point cappoint created.

Следующий шаг - ассоциация созданной точки с буфером, так как и точек и буферов может быть достаточно большое количество, это просто указывает в какой буфер складывать пакеты.

// синтаксис просто, даже не знаю что писать - всё очевидно
R2#monitor capture point associate cappoint buf1

// Проверить конфигурацю можно следующей командой
R2#show monitor capture point all
Status Information for Capture Point cappoint
IPv4 CEF
Switch Path: IPv4 CEF            , Capture Buffer: buf1
Status : Inactive

Configuration:
monitor capture point ip cef cappoint FastEthernet0/0 both

Всё готово для траблшута, осталось только включить. В данный момент статус - Inactive.

// Включаем. В данном случае all, но можно включить и отдельную "точку" по имени
R2#monitor capture point start all

Появится следующее сообщение в логах.
*Oct 27 15:25:05.195: %BUFCAP-6-ENABLE: Capture Point cappoint enabled

// проверим статус еще раз, как можно заметить статус изменился на активный
R2#show monitor capture point all
Status Information for Capture Point cappoint
IPv4 CEF
Switch Path: IPv4 CEF            , Capture Buffer: buf1
Status : Active

Configuration:
monitor capture point ip cef cappoint FastEthernet0/0 both

Посмотреть что же мы там наловили можно следующей командой

R2#show monitor capture buffer buf1 dump
15:29:24.251 UTC Oct 27 2008 : IPv4 CEF Turbo  : Fa0/0 None

67BB35C0: CA000A00 0000C200 08340001 08004500  J.....B..4....E.
67BB35D0: 00640014 0000FE01 946E0A0A 0A020A0A  .d....~..n......
67BB35E0: 0A010800 EEC20004 00000000 0000000F  ....nB..........
67BB35F0: 8F74ABCD ABCDABCD ABCDABCD ABCDABCD  .t+M+M+M+M+M+M+M
67BB3600: ABCDABCD ABCDABCD ABCDABCD ABCDABCD  +M+M+M+M+M+M+M+M
67BB3610: ABCDABCD ABCDABCD ABCDABCD ABCDABCD  +M+M+M+M+M+M+M+M
67BB3620: ABCDABCD ABCDABCD ABCDABCD ABCDABCD  +M+M+M+M+M+M+M+M
67BB3630: ABCD00                               +M.

15:29:24.251 UTC Oct 27 2008 : IPv4 LES CEF    : Fa0/0 None

67BB35C0: CA000A00 0000C200 08340001 08004500  J.....B..4....E.
67BB35D0: 00640014 0000FE01 946E0A0A 0A020A0A  .d....~..n......
67BB35E0: 0A010800 EEC20004 00000000 0000000F  ....nB..........
67BB35F0: 8F74ABCD ABCDABCD ABCDABCD ABCDABCD  .t+M+M+M+M+M+M+M
67BB3600: ABCDABCD ABCDABCD ABCDABCD ABCDABCD  +M+M+M+M+M+M+M+M
67BB3610: ABCDABCD ABCDABCD ABCDABCD ABCDABCD  +M+M+M+M+M+M+M+M
67BB3620: ABCDABCD ABCDABCD ABCDABCD ABCDABCD  +M+M+M+M+M+M+M+M
67BB3630: ABCD00                               +M.


Не слишком понятно, правда? А ведь это был обычный ping, ничего более. Для упрощения анализа полученные данные можно экспортировать в формат pcap и анализировать на PC в любимом инструменте, например wireshark.

//экспорт буфера, вариантов много - tftp, ftp, scp и другие Xtp :)
R2#monitor capture buffer buf1 export (куда)

Но всё таки чего-то не хватает, зачем например собирать данные со всего интерфейса если интересует всего один IP и более того, только один протокол? Конечно решение есть. При создании буфера можно указать фильтр для отбора пакетов из потока. Делается это с помощью access-list.

R2#monitor capture buffer buf1 filter access-list (номер, имя)

4 comments:

Anonymous said...

начиная с версии 12.4(20)T1 появилась фича Embedded Packet Capture
доступна для рутеров начиная с 871 по 7301 во всех имджах

pablo said...

Это оно и есть.

Andrews said...

не плохо, попробуем при случае.

Anonymous said...

Супер статья! Подписался на RSS, буду следить =)