WireShark по сути не только самый удобный инструмент для анализа SIP, но и единственный мне знакомый. Если кто знает еще инструменты, пишите в комментариях. Во многих моделях АТС WireShark жу встроен. Если в вашей АТС не встроенного трассировщика, выдающего дампы в формате WireShark, то зеркалируйте порт на коммутаторе, подключайте ПК в этот порт, запускайте на нем WireShark и снимайте дампы.
Начнем изучать WireShark для IP-телефонии мы с регистрации транка. Ну или вообще любого устройства на SIP-сервере. Это может быть как IP-телефон, так и АТС. Итак, вы сняли трассировку вашей регистрации и открыли ее.
Не пугайтесь. Тут просто все вместе навалено, потому что мы не фильтровали заранее на самом оборудовании. Давайте отфильтруем в WireShark. Нас же интересует протокол SIP? Вот по нему и будем фильтровать. Вбиваем SIP в окошко для фильтра.
И вот уже гораздо веселее. Это пакетный режим отображения файлов. То есть, каждая строка — это пакет. Обратите внимание на Время (Time). Ничего не понятно, да? Давайте настроим удобное нам отображение. Для этого в верхнем меню нашего WireShark нажимаем Вид/Формат отображения времени.
И выберем удобный нам формат WireShark.
С временем разобрались. Идем дальше.
- Источник отправления пакета
- Получатель пакета
- Протокол
- Само сообщение
В этом интерфейсе WireShark мы можем фильтровать не только по протоколу, но и по всем этим полям.
Например:
ip.addr==192.168.117.197
Найти все строки с указанным адресом. И вот мы уже видим.
Или
ip.src==192.168.117.197
Найти все строки с указанным адресом источника
Вот список всех нужных вам фильтры WireShark:
- ip.addr==192.168.117.197 – найти все строки с указанным адресом
- ip.src==192.168.117.197 – найти все строки с указанным адресом источника
- ip.dst==192.168.117.197 – найти все строки с указанным адресом получателя
- eth.addr == 00:1a:6b:ce:fc:bb – найти все строки с указанным MAC-адресом. Удобно искать конкретный терминал
- eth.src == 00:1a:6b:ce:fc:bb – найти все строки с указанным MAC-адресом источника
- eth.dst == 00:1a:6b:ce:fc:bb – найти все строки с указанным MAC-адресом получателя
- udp.port ==5060 – найти все строки с указанным SIP-портом. Удобно отсеивать SIP-трафик
Вернемся к фильтру по протоколу SIP WireShark.
Пакеты пронумеровал сам WireShark. Ориентируемся на них:
394. Пакет запроса на регистрацию. С IP-адреса 192.168.117.197 на IP адрес 192.168.117.203
395. Ответное сообщение об отсутствии авторизации.
396. Еще одна строка регистрации, но уже с авторизацией. Тут авторизацию не видно, но мы позже это увидим.
397. Сообщение 200ОК. Это значит, что регистрация прошла успешно.
А теперь давайте переключим пакетный режим WireShark в диалоговый. Он куда нагляднее! Для этого жмем ПКМ на первом пакете нашего диалога. Выбираем Отслеживать UDP поток.
И вот мы уже видим приятный для глаз диалоговый режим WireShark.
Это те же 4 пакета, только в развернутом виде и с разными цветами для удобства. Оранжевый — источник, а синий — получатель.
Это идеальный диалог регистрации SIP в WireShark. Давайте разберем его.
В первом сообщении нас интересует эти строки:
- Запрос на регистрацию по указанному адресу
- От какой учетной записи идет запрос
- На какую учетную запись идет запрос (они чаще всего совпадают)
- Тут указан производитель устройства.
- Интервал повторного запроса на регистрацию. Тут стоит 1800 сек. А значит, устройство будет каждые пол часа слать новый запрос на регистрацию. Этот параметр важен и обсуждается с провайдером.
- А тут указан источник.
Как вы уже заметили в WireShark, тут регистрация идет по следующим параметрам, которые задал нам оператор SIP-телефонии.
- IP-адрес SIP-сервера: 192.168.117.203
- ID: 74954444444
- Интервал повторного запроса на регистрацию: 1800 секунд.
После этого сообщения, провайдер нам присылает сообщение 401 Unauthorized. По сути это приглашение авторизоваться. То есть прислать Username и пароль. И мы шлем это следующим пакетом.
Обратите внимание, это сообщение в WireShark очень похоже на первое. Но тут добавляется строка авторизации. Тут виден наш Username, он совпадает с ID чаще всего и с номером телефона. Пароля тут не видно, он зашифрован алгоритмом MD5.
Вот после этого, нам сервер присылает 200ОК.
А что нам пришлет оператор, если данные учетной записи неправильные? Давайте чуть изменим пароль и посмотрим:
403 Forbidden. То есть, запрещено. Без объяснения причины, между прочим. Такое сообщение означает, что провайдер вам просто запрещает регистрацию. С вашей стороны нужно проверить учетные данные. И если сомнений нет, писать провайдеру с просьбой прокомментировать 403 Forbidden. Можно приложить ему этот кусок дампа из WireShark.
Какие еще бывают сообщения от провайдера в WireShark, кроме 200ОК:
400 Bad Request – ошибки в синтаксисе
401 Expired Authorization — время регистрации истекло
403 Forbidden — ошибка в данных (логин, пароль, порт, долг)
404 Not found – нет такого пользователя
500 Internal Server Error — внутренняя ошибка сервера (это не ваша проблема)
503 Service Unavailable – сервер не работает (тоже не ваша)
А теперь, давайте разберем диалог вызова в WireShark! Заодно познакомимся с еще одним режимом отображения.
Вот так будет выглядеть пакетный режим отображения вызова в WireShark.
Обратите внимание, у нас новые сообщения появились.
- INVITE — приглашение к сеансу поговорить.
- 100 Trying — попытка дозвона до адресата
- 180 Ringing — сам дозвон
- ACK — подтверждение
- BYE — прощание
Диалоговый режим в WireShark будет выглядеть так:
И есть еще один красивый режим отображения для вызовов в WireShark — графический. Для входа в него, надо щелкнуть в вернем меню Телефония/Вызовы.
Тут мы видим список всех наших вызовов. Здесь и входящие, и исходящие, и удачные, и те, что в процессе.
- COMPLETED — удачный вызов
- REJECTED — сброшенный вызов
- IN CALL — в процессе разговора
Теперь, если мы выделим нужный нам вызов и кликнем на кнопку Последовательность потоков в интерфейсе WireShark, мы увидим диаграмму вызова.
Очень удобный интерфейс WireShark. Видны направления пакетов, их содержание и сами сообщения.
А если мы нажмем на кнопку Воспроизвести потоки. То мы попадаем в плеер.
Если нажмете на черненький треугольничек, то прослушаете разговор.
Вообще WireShark очень ценный инструмент для анализа IP-телефонии. WireShark распространен, и им пользуются сами операторы связи. Поэтому вы можете смело отправлять им трассировки (дампы) для сравнения или с вопросами. А также запрашивать у них. Ведь снять дамп на АТС это одно, а вот в каком виде он дойдет до провайдера — уже другое. Поэтому трассировки WireShark снимают на входе и выходе каждого промежуточного оборудования (роутеры, коммутаторы, конверторы и т.д.).
Коллеги, если вам понравилась статья, вы можете отблагодарить автора.