有没有 trixbox/asterisk 专家?
我安装了一个 trixbox,它拒绝接受来自某个 VoIP 提供商通过 IAX2 拨入的电话。起初,我以为是防火墙问题,但现在我认为我已经确定事实并非如此。我尝试了所有我能想到的方法(我不是这方面的专家),但都没有成功。以下是我确定的情况:
另一个位于单独站点的 TrixBox能与此安装进行通信(通过 IAX2)。据我所知,这不是防火墙问题,这似乎表明 VoIP 提供商存在问题,但是...
VoIP 提供商能够成功与 SwitchVox 安装配合使用,这表明问题并不完全出在 VoIP 提供商身上。但是...
相同的 SwitchVox 安装也可以与我的“问题” Trixbox 进行通信 - 这再次表明 Trixbox 本身没有任何问题。
面对相互矛盾的结果,我转向星号调试,打开 IAX2 调试显示正在接收连接尝试 - 以下是来自提供商的新消息的示例:
Rx-Frame 重试[否] -- OSeqno: 000 ISeqno: 000 类型:IAX 子类:NEW 时间戳:00004ms SCall:00043 DCall:00000 [xxxx:4569] 版本 :2 来电号码:0845[模糊] 编解码器首选项 : () 来电号码:匿名 当前呼叫数:0 呼叫类型:0 呼叫转接:0 主叫姓名: 语言 : en 用户名:[模糊处理] 格式:8 容量:65407 广告等级:2 日期时间:2010-12-03 12:18:58
不同之处就在这里。在成功呼叫后,我接下来会看到身份验证握手,发送 AUTHREQ,然后是 AUTHREP 回复。对于无法正常工作的连接,我从未见过这种身份验证握手(既不是 AUTHREQ 也不是 AUTHREP)。
新消息能够穿过防火墙并被 Trixbox 正确接收,这一事实证实了我的想法,即这不是防火墙问题。所以我认为问题的关键在于,出于某种原因,我的 Trixbox 决定它不喜欢这个来电,并且甚至不需要远程盒子进行身份验证。这是什么原因造成的?我该如何进一步排除故障?目前我非常感激任何建议,因为我遇到了瓶颈。
答案1
好的,我刚刚在旧的 PiaF (1.4) 盒子和运行 asterisk 1.6 的新盒子之间遇到了这种情况。
事实证明,较新的 Asterisk 增加了一些安全功能,需要关闭这些功能才能实现互兼容。事实上,这些消息是在 Asterisk 日志文件中,尽管我浪费了 2 个小时才看到它们:
[2011-01-18 02:39:01] 错误[15257] chan_iax2.c:呼叫被拒绝,需要 CallToken 支持。如果出现意外情况,请通过将地址 XXXXXXX 放入 calltokenoptional 列表中或设置用户 XYZ requirecalltoken=no 来解决
所以我在 asterisk 1.6 服务器上的 USER DETAILS 部分添加了 requirecalltoken=no,然后一切都解决了。嗯,我看到我在另一侧的 Outgoing 部分有一个 requirecalltoken=auto,但我认为这没有必要。我必须安排停机时间来查看。
这里有一份关于此内容的 pdf 文件:http://downloads.asterisk.org/pub/security/IAX2-security.pdf