Kamailio作为纯TCP的SIP注册和中继

我有一个相当复杂的设置,我想运行一个SIP服务器。 一般来说,我想在内部networking上运行一个仅支持IPv6的Kamailio SIP服务器,并且让外部SIP客户端能够通过纯IPv4networking向内部进行呼叫。

这是设置: 在这里输入图像说明

所以,问题是我无法通过IPv4访问其他networking中的任何设备。 使用Kamailio服务器的networking具有IPv6连接,但可以通过互联网上的其他IPv6networking访问。

但是,我想通过在路上/不在办公室上的Android上的SIP-App(特别是Mizudroid,但无论什么作品,甚至是原生的Android客户端都适合我)连接到SIP服务器。 不幸的是,移动networking是纯IPv4的,而且大多数WiFinetworking都是纯IPv4的。

我find了一个服务提供者,但是( https://myonlineportal.net/portmapper )可以作为特定端口上的IPv4到IPv6网关。 也就是说,如果你在portmapper.myonlineportal.net:12345上连接到这个服务,它会把这个stream量转发到[你的ipv6]:5060(5060可以是你喜欢的,但5060是SIP)。 缺点是只能提供TCP连接。

无论如何,我设置了Kamailio服务器,configuration它,IPv6networking内的客户端可以打电话,也可以相互通话。 问题出在外面的客户。 他们可以连接到Kamailio,他们也可以打电话给内部的人。 但在接听电话后,连接失败,通话中断。 另外,从内部到外部的呼叫不起作用,来自软电话“PhonerLite”的错误消息是“477:不幸的是发送到下一跳发生错误(477 / SL)”。

不幸的是,我对SIP协议不太熟悉。 据我所知,Kamailio只是一个告诉Caller1如何到达Caller2的“经纪人”。 这里的问题可能是,只有一个端口通过端口映射器连接到Kamailio服务器。 即使我将每台设备都设置为使用TCP作为传输协议。

我想知道这是否可能? 如果Kamailio不只是注册服务商,而且还充当接力/代理,我认为它可以工作? 所以外面的电话不应该是dev-dev-dev,而应该是dev-kamailio-dev。 如果由于使用TCP而导致延迟,那么对于我的应用程序无关紧要。 此外,使用外部服务是不行的,因为最终将把Kamailio服务器与固定电话networking结合起来。

我也很乐意听到其他build议。 请记住,Kamailio服务器和路由器也可以通过Internet从互联网访问,而移动设备只有IPv4连接!

任何帮助深表感谢!