Решение проблем Mikrotik и SIP (SIP через NAT или VPN) SIP helper

17.11.2021

Решение проблем Mikrotik и SIP (SIP через NAT или VPN) SIP helper

Часто пользователи IP телефонии сталкиваются с проблемой односторонней слышимости. Проблема в том, что в SIP протоколе, в части где описываются возможности голосового соединения (кодеки, IP адреса и порты обмена) - в протоколе SDP (Session Description Protocol), имеется запись о IP адресе на котором клиент ожидает соединения, и этот IP адрес, естественно является "серым", то есть из сети, которая находится за NAT-ом. А прямое соединение на этот немаршрутизируемый IP естественно невозможно. И дальше есть два пути решения либо включить SIP Helper на mirotik либо на сервере телефонии (Asterisk) включить (настройку nat = force_rport, comedia). 


В видео более детально разобран SDP (Session Description Protocol) протокол и работа SIP helper, также разобраны проблемы SIP NAT и SIP VPN

Основные проблемы: 

Проблема 1. SIP NAT mikrotik 

Решение: Либо включаете на mikrotik SIP Helper либо выключаете и настраиваете на Asterisk NAT и force, comedia

"Подвисание" SIP в Connection Trackin (UDP)  - В чем же дело? ПРИМЕР: Всё довольно просто: переключение на резервный канал было реализовано с помощью двух маршрутов с destination 0.0.0.0/0 и разным значением distance в зависимости от приоритета, а также с настроенными соответствующим образом опциями check-gateway. Но переключение переключением, а вот таблицу NAT роутер при этом не очищал, т.к. его об этом никто и не просил, что приводило к «повисанию» UDP-соединений на том дефолте, который по несчастью отвалился. 

Скрипт как почистить подвисшие SIP: (можно в нетвоч и делать переключение каналов не check-gateway)
:foreach i in=[/ip firewall connection find dst-address~":5060" protocol~"udp"] do={ /ip firewall connection remove $i }


Проблема 2.  SIP VPN mikrotik 


Asterisk – смотрит, если сеть не объявлена в переменной  localnet, определяет, что клиент находится за NAT и использует свой внешний адрес (externalip), как адрес для в SIP/SDP
обязательно нужно прописывать сети "точек" в localnet 

При падение VPN, ваш маршрут до астериск также станет не доступен и пакеты уйдут в интернет и сип также "подвиснет" и чтобы такого не было создаем анричебл маршруты с большим дистанс ,чтобы в случае падения ВПН, ничего никуда не уходило.
 /ip route
add dst-address=192.168.0.0/16 type=unreachable distance=250
add dst-address=10.0.0.0/8 type=unreachable distance=250
add dst-address=172.16.0.0/12 type=unreachable distance=250


Проблема 3. SIP Helper Регистрация (проблема односторонней слышимости)

Решение: либо включить SIP Helper на mirotik либо на сервере телефонии (Asterisk) включить (настройку nat = force_rport, comedia).  

Также у SIP Helpe есть парметр sip-timeout: 

/ip firewall service-port set sip disabled=no ports=5060,5061 sip-direct-media=yes sip-timeout=5m

Если в сообщении есть поле Expires со значением больше чем 0, то RouterOS создаст соединение с timeout из sip-timeout значения service-port (Только для UDP)

 Если Expires отсутствует или равно 0, то существующее соединение удаляется из трекера



< Назад к списку новостей