首页 文章

双SIP NAT环境中的Android SIP

提问于
浏览
0

我运行我的asterisk服务器坐在亚马逊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”,我认为这不是真正的公众,而是来自我的3G服务提供商的私有IP .

我知道很多专业人士必须建议我忘记android sdk sip,去找pjsip . 但是由于密切的源许可,它花了我很多钱 .

任何人都知道如何在不切换到pjsip的情况下解决这个问题?我看到android sdk sip有一个选项“出站代理地址”,不确定这是否有帮助?

2 回答

  • 0

    使用双nat来解决问题:SIP(注册,通过呼叫音,......)和RTP冲突(语音) .

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

    nat=yes
    

    你还必须在每个路由器中配置DMZ .

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

    externaddr=public_ip
    localnet=privates_ip
    

    就这样 .

  • 1

    管理解决了这个问题 .

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

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

相关问题