Мы используем программное обеспечение для обфускации для шифрования / искажения как SIP / RTP, так и перед звездочкой. Иногда мы не слышим голоса. после некоторой "отладки набора rtp" мы обнаружили, что когда полученный ip потока rtp является публичным ip маршрутизатора, все работает чисто. Но иногда мы получаем частный IP-адрес клиента как полученный адрес в потоке rtp, что приводит к "отсутствию голоса". похоже, что звездочка по неизвестной причине не смогла пройти нат для медиапотока.
Как asterisk управляет натом, мне не известно. Но общие методы обхода SIP nat требуют, чтобы сначала он изменял SDP, чтобы его адрес стал адресом назначения для обеих сторон. Затем он ждет пакета rtp (симметричный rtp), чтобы узнать, на какой порт он должен отправить мультимедиа.
Я не понимаю, на каком этапе это выходит из строя. Из-за того, что отображается неправильный IP-адрес, я подозреваю, что это из-за неправильной записи SDP. По какой причине это происходит, нам пока неизвестно.
Есть указатель на то, как это следует отлаживать?
Какая причина такого странного поведения нам до сих пор неизвестна.
Вы пробовали установить внешний вид вариант?
http://www.voip-info.org/wiki/view/Asterisk+SIP+externip
Также, возможно, проверьте http://www.voip-info.org/wiki/view/Asterisk+sip+nat
Если одноранговый узел настроен с nat = yes, это заставляет Asterisk игнорировать адресную информацию в заголовках SIP и SDP от этого однорангового узла и отвечать на IP-адрес и порт отправителя.
(Я какое-то время не смотрел на Asterisk, но напомню, что NAT может быть PITA.)