Диагностика SIP телефонии
При диагностике неисправностей SIP телефонии, будь это iVMS или ВАТС, иногда требуется удостовериться в работоспособности SIP сервера. Команда ping не даст однозначного ответа, по причине, что ответ высылает сетевое устройство, и не факт, что это сетевое устройство является SIP сервером. Команда telnet на порту 5060 также вам ни о чём не скажет. Никакой информации по открытым портам сканер портов вам так же не подскажет. Ещё больше проблему может усложнить тот факт, что администратор заблокирует работу протокола ICMP вы тогда не сможете “пинговать” объект ваших интересов. В общем, хорошо защищённый SIP сервер является этаким “чёрным ящиком”, который откликнется только на специальные запросы от SIP устройств.
К счастью, в протоколе SIP (RFC 3261) существует такой замечательный параметр (запрос) как OPTIONS. Послав этот запрос на SIP сервер, последний выдаст себя ответив на него. Так мы и удостоверимся, что SIP сервер жив-здоров и находится в работе.
Ко всему прочему, есть ещё одно замечательное свойство этого способа. Запрос OPTIONS используется для согласования параметров клиента и сервера перед началом работы. Это означает, что для отправки первого запроса не требуется даже авторизация (регистрационные данные).
Сложность заключается лишь в том как этот запрос сформировать и получить читаемый ответ. Существует множество утилит для проверки доступности SIP сервера, но они практически все написаны под Linux. Существуют так же скрипты на Python и даже на стареньком Perl.
Сразу перейдём к рабочему варианту под Widows, а в конце я приведу примеры других вариантов.
SIP-Ping – утилита проверки доступности SIP сервера
Будем использовать утилиту SIP-Ping.exe, которая написана на базе скрипта Python – SIP_Ping. Забегая вперёд, скажу, что это утилита работает из командной строки, и вы не сможете насладиться удобным графическим интерфейсом )))
Для начала скачиваем утилиту, размещаем в корне диска С:
Далее, запускаем командную строку:
Переходим в корень диска С выполнив команду cd /
Получается вот так:
Выполняем команду:
sip-ping.exe -host=81.20.ххх.234 -domain=81.20.ххх.234 -user=admin -bindaddr=0.0.0.0 -verbose
В терминале мы видим, что сервер ответил, и он является ни чем иным как SIP сервер. Ошибка “500 Server Internal Error” означает, что нас не приняли. Оно и понятно, мы не вводили учётные данные и не регистрировались.
Все возможные параметры параметры, с которыми можно запустить утилиту sip-ping.exe приведены ниже.
-host IP адрес или доменное имя SIP сервера. Например, sip.zadarma.com или 88.20.20.22
-user любое имя на латинице
-domain аналогично параметру -host
-port по умолчанию порт 5060
-UseTCP по умолчанию UDP
-bindaddr IP адрес откуда слать запрос, ставим 0.0.0.0
-timeout время, сколько ждать пока сервер не ответит. По умолчанию 60 сек. Не забывайте, что сервер может оказаться не SIP и вы будете пялиться в экран ровно минуту просто так )))
-verbose если применить, то увидите на экране подробности
-help вывод справки
Windows утилита проверки доступности SIP сервера
Для тех, кто не любит командную строку, нашёл утилиту под Windows. Утилита позволит проверить на доступность сервера SIP телефонии. Так же с помощью её можно провести полную регистрацию и провести тесты
Утилиты для проверки доступности SIP сервера для Linux
Tools for a quick SIP diagnostics – ngrep, sipgrep and sngrep