假设我有一个带有一堆连接的 Asterisk 系统:有电话(在 上注册*
)和提供商(希望建立 SIP 中继来拨打大量具有不同呼叫者 ID 的电话)。
以下是我对如何通过经过身份验证的 SIP 中继拨打电话的看法:SIP 中继的远程端应发送设置INVITE
为其From
身份(用于身份验证的用户名)的字段,并将Contact
该字段设置为此呼叫的呼叫者 ID。
真的吗?
我为什么相信这是正确的:现在,我无法指定username
/secret
和host=<IP>
-- 以便远程端注册,我需要说host=dynamic
。因此,我可以将“伪中继”设置为一组分机,或者我需要设置中继,而host
无需身份验证。没有身份验证是不好的。
那么,以上内容是真的吗?Asterisk 是否会通过查看From
字段并使用字段中的来电显示来匹配对等方Contact
?
如果不是这样 --- 经过验证的 SIP 中继应该如何工作?
谢谢!
答案1
阅读 O'relly 的书《Asterisk:电话的未来》
它对所有 SIP 协议进行了很好的描述。
您的问题可以解决
host=dynamic
defaultip=ip_of_other_side
deny=0.0.0.0/0.0.0.0
permit=ip_of_other_side/255.255.255.255
或者
host=
两侧均无注册字符串
答案2
因此,上述(关于From
和Contact
)可能是正确的,但不一定是正确的。它是否有效可能取决于实际的同行配置。
当*
收到INVITE
带有“wild” From
(未分配到任何对等点的数字)的请求时,它会响应Unauthorized
,并添加不带任何username
字段的身份验证标头(相反:当*
收到INVITE
带有“有效”对等点名称的请求时From
,它会将其包含在身份验证标头中,因此它可以与对等点匹配以进行来电username
)。
此响应应足以进行身份验证:客户端发送“相同”INVITE
且具有相同From
和Contact
,以及带有Authorization
有效username
字段的标头。然后,Asterisk 根据给定值匹配传入的对等点username
。
实际上,任何电话都可以这样做;因此 SIP 中的“SIP 电话”和“SIP 对等体”之间没有明显区别。RFC 3261不包含任何“trunk”字样。
附言:如果有人能更好地解释,我会很高兴(并且肯定会接受更好的答案)。