更改Asterisk UDP端口后无法获取语音

testing环境由一个CSipSimple客户端,Asterisk服务器和一个带有NAT的路由器组成。 以前的设备使用UDP端口5060,一切都很好。 然后我在Asterisk,路由器的转发规则和客户端应用程序中将端口号改为15000。 现在,当从外部访问networking时,客户端可以注册,但是当它调用一些扩展时,Asterisk抱怨无法创buildDAHDI通道。 当客户端在局域网中时,呼叫正在工作。

什么地方出了错? 我只更改了控制端口号。

更新

首先我要提到的是,无论话音是否有效,Asterisk总是抱怨无法创buildDAHDI频道。 所以,这个错误信息可以被忽略。

现在,详细通话logging的不同尾巴:

移动客户端通过3G注册,没有声音(通话,取件,超时):

-- SIP/103-00000001 answered SIP/101-00000000 > 0x7fda800295a0 -- Probation passed - setting RTP source address to 192.168.1.100:5062 

就这样。 没有更多的消息。

通过WiFi注册的移动客户端,音效(呼叫,取件,对话,挂断):

  -- SIP/103-00000003 answered SIP/101-00000002 > 0x7fda88026620 -- Probation passed - setting RTP source address to 192.168.1.100:5062 > 0x7fda78013fb0 -- Probation passed - setting RTP source address to 192.168.1.112:4000 > 0x7fda78013fb0 -- Probation passed - setting RTP source address to 192.168.1.112:4000 -- Executing [h@macro-dial-one:1] Macro("SIP/101-00000002", "hangupcall,") in new stack -- Executing [s@macro-hangupcall:1] GotoIf("SIP/101-00000002", "1?theend") in new stack -- Goto (macro-hangupcall,s,3) -- Executing [s@macro-hangupcall:3] ExecIf("SIP/101-00000002", "0?Set(CDR(recordingfile)=)") in new stack -- Executing [s@macro-hangupcall:4] Hangup("SIP/101-00000002", "") in new stack == Spawn extension (macro-hangupcall, s, 4) exited non-zero on 'SIP/101-00000002' in macro 'hangupcall' == Spawn extension (macro-dial-one, h, 1) exited non-zero on 'SIP/101-00000002' == Spawn extension (macro-dial-one, s, 43) exited non-zero on 'SIP/101-00000002' in macro 'dial-one' == Spawn extension (macro-exten-vm, s, 9) exited non-zero on 'SIP/101-00000002' in macro 'exten-vm' == Spawn extension (from-internal, 103, 2) exited non-zero on 'SIP/101-00000002' 

我怀疑你的SIP端口现在在RTP范围内,所以Asterisk没有意识到这是一个SIP连接。 请移动SIP端口或移动RTP端口范围,使其不重叠。

请捕获失败呼叫(离线LAN)的CLI输出和连续呼叫(局域网),并在此处发布结果。


要从bash提示符捕获CLI输出:

 asterisk -r core set verbose 10 

然后从你的局域网中拨打电话,然后从你的局域网外面打出一个失败的电话。完成上面的输出(我假设你有一个简单的拨号scheme)。 我正在使用像Elastix或FreePBX这样的jar装PBX,输出可能太长以至于不能在这里发布…