3CX SIP 中继的注册和验证类型

验证类型

3CX 中的 SIP 中继有以下 4 种验证类型:

  • “无需验证 – 基于 IP”:当选择这个类型时,3CX 不会去向 SIP 中继验证。在某些情况下可能会发送质询的请求。如果 3CX 不知道入站的 INVITE 该与哪条 SIP 中继关联,则可能发生这种情况。
  • “呼入 – 仅呼入” – 3CX 在入站的 INVITE 消息中发送质询请求。
  • “呼出 – 仅呼出” – 3CX 不发送 REGISTER 消息,但准备在提供者质询呼出 INVITE 时进行身份验证。
  • “基于注册/账号” – 3CX 使用用户提供的账号密码发送注册(REGISTER)消息。

验证 ID 和密码

在 SIP 中继设置中如果选择了注册方式,那么系统会要求用户输入验证的 ID 和密码进行注册或者外呼。

根据用户选择的验证类型,3CX 会在最初尝试发送不带任何身份验证信息的 REGISTER/INVITE SIP 消息。如果供应商回复了一个鉴权的请求(比如 “407 Proxy Authentication Required” 或 “401 Unauthorized”),3CX 会重新发送一个带有注册验证信息的 SIP 头域消息。

下面是 3CX 在鉴权后发送的 SIP 注册请求:

验证 ID 会在 SIP 头域的 “Contact: User Part“, “To: User Part“, “From: User Part” 以及 “Proxy-Authorization” 这些字段中被使用。验证密码也会在 “Proxy-Authorization” 中被发送,但是这个值会使用 nonce 值进行加密。

三方加密

3CX 也支持三方加密验证。

在开启三方验证后,在鉴权请求后 3CX 发送的响应稍微有些不同,下面是一个 REGISTER 的 SIP 例子:

在 3 方验证的时候,”Proxy Authorization” 的 “username” 字段会用三方验证的密码填充。其他字段都和没有开启 3 方验证的时候一样。

REGISTER SIP 消息结构

本节介绍如何构建 REGISTER 消息以及 SIP 中继设置中每个值的取值。

  • Request Line URI (RURI)“: RURI 的值是在 SIP 中继设置中的 “Registrar” 参数的值。
  • Via” 头域: 默认情况下,”Via” 头域包含发送 SIP 消息的 网卡 IP 地址和 3CX 的本地 SIP 端口。这里的 IP 可以是内网 IP 或公网 IP,这取决于怎么安装的。如果想要覆盖这个默认值,在 SIP 中继的 > “选项” 标签页,在 “Put Public IP in SIP VIA Header” 中填入想要的 IP 地址。 
  • Contact” 头域:默认情况下,”Contact” 头域的 Host Part 将包含 3CX 的公网 IP 地址和本地 SIP 端口。如果 3CX 服务器有多个网卡或者在一个网络中有连接多网络的网关,这时 SIP Trunk 的发送和接收数据将走指定的网关。 在这种情况下,发送到指定网关的 3CX 公网 IP 与默认值不同。要覆盖 “Contact” 头域的默认公网 IP 地址,在 SIP 中继设置中 > “选项” 标签 > “选择IP运用到 ‘Contact’ (SIP) 和 ‘Connection'(SDP) 领域” 并设置其 IP。在 INVITE 消息的SDP中也使用相同的IP。
  • rinstance“:当 3CX 发送 REGISTER 消息的时候,”Contact” 头域也会在 “rinstance” 发送一个唯一值。即使是可选的,预期的行为是 “Contact” 200 OK 响应中包含相同的参数和值。
  • transport=TCP“:当使用 TCP 传输协议时,3CX 会在 “Contact” 头域中包含该参数。更多信息查看 DNS 解析
  • To” 头域:这里的 Host Part 部分将会填写 3CX SIP 中继中 “Registrar” 部分。
  • From“头域:这里的 Host Part 部分将会填写 3CX SIP 中继中 “Registrar” 部分。
  • Expires“头域:”Expires” 头域是 3CX 刷新注册间隔的时间。SIP 中继的供应商必须在回复的 200 OK 响应中匹配该值或者覆盖它。SIP 供应商响应的这个值,应该是 3CX 使用的重新注册的值减去 10%。可以在 SIP 中继设置的 “选项” > “重新注册超时” 修改这个值。