测试环境由一个 CSipSimple 客户端、Asterisk 服务器和一个带有 NAT 的路由器组成。以前设备使用UDP端口5060,一切都很好。然后我在 Asterisk、路由器的转发规则和客户端应用程序中将端口号更改为 15000。现在,当从外部访问网络时,客户端可以注册,但是当它调用某些扩展时,Asterisk 抱怨无法创建 DAHDI 通道。当客户端在 LAN 中时,呼叫正在工作。
什么地方出了错?我只更改了控制端口号。
更新
首先我需要提一下,当我拨打分机号码 100 时,无论语音是否有效,Asterisk 总是抱怨无法创建 DAHDI 频道。因此,可以忽略此错误消息。
现在,详细呼叫日志的不同尾部:
手机客户端注册过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 端口范围,以免它们重叠。
请捕获失败呼叫(局域网外)和成功呼叫(局域网)的 CLI 输出,并在此处发布结果。
要从 bash 提示符捕获 CLI 输出:
然后从您的局域网拨打电话,然后从您的局域网外部拨打电话,但失败发布上述的完整输出(我假设您有一个简单的拨号计划)。如果您使用的是 Elastix 或 FreePBX 等罐装 PBX,则输出可能太长,无法在此处发布...