Проверка доступности SIP сервера

Диагностика 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. Забегая вперёд, скажу, что это утилита работает из командной строки, и вы не сможете насладиться удобным графическим интерфейсом )))
Для начала скачиваем утилиту, размещаем в корне диска С:
Далее, запускаем командную строку:

SIP cmd_1

Переходим в корень диска С выполнив команду cd /

SIP cmd_2

Получается вот так:

SIP cmd_3

Выполняем команду:
sip-ping.exe -host=81.20.ххх.234 -domain=81.20.ххх.234 -user=admin -bindaddr=0.0.0.0 -verbose

 

req_sip_cmd

В терминале мы видим, что сервер ответил, и он является ни чем иным как 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 телефонии. Так же с помощью её можно провести полную регистрацию и провести тесты

StarTrinity SIP Tester

StarTrinity SIP Tester

Утилиты для проверки доступности SIP сервера для Linux

Tools for a quick SIP diagnostics – ngrep, sipgrep and sngrep