不同网络上的 SIP

SIP on different networks

我正在制作一个 Android 应用程序来连接到带有 SIP 的设备。连接后,呼叫者向接收者发送视频流,并且在同一个局域网中都可以正常工作,但我无法使其在不同的网络或蜂窝网络上工作;通话正常但视频不工作,我认为是因为 public IP 不会在发送视频的地方启动私有 IP。你能帮助我吗?我需要 STUN 或类似的东西吗?

关于此的另一个问题,它可以与具有 public IP 的 SIM 卡一起使用吗?

问题是 SIP INVITE 和 SIP 200 OK(对于 INVITE)中的 SDP 包含仅在您自己的网络中有效的 IP 地址。假设用户代理服务器 (=UAS) 位于 10.x.x.x 专用网络中,而您的用户代理客户端 (=UAC) 位于 192.168.x.x 专用网络中。因此,UAS 将收到一个 SIP INVITE,其中包含 192.168.x.x 作为 SDP 中的媒体目标。由于私有 IP "non-routeable" 通过 public 网络(当然,因为它们是私有的)UAS 无法将 audio/video 流发送到 UAC,反之亦然。

可能的解决方案是使用 STUN 服务器。所以 UAC/UAS 能够找出他们的 public IP 地址 -> 请参阅此 link

另一种选择可能是使用 IPv6 地址,因为它们在全球范围内是唯一的。基于该 NAT 应该不是 IPv6 的问题。

希望对您有所帮助。

鉴于我需要的用户数量有限,我选择实施 VPN,因为唯一允许的通信是应用程序用户之间的通信。感谢您的回答