【问题标题】:Android SIP in double NAT enviorment双NAT环境下的Android SIP
【发布时间】: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有一个选项“出站代理地址”,不知道这是否有帮助?

【问题讨论】:

    标签: android sip voip


    【解决方案1】:

    设法解决了这个问题。

    在 Asterisk 创建扩展中,只需更改 NAT > 是的。

    Csipsimple 不需要这个额外的步骤。

    【讨论】:

      【解决方案2】:

      使用双 nat 来解决问题:SIP(注册、通话提示音……)和 RTP 冲突(语音)。

      要解决SIP问题,可以使用(sip.conf):

      nat=yes 
      

      您还必须在每个路由器中配置 DMZ。

      要解决 RTP,您可以使用 (sip.conf):

      externaddr=public_ip
      localnet=privates_ip
      

      就是这样。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-24
        • 1970-01-01
        相关资源
        最近更新 更多