artem
08.11.2018
20594

Sngrep — утилита для анализа VOIP трафика

Полный обзор интерфейса, ключи запуска, способы применения.

Sngrep — утилита для анализа VOIP трафика

Нередко на сервере телефонии случаются проблемы, например: голос не ходит, транк не регистрируется на стороне провайдера, телефон теряет регистрацию. В таких случаях необходим простой и шустрый инструмент для срочной диагностики SIP-сервера, который позволит отлавливать пакеты в реалтайме с выводом основной информации, необходимой для траблшутинга. Либо возьмём другую ситуацию: когда Вы – молодой инженер, и Вам необходимо наглядное представление о работе SIP-сервера изнутри, а так же получение базовых навыков анализа и траблшутинга. Всё это sngrep – золотой грааль VoIP-инженера, о котором и пойдёт речь в данной статье.

Описание утилиты.

Sngrep — это терминальная утилита, которая отлавливает SIP (Session Initiation Protocol) пакеты в реальном времени по Caller-Id и отображает ход потоков стрелками из узла в узел, аналогично используемым в SIP RFC. Данный инструмент был призван упростить процесс анализа трафика, а также сэкономить время администратора сервера на поиск неисправностей.

Из основных возможностей утилиты следует отметить:
— Захват SIP-пакетов в реальном времени.
— Захват SIP-пакетов с различных устройств, взаимодействующих с сервером.
— Возможность чтения дампа формата .pcap
— Возможность формирования дампов формата .pcap с захватом RTP, TCP, UDP.
— Возможность формирования дампов формата .pcap с интересующим Вас трафиком из общего пула информации, захваченной в реальном времени.
— Поддержка транспортных протоколов типа: RTP, TCP, TLS, UDP.
— Возможность фильтрации с использованием BPF (Berkeley Packet Filter).

Если Вас интересует, как установить и настроить sngrep, ознакомьтесь с нашей статьёй на тему: Установка и настройка sngrep.

Обзор интерфейса утилиты.

При первом запуске программы мы видим примерно следующее:

Окно запущенной утилиты

Для того, чтобы запустить sngrep, необходимо набрать в терминале #sngrep.Теперь давайте подробно разберём статус-блок утилиты по пунктам:
Статус-блок.
Current Mode – это текущий режим запуска утилиты. В данный момент возвращается значение online [any], что свидетельствует о том, что мы собираем все пакеты в режиме реального времени. При чтении уже выгруженного дампа, значение поля будет изменено на offline.
Match Expression – выражение соответствия.
Display Filter – фильтр отображения.
Dialogs – счётчик собранных утилитой диалогов в общем.
BPF Filter – данное поле отображает статус пакетного фильтра. В нашем случае, он не активен.
Идём дальше, под статус-блоком утилиты расположен табличный блок, в который происходит вывод отловленных пакетов, подробно по всем столбцам:
Табличный блок.
^Idx – или, иначе говоря, Index. Номер пакета.
Method – тип отловленного пакета. Пакеты могут быть типа: Register, Invite, Subscribe, Notify, Options, Publish, Message.
SIP From – узел-отправитель.
— SIP To – узел-получатель.
— Msgs – количество сообщений в отдельно взятой сессии.
— Source – источник генерации сообщения.
— Destination – назначение, в которое должно прибыть сообщение.
— Call State – статус звонка.
Ещё ниже расположен блок управления утилитой, который содержит в себе:

Блок управления.

Esc – выйти в предыдущее меню либо из sngrep.
Enter – применить изменения/посмотреть call-flow выбранного пакета.
Space – выделить необходимый пакет/пункт меню, а так же снять выделение.
F1 – вызвать help.
F2 – сохранить дамп с указанием параметров.
F3 – поиск по заданным значениям в рамках дампа.
F4 – отобразить полную информацию по call-flow.
F5 – удалить дамп.
F6 – отобразить дамп в текстовом формате.
F7 – активировать расширенный фильтр пакетов с указанием параметров.
F8 – настройки отображения интерфейса утилиты.
F10 – настройка отображаемых параметров таблицы.
Далее, откроем при помощи Enter один из пакетов нашего дампа. Я выбрал пакет опций:

Пакет опций в раскрытом виде.
В блоке слева расположена call-flow diagram, которая наглядно показывает движение пакетов из узла в узел.

Call-flow диаграмма.
В блоке справа расположена информация о пакете.

Просмотр содержимого пакета.

Разберём блок управления, расположенный снизу:

Блок управления анализом пакета.
— Esc – возврат в предыдущее меню.
— Enter – отобразить только сырые данные по выбранному обращению call-flow diagram.
— Space – сравнить два обращения между собой. Работает следующим образом: выбираем нужный пакет, нажимаем Space Bar, выбираем пакет, с которым необходимо провести сравнение, на этом пакете нажимаем Space Bar, сравниваем вывод.
— F1— хэлпер.
— F2 – отобразить SDP.
— F3 – отобразить RTP.
— F4 – открыть в расширенном режиме.
— s – сжать вывод ip-addr, убрать значения портов.
— F6 – отобразить всю call-flow diagram в сыром виде.
— c – сменить цвет отображения call-flow diagram.
— 9 – сдвинуть содержимое пакета влево.
— 0 – сдвинуть содержимое пакета вправо.

Для просмотра нескольких пакетов одновременно, например, бывает полезно открыть 2 вызова одновременно. Для этого необходимо выбрать необходимые вызовы нажатием Space Bar, а затем клавишей Enter раскрыть содержимое.

Анализ двух звонков.

Описание ключей запуска.

-h or —help: отобразить справку по использованию.
-V or —version: отобразить информацию о версии утилиты.
-I or —input <filename.pcap>: прочесть дамп формата .pcap
-r or –rtp: захватывать RTP-трафик/открыть с RTP.
-O or —output <filename.pcap>: сохранить все захваченные пакеты в дамп .pcap
-d or —device <device>: захватить трафик с определённого интерфейса. По умолчанию захватывается трафик со всех интерфейсов.
-k or —keyfile <keyfile.pem>: использовать private keyfile для расшифровки TLS пакетов.
-c or —calls: отображать только диалоговые окна.
-l or —limit: лимитировать захвата трафика.
-i or —icase: сделать выражения соответствия нечувствительными к регистру.
-v or —invert: инвертировать выражения соответствия.
-N or —no-interface: не отображать интерфейс sngrep, а просто произвести захват трафика.
-q or —quiet: не выводить захваченные диалоги в режиме без интерфейса.
-D or —dump-config: вывести конфиг.

Ниже будут рассмотрены примеры классических вариантов запуска sngrep с ключами:
1) sngrep port 5060 – захват всех SIP-пакетов со всех устройств на порту 5060.
2) sngrep -d eth0 -O /tmp/sip_capture.pcap host 192.168.0.50 port 5061 – отобразить SIP-пакеты с eth0, имеющего в качестве источника или назначения адрес 192.168.0.50 через порт 5061, найти дамп в /tmp/sip_capture.pcap
3) sngrep -I /tmp/sip_capture.pcap host 10.10.1.50 – отобразить все SIP-пакеты, захваченные с хоста 10.10.1.50, найти дамп в /tmp/sip_capture.pcap

Плюсы и минусы использования sngrep.

Плюсы:
+ утилита проста в освоении.
+ утилита имеет наглядное представление хождения трафика.
+ хорошо подходит для срочного анализа дампов и скорой отладки.
+ подходит для обучения молодым VoIP-инженерам.
+ хороший базовый функционал.
+ возможность рассмотрения пакетов в связке.
+ гибкая настройка интерфейса.

Минусы:
— не подходит для глубокого анализа трафика.
— нет возможности прослушать дамп.
— не подходит для анализа большого дампа.

В рамках компенсации минусов данной утилиты был разработан мощный инструмент для анализа VoIP-трафика – Wireshark, узнать о котором Вы можете из статьи на нашем сайте.

Подведение итогов

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

Книга 101 функция Asterisk
Познакомьтесь с возможностями Asterisk. Найдите инструменты, которые помогут вашей компании развиваться.
Скачать книгу
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Остались вопросы?

Я - Виталий Шелест, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование


ближайшие курсы

10 доводов в пользу Asterisk

Распространяется бесплатно.

Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.

Безопасен в использовании.

Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.

Надежен в эксплуатации.

Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.

Гибкий в настройке.

Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.

Имеет огромный функционал.

Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.

Интегрируется с любыми системами.

То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.

Позволяет телефонизировать офис за считанные часы.

В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.

Отличная масштабируемость.

Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.

Повышает управляемость бизнеса.

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

Снижает расходы на связь.

Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.