我有一个星号系统,我正尝试将其作为我们 3com 系统的备份。我们已经将它用作会议桥。我们的电话是 3com 3C10402B,所以我没有遇到没有 SIP 图像的旧 3com 电话的问题。
3com 电话正在与 Asterisk 进行 SIP 通信,但无法注册,因为它们提供的摘要用户名值与 Asterisk 认为的不匹配。
举例来说,以下是通过软电话成功注册的相关内容:
Server sends:
WWW-Authenticate: Digest algorithm=MD5, realm="asterisk", nonce="1cac3853"
Phone responds:
Authorization: Digest username="2321", realm="asterisk", nonce="1cac3853", uri="sip:192.168.254.12", algorithm=md5, response="d32df9ec719817282460e7c2625b6120"
对于 3com 电话,相同的那些行如下所示(并且失败):
Server sends:
WWW-Authenticate: Digest algorithm=MD5, realm="asterisk", nonce="6c915c33"
Phone responds:
Authorization: Digest username="sip:[email protected]", realm="asterisk", nonce="6c915c33", uri="sip:192.168.254.12", opaque="", algorithm=MD5, response="a89df25f19e4b4598595f919dac9db81"
基本上,Asterisk 希望在 2321 的摘要用户名字段中看到用户名,但 3com 电话正在发送 sip:[电子邮件保护]。
有人知道如何告诉星号在摘要认证中接受这种格式的用户名吗?
以下是该扩展的 sip.conf 信息:
[2321]
deny=0.0.0.0/0.0.0.0
disallow=all
type=friend
secret=1234
qualify=yes
port=5060
permit=0.0.0.0/0.0.0.0
nat=yes
mailbox=2321@device
host=dynamic
dtmfmode=rfc2833
dial=SIP/2321
context=from-internal
canreinvite=no
callerid=device <2321>
allow=ulaw, alaw
call-limit=50
...对于那些对勇气感兴趣的人,这里是注册尝试的调试输出:
注册 sip:192.168.254.12 SIP/2.0 验证码:SIP/2.0/UDP 192.168.254.157:5060 吨: F: 我:fa4451d8-01d6-1cc2-13e4-00e0bb33beb9 CSeq: 18580 注册 最大前锋:70 米: ;dt=544 有效期:3600 用户代理:3Com-SIP-Phone/V8.0.1.3 X-3Com-PhoneInfo:firstRegistration=no;primaryCallP=192.168.254.12;secondaryCallP=0.0.0.0; --- (11 个标题 0 行)--- 使用最新的 REGISTER 请求作为基础请求 发送至 192.168.254.157 : 5060 (无 NAT) SIP/2.0 100 尝试 通过:SIP/2.0/UDP 192.168.254.157:5060;已接收=192.168.254.157 从: 到: 呼叫 ID:fa4451d8-01d6-1cc2-13e4-00e0bb33beb9 CSeq: 18580 注册 用户代理:Asterisk PBX 允许:邀请、确认、取消、选项、再见、推荐、订阅、通知 支持:替代 接触: 内容长度:0 SIP/2.0 401 未授权 通过:SIP/2.0/UDP 192.168.254.157:5060;已接收=192.168.254.157 从: 收件人:;tag=as3fb867e2 呼叫 ID:fa4451d8-01d6-1cc2-13e4-00e0bb33beb9 CSeq: 18580 注册 用户代理:Asterisk PBX 允许:邀请、确认、取消、选项、再见、推荐、订阅、通知 支持:替代 WWW-Authenticate:摘要算法=MD5,realm="asterisk",nonce="6c915c33" 内容长度:0 计划在 32000 毫秒内销毁 SIP 对话“fa4451d8-01d6-1cc2-13e4-00e0bb33beb9”(方法:REGISTER) confbridge * CLI> 注册 sip:192.168.254.12 SIP/2.0 验证码:SIP/2.0/UDP 192.168.254.157:5060 吨: F: 我:fa4451d8-01d6-1cc2-13e4-00e0bb33beb9 序号: 18581 注册 最大前锋:70 米: ;dt=544 有效期:3600 用户代理:3Com-SIP-Phone/V8.0.1.3 授权:摘要用户名=“sip:[电子邮件保护]", 领域="星号", nonce="6c915c33", uri="sip:192.168.254.12", 不透明="", 算法=MD5, 响应="a89df25f19e4b4598595f919dac9db81" X-3Com-PhoneInfo:firstRegistration=no;primaryCallP=192.168.254.12;secondaryCallP=0.0.0.0; --- (12 个标题 0 行)--- 使用最新的 REGISTER 请求作为基础请求 发送至 192.168.254.157 : 5060 (NAT) SIP/2.0 100 尝试 通过:SIP/2.0/UDP 192.168.254.157:5060;已接收=192.168.254.157 从: 到: 呼叫 ID:fa4451d8-01d6-1cc2-13e4-00e0bb33beb9 序号: 18581 注册 用户代理:Asterisk PBX 允许:邀请、确认、取消、选项、再见、推荐、订阅、通知 支持:替代 接触: 内容长度:0 SIP/2.0 403 认证用户名与账户名不匹配 通过:SIP/2.0/UDP 192.168.254.157:5060;已接收=192.168.254.157 从: 收件人:;tag=as3fb867e2 呼叫 ID:fa4451d8-01d6-1cc2-13e4-00e0bb33beb9 序号: 18581 注册 用户代理:Asterisk PBX 允许:邀请、确认、取消、选项、再见、推荐、订阅、通知 支持:替代 内容长度:0 计划在 32000 毫秒内销毁 SIP 对话“fa4451d8-01d6-1cc2-13e4-00e0bb33beb9”(方法:REGISTER)
答案1
我发现这是一个适合我的情况的解决方法,但我一般认为这是一个糟糕的黑客行为。我在 chan_sip.c 中发现了这个精华:
/* 如果没有秘密就总是可以的 */ 如果 (ast_strlen_zero(secret) && ast_strlen_zero(md5secret)) 返回 AUTH_SUCCESSFUL;
因此,我的解决方法是:
秘密=
在每个扩展的配置中。这对我来说没问题,因为我不担心网络上有人试图注册不属于他们的扩展。但总的来说,这是完全不安全的,因为它会绕过任何进一步的身份验证(包括我的用户名不匹配问题)。
答案2
从我所能找到的所有内容来看(我相信您已经查看过),您的设置似乎是正确的。
我唯一的建议是设置defaultip=192.168.254.12
,这似乎是我所读到的标准和你的 sip.conf 之间唯一缺少的东西
祝你好运!