Asterisk 13.12.2, PJSIP 2.5.5Сервер Asterisk имеет IP-адрес 192.168.100.223 и подключен к MikroTik.
На MikroTik работает РРТР-сервер, раздающий адреса из подсети 192.168.253.0, к которому подключаются клиенты (смартфоны) с целью использования Asterisk.
Клиент смартфон, подключенный по WiFi в другом офисе (маршрутизации между офисами нет) имеет IP-адрес 192.168.101.247, подключается по РРТР к MikroTik и получает IP-адрес в тунеле 192.168.253.2
SIP-клиент на смартфоне успешно подключается к Asterisk по IP 192.168.100.223. В консоли Asterisk:
pjsip show aors
Contact: 5001/sip:5001@192.168.253.2:35028;transport= eef5336413 Avail 28.189
Проблема RTP трафик со стороны Asterisk в сторону SIP-клиента поступает не на IP 192.168.253.2, а на IP 192.168.101.247, который назначен на WAN интерфейс смартфона.
При изучении трафика было обнаружено, что SIP-клиенты (все популярные, которые удалось испытать) подставляют в SIP-заголовки IP-адреса с интерфейсов смартфона наугад. Один клиент подставил IP-адрес WAN (192.168.101.247) в сообщение REGISTER в поля Sent-by Addres и Contact в заголовке. Другой клиент в сообщении REGISTER подставил правильные адреса (192.168.253.2), но после приема от Asterisk сообщения OPTIONS в ответном статусном сообщении подставил в поле Contact адрес WAN (192.168.101.247). Во всех случаях RTP трафик начинает идти на 192.168.101.247, т.е. улетает в сторону провайдера по маршруту по умолчанию. При подключении не из второго офиса, а через сотовую сеть проблема остается прежней - в заголовки подставляется IP адрес, назначенный оператором. Без использования VPN такой проблемы нет. Голос доходит от сервера к клиентам без проблем.
Первый клиент
Второй клиент
Можно ли каким нибудь образом "научить" pjsip игнорировать поле contact? Или научить SIP-клиенты подставлять правильные IP-адреса в заголовки?