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

我们有一对面向Internet的SIP PROXY / REGISTRAR服务器(用于弹性和负载平衡)。 当一个SIP电话注册时,它将由一个REGISTRAR服务器(循环DNS)处理 – 并且由于这个注册被更新,所以保持防火墙端口/地址转换。 因此,当一个呼叫被发回给电话时,INVITE消息成功通过防火墙。

但是,电话可能会注册到两台服务器中的一台,但INVITE可能来自另一台服务器。 在这种情况下,呼叫失败,因为在防火墙上没有翻译。

SIP协议中是否有这个function? 任何其他的想法? 随着stream量的增长,我们无疑会终止两台以上的服务器 – 所以问题会升级。

谢谢,

麦克风

Junos 12.1R2.9上的Juniper SRX存在同样的问题。

SIP提供商有4个IP地址通过DNS循环轮换,显然有数百个(最多512个IP地址)发送RTP数据包。

以前的防火墙是一个旧的,但易于使用的Snapgear。 瞻博networking具有对称NAT,并且似乎更严格。

我们设法使用一个持久的源nat从内部到外部的audio。

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

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

持久性NAT确保stream量被允许。 显然它工作。 也许第2步可以跳过,但由于停机时间的数量,我已经离开了它。

nat {source {pool sip-zipt-nl-no-round-robin {address {131.131.160.2/32; }} address-persistent; 接口{端口重载closures; }规则集trust-to-untrust {来自区域信任; 区域不信任; rule source-nat-rule {match {source-address 0.0.0.0/0; } {source-nat {interface {persistent-nat {permit any-remote-host; }}}}}}

rule-set sip-incoming {来自区域untrust; 区域信任; rule sip-zipt-nl-no-round-robin {match {source-address 131.131.160.0/23; destination-address 0.0.0.0/0; }然后{source-nat {pool {sip-zipt-nl-no-round-robin; }}}}}}

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