Project

General

Profile

Отладка SIP протокола в Asterisk

Предположим, вы хотите увидеть какие SIP сообщения приходят от пользователя user001 и какие ему отсылаются ответные сообщения.
Для этого выполните следующую инструкцию:

1. Проверьте, что IP адрес пользователя не заблокирован fail2ban.
Узнать IP адрес пользователя можно, попросив его зайти по ссылке https://www.whatismyip.com/ и передать вам отображаемое значение.
Список заблокированных IP адресов находится в меню Сеть -> Таблицы файервола -> SIP deny -> Хосты.

2. Получите доступ к консоли сервера. Описано в разделе Как зайти на сервер под root

3. Включите отладку SIP для пользователя user001:

sudo asterisk -rx "sip set debug peer user001" 

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

Если пользователь не зарегистрирован и IP адрес не сконфигурирован, то нужно узнать, с какого IP адреса приходят пакеты.
Узнать IP адрес пользователя можно, попросив его зайти по ссылке https://www.whatismyip.com/ и передать вам отображаемое значение.

Зная IP адрес, можно включить отладку следующим образом:

sudo asterisk -rx "sip set debug ip 192.168.1.1" 

Если вы хотите сделать отладку всех SIP сообщений (а не с определенного пира/IP адреса), выполните следующее:

sudo asterisk -rx "sip set debug on" 

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

4. Результаты можно просматривать на консоли Asterisk либо в файле.

Консоль Asterisk удобнее использовать, если вы хотите быстро посмотреть, приходит ли от клиента какие-то сообщения.
Однако консоль не позволяет производить поиск.

Файл удобнее использовать, если вы хотите выполнять поиск чего-либо в большом потоке сообщений.
Также файл удобнее использовать, если совместно с отладкой SIP выполняется отладка Asterisk (описано в разделе Отладка Asterisk)

  • консоль Asterisk

    Зайдите в режим консоли:

      sudo asterisk -r
      

    После этого на экран будет выводить расшифровку SIP сообщений.
    Внимание! Поток сообщений в этом случае может быть большим и может привести к зависанию вашей программы-терминала.

  • файл

    Выполните поиск IP адреса клиента, или типа сообщения, например, REGISTER, в файле /var/log/asterisk/messages.
    Найдя первое искомое сообщение, вы можете использовать call Id для поиска всех сообщений в диалоге.
    Затем проследуйте по всем найденным сообщениям из диалога.
    Принцип работы с лог файлами описан в разделе Как работать с лог файлом

5. Для предупреждения завершения места на жестком диске отключите отладку, когда закончили:

sudo asterisk -rx "sip set debug off" 

English translation

Also available in: PDF HTML TXT