Назад | Перейти на главную страницу

Kamailio как регистр и реле SIP только для TCP

У меня довольно сложная установка, в которой я хотел бы запустить SIP-сервер. В общем, я хочу запустить SIP-сервер Kamailio только для IPv6 во внутренней сети, чтобы внешние SIP-клиенты могли совершать внутренние вызовы по сети только с IPv4.

Это установка:

Итак, проблема в том, что я не могу связаться с каким-либо устройством в другой сети через IPv4. Сеть с Kamailio-сервером имеет IPv6-соединение, хотя может быть достигнута из других IPv6-сетей в Интернете.

Однако я хочу подключиться к SIP-серверу с помощью SIP-приложения на Android (в частности, Mizudroid, но все, что работает, даже собственный Android-клиент мне подходит) в дороге или вне офиса. К сожалению, мобильная сеть поддерживает только IPv4, а также большинство сетей Wi-Fi поддерживают только IPv4.

Я нашел поставщика услуг (https://myonlineportal.net/portmapper), который может действовать как шлюз IPv4-to-IPv6 на определенных портах. То есть, если вы подключаетесь к этой службе на portmapper.myonlineportal.net:12345, он будет перенаправлять этот трафик на [your-ipv6]: 5060 (5060 может быть любым, но 5060 для SIP). Обратной стороной является то, что он предлагает это только для TCP-соединений.

В любом случае, я установил Kamailio-сервер, настроил его, и клиенты внутри IPv6-сети могут звонить, а также разговаривать друг с другом нормально. Проблема в клиентах извне. Они могут подключиться к Камайлио, а также могут позвонить кому-нибудь изнутри. Но после ответа на звонок соединение не удается и звонок прерывается. Кроме того, вызов изнутри наружу не работает, сообщение об ошибке софтфона "PhonerLite": "477: К сожалению, произошла ошибка при отправке на следующий переход (477 / SL)".

К сожалению, я не слишком хорошо знаком с SIP-протоколом. Насколько я понимаю, Камайлио - всего лишь «брокер», который сообщает Caller1, как связаться с Caller2. Проблема здесь может заключаться в том, что есть только соединение от одного порта с сервером Kamailio через portmapper. Хотя я настроил каждое устройство на использование TCP в качестве транспортного протокола.

Мне интересно, возможно ли это вообще? Я думаю, это могло бы сработать, если бы Kamailio был не только регистратором, но и выступал в роли ретранслятора / прокси? Таким образом, вызовы извне должны быть не dev-to-dev, а скорее dev-kamailio-dev. Для моего приложения не имеет значения, возникнет ли задержка из-за использования TCP. Кроме того, использование внешнего сервиса не вариант, потому что в конечном итоге сервер Kamailio будет интегрирован со стационарной линией связи.

Буду рад услышать и другие предложения. Просто имейте в виду, что к серверу Kamailio и маршрутизатору также можно получить доступ по IPv6 из Интернета, в то время как мобильное устройство имеет соединение только по IPv4!

Любая помощь высоко ценится!