Tamkovich.com: Телеком/VoIP блог
Современные технологии: Asterisk, SIP, Kamailio, Linux, Cisco, Linksys
Сниффер и коммутаторы (свитчи)
18 ноября, 2009 by Сергей Тамкович
Cisco, Безопасность, ЖелезоВозможно ли использовать анализатор сетевого трафика (сниффер) в сети использующей коммутаторы (свитчи)? Да, возможно, если вы являетесь администратором этого коммутатора
Рассмотрим пример из жизни: у вас есть сеть IP телефонии принимающая звонки от АТС и отправляющая их по IP дальше.

Зачастую, для решения проблем, необходимо видеть ход установления/разрыва вызовов. Для мониторинга ISDN существует масса дорогих и не очень устройств, позволяющих «встать на поток» и просмотреть всю информацию, относящуюся к Q931. Кроме того, голосовые шлюзы Cisco предоставляют удобные встроенные средства для просмотра Q931 даже на загруженном оборудовании. Делается это так:
debug condition called 1234567 debug isdn q931 ter mon
Первая команда устанавливает фильтр, отображаться будут лишь те сообщения, которые относятся к вызову на указанный номер. Фильтр можно устанавливать как на набранный номер (Б номер) так и на отдаваемый АОН (А номер). Фильтров может быть несколько, тогда информация выводится на экран, если она удовлетворяет хотя бы одному фильтру. Вторая команда, включает отладку ISDN Q931. Третья команда включает отображение отладочной информации на текущем терминале. К сожалению таких удобных встроенных средств как debug condition для отладки IP телефонии — нет, приходится пользоваться внешними средствами — сетевым анализатором. Использовать сетевой анализатор можно на роутере. Но как быть, если это не PC роутер? т.е. на нём нет Linux/FreeBSD и привычного инструментария в виде tcpdump, wireshark и ngrep? или если это роутер провайдера и доступ к нему невозможен? Как без перерывов связи подключить к схеме, преведенной выше, сетевой анализатор? Очень просто: его следует подключать к свитчу.

По умолчанию, коммутаторы, как известно, посылают ethernet фреймы, только на тот порт, на котором находится MAC адрес получателя (если он известен). Серия коммутаторов Catalyst от Cisco поддерживают технологию Catalyst SPAN (Switched Port Analyzer), которая позволяет подключать сниффер к любому порту или набору портов коммутатора.
Для начала определимся с терминологией данной технологии. Порты, трафик с которых необходимо анализировать называется порт источник. Порт, к которому подключается анализатор, называется порт приёмник. Процесс отображения трафика с порта источника на порт приёмник называется сессия мониторинга.
Как правило, коммутаторы поддерживают несколько сессий мониторинга (например, Catalyst 2960G, из примера выше, поддерживает 66 сессий). В одной сессии мониторинга может быть несколько портов источников. Источником может быть любой физический порт (e, fa, gi, te), объединение портов (EtherChanel) и т.д. Источником не может быть порт работающийй приёмником. Приёмником так же не могут быть EtherCahnnel. Настройка SPAN отличается в зависимости от модели коммутатора. Здесь я приведу настройку, для самых распространённых, на мой взгляд, моделей: 2950, 2960, 3550, 3560.
Для начала проверим список интерфейсов:
voip-cat-1#sh int descr Interface Status Protocol Description Vl1 up up Gi0/1 up up voipgw Gi0/2 up up voipgw2 Gi0/3 up up voipgw3 / conf Gi0/4 up up voipgw4 Gi0/5 up up voipdb Gi0/6 up up SIP proxy Gi0/7 up up voipgw5 Gi0/8 up up voiptest Gi0/9 up up voiptest Gi0/10 up up link to sw312 Gi0/11 up up voipdb2 Gi0/12 up up SIP proxy 2 Gi0/13 up up storage Gi0/14 down down Gi0/15 down down Gi0/16 down down Gi0/17 down down Gi0/18 down down Gi0/19 down down Gi0/20 down down Gi0/21 down down Gi0/22 down down Gi0/23 down down Gi0/24 up up Optical uplink
Если коммутатор позволяет давать портам текстовые названия — не следует этим пренебрегать. Описывайте порты и тогда вы существенно облегчите жизнь себе и своим коллегам. Предположим, что мы хотим проанализировать трафик от устройства voipgw, которое находится на первом порту. Теперь выбираем порт для подключения сниффера. Следует выбрать любой нерабочий порт, например 19ый. Теперь, когда мы определились с портами, сконфигурируем сессию мониторинга:
voip-cat-1#conf t Enter configuration commands, one per line. End with CNTL/Z. voip-cat-1(config)#monitor session 1 source interface gi0/1 voip-cat-1(config)#monitor session 1 destination interface gi0/19 voip-cat-1(config)#^Z
Посмотрим параметры сессии:
voip-cat-1#sh monitor session 1 Session 1 --------- Type : Local Session Source Ports : Both : Gi0/1 Destination Ports : Gi0/19 Encapsulation : Native Ingress : Disabled
Вот и всё! Теперь можно подключать ноутбук с любимым wireshark к 19 порту, и смотреть входящий и исходящий ethernet трафик от устройства voipgw. Кстати СОРМы подключаются точно так же. Если есть свободный ethernet порт на несильно загруженном сервере, то можно подключить этот порт к коммутатору, тогда всю процедуру анализа трафика можно будет осуществлять удалённо, перенастраивая сессию мониторинга на лету.
Пара слов о Wireshark
Wireshark имеет 2 набора фильтров. Первый называется просто и незатейливо — Filter. Строка для редактирования этого фильтра находится в основном окне сверху.

Этот фильтр отображения пакетов, поддерживающий кучу протоколов и форматов данных. Например, с помощью фильтра:
q931.called_party_number.digits == "74951234567"
Можно выбрать все пакеты содержащие h323 вызов (SETUP) на номер 74951234567, а с помощью такого:
q931.call_ref == 4f:f9
Все пакеты относящиеся к звонку с call reference равным 4f:f9 от начального SETUP до финального RELEASE COMPLETE. Гибкость фильтров отображения компенсируется их медлительностью. Не следует использовать эти фильтры на «живом захвате». Для уменьшения объёма анализируемого трафика существует другой набор фильтров — capture filter.

Capture filter настраивается в окне Wireshark: Capture Options. Фильтр захвата, не предоставляет той гибкости, которая есть у фильтров отображения, он предназначен для работы на «живом захвате» — для отбрасывания «неинтересного» трафика. Синтаксис capture filter идентичен синтаксису фильтров tcpdump. Например, вот такой фильтр:
host 10.1.1.1 or host 10.1.2.2
позволит захватить только тот трафик, который относится к указанным хостам. Использование capture filter крайне рекомендовано при анализе трафика с нагруженных систем. С помощью этих фильтров вы существенно снизите количество захваченных пакетов, а значит, ускорите работу фильтров отображения.
Cisco, Безопасность, Железо
Спасибо за полезную статью.