Asterisk 由于星号中的注册/取消注册冲突而请求超时

Asterisk 由于星号中的注册/取消注册冲突而请求超时,asterisk,Asterisk,我已经安装了asterisk 11.5.1,我在iPhone上安装了Bria作为sip客户端。用户名/密码在sip.conf中设置,客户端使用的默认拨号计划是 exten => _X.,1,Dial(SIP/${EXTEN},20) exten => _X.,n,Hangup() 我有两部iPhone,比如A和B,我用星号-rvvvv连接到运行的星号上。当我从屏幕上点击“注册”按钮时,我看到 Registered SIP 'A' at ww.xx.yy.zz:mmmm 星号cli

我已经安装了asterisk 11.5.1,我在iPhone上安装了Bria作为sip客户端。用户名/密码在sip.conf中设置,客户端使用的默认拨号计划是

exten => _X.,1,Dial(SIP/${EXTEN},20)
exten => _X.,n,Hangup()
我有两部iPhone,比如A和B,我用星号-rvvvv连接到运行的星号上。当我从屏幕上点击“注册”按钮时,我看到

Registered SIP 'A' at ww.xx.yy.zz:mmmm
星号cli上的消息。当我从B点击“注册”按钮时,我看到

Registered SIP 'B' at aa.bb.cc.dd:nnnn
Unregistered SIP 'B'   <== HERE IS THE PROBLEM
编辑:我的sip.conf文件如下

[myConf](!)
        disallow=all
        allow=g729
        allow=gsm
        allow=g723
        allow=ulaw
        allow=ilbc
        directmedia=no
        host=dynamic
        dtmfmode=rfc2833
        context=default
        type=friend
        transport=tls,tcp
        qualify=4000
        nat=force_rport,comedia
        encryption=yes

[A](myConf)
        secret=AAAA
[B](myConf)
        secret=BBBB

我不能给你确切的答案,但我可以指出问题所在

chan_sip.c中出现问题的代码的文档部分说

 * \return length of transmitted message, XMIT_ERROR on know network failures -1 on other failures
在您的情况下,您会遇到其他系统调用中断的故障。这条消息让我发现了一个由于缺乏活动而暂停的开放bug。所以我的观点是,这个错误更多地与操作系统有关,而不是星号本身


我下面的问题是,如果你颠倒顺序,先是寄存器B,然后是寄存器A,那么最后一个出错的人是谁?如果是,则可以开始查看selinux或任何其他在建立连接后终止连接的安全工具。否则,您可能需要更新错误,并让来自Asterisk的人员修复错误


让我们知道结果,找到带有补丁的帖子总是很好的:

我认为你需要处理NAT

或者您必须检查您的B是否可以从星号收到消息并正确回答。使用sip调试可以获得更多信息

asterisk -r 
sip set debug on

您还可以在sip.conf文件中共享每个客户端A和B的信息吗?这将有助于更好地了解情况。@jmolinaso更新了我的问题。B正在连接3G,因此服务器和B之间没有NAT。抱歉,3G总是有NAT。有时是灰色地址nat,但仍然是nat。如果一台服务器使用3g智能解决方案,将使用vpnopenvpn,例如,您确定吗?即使如此,A和B都有相同的配置。那个么,你们如何解释A在并没有任何额外配置的情况下使用2级NAT?若A也有3g,那个么这个问题就并没有意义了。什么都可以。您所指的消息意味着通信不正确。可以是NAT,可以是防火墙块。没有办法说提供的信息。当然可以通过隧道工作。如果您颠倒顺序,首先是寄存器B,然后是寄存器A,那么最后一个出现错误的是谁?不,总是B。作为附加信息,B通过3G连接,因此前面没有NAT。A正在通过wi-fi连接,前面有两层nat。这些信息使问题变得更有趣!我认为您在这里没有NAT问题,我从错误和bug中了解到,您之所以取消注册,是因为尝试打开/建立TCP端口时出现问题,导致第二部手机断开连接。您可以尝试使用transport=udp吗?也可能是TCP连接被不确定最后一条语句的操作员阻塞
asterisk -r 
sip set debug on