多个 SIP PROXY/REGISTRAR 服务器的防火墙问题

多个 SIP PROXY/REGISTRAR 服务器的防火墙问题

我们有一对面向互联网的 SIP PROXY/REGISTRAR 服务器(用于弹性和负载平衡)。当 SIP 电话注册时,它将由其中一个 REGISTRAR 服务器(循环 DNS)处理 - 并且由于此注册是续订的,因此防火墙端口/地址转换得以维护。因此,当要将呼叫发送回电话时,INVITE 消息会成功通过防火墙。

但是,也可能出现手机在其中一个服务器上注册,但 INVITE 却来自另一个服务器的情况。在这种情况下,由于防火墙上没有转换功能,通话会失败。

SIP 协议中是否有一个功能可以实现这一点?还有其他想法吗?随着流量的增长,我们无疑会拥有两台以上的服务器 - 因此问题将会加剧。

谢谢,

麦克风

答案1

我们在 Junos 12.1R2.9 上的 Juniper SRX 上遇到了同样的问题。

SIP 提供商有 4 个 IP 地址,这些地址通过 DNS 循环更改,并且显然有数百个(最多 512 个)IP 地址发送 RTP 数据包。

之前的防火墙是 Snapgear,比较旧,但使用起来很方便。Juniper 有对称 NAT,似乎更严格。

我们设法使用持久源 nat 将音频从内部传输到外部。

对于从外部到内部的音频,我们必须添加源 nat 规则:

  1. 使用时禁用 SIP ALG。
  2. 确保始终连接到 SIP 提供商的同一 IP(例如 131.131.160.2)。
  3. 如果流量来自 SIP 提供商的 IP 范围,则将源地址映射到相同的 IP 地址 131.131.160.2。

持久 NAT 确保允许流量。显然它有效。也许可以跳过第 2 步,但考虑到迄今为止的停机时间,我还是保留了它。

nat { 源 { 池 sip-zipt-nl-no-round-robin { 地址 { 131.131.160.2/32; } } 地址持久; 接口 { 端口过载关闭; } 规则集 trust-to-untrust { 从区域 trust; 到区域 untrust; 规则源 nat 规则 { 匹配 { 源地址 0.0.0.0/0; } 然后 { 源 nat { 接口 { 持久 nat { 允许任何远程主机; } } } } }

规则集 sip-incoming { 来自区域 untrust; 到区域 trust; 规则 sip-zipt-nl-no-round-robin { 匹配 { 源地址 131.131.160.0/23; 目标地址 0.0.0.0/0; } 然后 { 源 nat { 池 { sip-zipt-nl-no-round-robin; } } } } }

答案2

实际的问题是您的代理/注册商不共享注册数据库。

相关内容