Диагностика VoIP звонка при помощи Wireshark

Диагностика VoIP звонков при помощи Wireshark

Рубрика, посвященная VoIP, постоянно пополняется информацией по диагностике и обслуживанию IP телефонии на базе Asterisk. Сегодня мы рассмотрим возможность диагностики и отладки VoIP звонка при помощи утилит tcpdump и Wireshark. Полученные диаграммы могут понадобиться при анализе проблемных ситуаций: нет звука, плохое качество связи, не проходят звонки и т.п. При этом полезным пособием будет схема диагностики вызовов при проблемах с NAT и отсутствием “голоса” при звонке.

Процесс отладки звонка будет проходить в несколько этапов.

Захват трафика при помощи tcpdump

Захват трафика выполняется на сервере телефонии при подключении по SSH под root. Важно выполнять захват пакетов до начала звонка. Программа Wireshark использует файлы с расширением .cap. Обратите внимание – полученный файл имеет большой объем, возможно, в некоторых случаях проще выполнять запись данного файла на примонтированный сетевой диск.

Итак, перейдя в нужный каталог (место расположение будущего файла) снимаем пакетный лог звонка при помоши утилиты tcpdump:

tcpdump -s 0 -w voip.cap

Обратите внимание: указанная команда будет снимать пакетный лог в файл voip.cap в текущей директории, поэтому, при необходимости, нужно указать явно место расположения создаваемого файла. Захват идет с первого по списку интерфейса. Прекратить захват можно комбинацией CTRL+C. Также не лишним будет, если вы знаете, от кого вы будете принимать трафик и/или на кого будете отправлять. IP адрес терминатора или оригинатора вы можете увидеть на веб интерфейсе. В таком случае выполните команду так:

tcpdump -s 0 -w voip.cap host 192.168.0.1

В этом случае 192.168.0.1 – это IP адрес искомого пира, через которого проходит звонок. Для снятия дампа с нескольких хостов (например, оригинатора и терминатора) воспользуйтесь такой командой:

tcpdump -s 0 -w voip.cap host 192.168.0.1 or 192.168.0.2

В этом случае 192.168.0.1 – это IP адрес оригинатора,
192.168.0.2 – это IP адрес терминатора.

Как было сказано выше – данные команды снимают дамп с первого по списку сетевого интерфейса. Для снятия дампа с определенного сетевого интерфейса выполните команду так:

tcpdump -i rl0 -s 0 -w voip.cap

Здесь rl0 – один из интерфейсов, выводимый по списку из:

ifconfig

Далее – копируем полученный файл на машину с Wireshark.

Использование Wireshark

Откройте пакетный лог, полученный автоматическим либо ручным способом, в программе Wireshark (http://www.wireshark.org/).

Для этого:

  1. Запустите wireshark.
  2. Выберите файл voip.cap в диалоге File->Open.
  3. После открытия файла нажмите Telephony->VoIP calls.
    Вам отобразятся все звонки которые были в пакетном логе.
  4. Выберите нужный звонок, кликнув по нему мышкой и нажмите “Flow”.
  5. Вам отобразится диаграмма звонка.
    Кликнув по любой из стрелок, wireshark отобразит вам содержимое пакета, которое вы сможете посмотреть

Существует и другой, более изящный способ (без копирования файла) и запуске Wireshark с удаленной машины.

blank

Занимаюсь IT с 2007 года. Всё началось с увлечения — разгона компьютерного оборудования. Много воды и азота утекло с тех пор... Сейчас уже более 3х лет со своей командой оказываю комплексную поддержку и продвижение бизнеса: SEO, Яндекс.Директ, рассылки и удалённое обслуживание серверов. Буду рад помочь, обращайтесь!

Оцените автора
IT для специалистов и бизнеса
Добавить комментарий

  1. blank
    Андрей Михайлович

    Расскажете про другой, более изящный способ? 🙂

    Ответить
    1. blank
      Игорь Овчаренко автор

      Вся его суть заключается лишь в удаленном подключении/захвате трафика через wireshark (т.е. без записи файла на конечном сервере).

      Ответить