【发布时间】:2014-01-27 19:35:37
【问题描述】:
我在亚马逊 ec2 上运行我的星号服务器,我的 voip 应用程序是用 android sip sdk 编写的。一切工作正常,除了一个,当我的 voip 应用程序试图连接到具有双 NAT 网络的 sip 服务器时。我无法接听电话。
从星号控制台,我可以清楚地看到ip地址错误的sip寄存器。
我的3G服务商使用双nat,分配给我的所谓公网IP其实是NAT私网IP。
当我用谷歌搜索我的 ip 是什么时,我得到了不同的 IP。它清楚地表明我在双 NAT 网络中。
如果我使用 csipsimple 尝试相同的场景,它会使用正确的 IP 注册。没有 STUN 的帮助。
ip-10-236-xxx-xxx*CLI> sip show peers
Name/username Host Dyn Forcerport ACL Port Status
5000/5000 10.120.1.242 D A 42964 UNREACHABLE
看看“10.120.1.242”,我想这不是真正的公共 IP,而是来自我的 3G 服务提供商的私有 IP。
我知道这里的许多专业人士必须建议我忘记 android sdk sip,选择 pjsip。但是由于闭源许可,我花了很多钱。
有人知道如何在不切换到 pjsip 的情况下解决这个问题吗?我看到android sdk sip有一个选项“出站代理地址”,不知道这是否有帮助?
【问题讨论】: