Приветствую,
Дайте совет pls.
Суть проблемы: Есть сипоподобный клиент, который нужно связать с облачным сервисом. Клиент живет за NAT. В облаке публичный адрес.
Клиент стоит на Linux Redhat 2.6.32.
Клиент связывается по TCP из под своего внутреннего адреса. Сессия держится и обмен идет. Далее клиент сообщает адрес для передачи UDP трафика и сервис должен начать передачу трафика на этот адрес.
Проблема в том, что этот клиент не может быть модифицирован. TURN/STURN для него не существуют.
И посылает он свой внутренний адрес. В SDP. И облачный сервис начинает слать UDP пакеты на его внутренний адрес. Соответственно ничего не работает.
Идеи как заставить работать:
1. Построить туннель. На той стороне тоже Linux, но у меня нет к нему доступа.
2. Построить VPN. Но на той стороне надо ставить пакет VPN и см пункт первый.
3. Замаскарадить (занатировать) трафик.
Если есть еще идеи - буду крайне благодарен.
Пытаюсь сделать идею 3. Можно создать внутренний виртуальный адрес с внешним адресом роутера и подсунуть его клиенту. Далее сказать роутеру пробрасывать UDP порты на внутренний IP.
Но с этой идеей проблемы. И вот я понять не могу они решаемы или нет. Мне как-то с MASQUERADE удалось доставить трафик на машинку. Но она его распознавать отказалась.
Просто добавить второй IP на интерфейс нельзя. Внешний роутер начинает забирать все пакеты себе.
И всякие NAT ALG для SIP тоже не работают.
т.е. было бы здорово просто подменить в SDP адрес для посылки UDP трафика, но как и чем?
В общем мозг я себе уже сломал.
Гуру, если есть идеи - покажите пальцем куда попробовать.
С уважением, dsen