我们可以在单个 VIP 下配置多个 SNAT 池吗?

我们可以在单个 VIP 下配置多个 SNAT 池吗?

我这里有一个小情况,我们有一个 VIP,其中包含位于两个不同位置的 4 个节点(A 位置有 2 个节点,B 位置有另外 2 个节点),具有不同的子网(我们有单独的路由到达每个位置)。我们想要实现的是,在一个 VIP 下有两个不同的 SNAT 池,每个子网专用一个。

假设我在子网 10.0.0.0/24 下有 2 个节点,在 20.0.0.0/24 下有 2 个节点,这样流量使用 SNAT POOL:SNAT-1-->成员--> 11.1.1.1 和 11.1.1.2 到达节点 10.0.0.0/24。SNAT-2-->成员--> 12.1.1.1 和 12.1.1.2 到达节点 20.0.0.0/24。

我们如何才能针对这种特殊情况修改规则?任何帮助都将不胜感激。谢谢!

答案1

使用 iRule 非常简单:

when LB_SELECTED {
  if { [IP::addr [LB::server addr] equals 10.0.0.0/24] } {
    snatpool snat-1
  } else if { [IP::addr [LB::server addr] equals 10.0.0.0/24] } {
      snatpool snat-2
  }
}

一旦负载平衡算法确定了池成员,您就可以使用LB::服务器在里面LB_选定事件,并将其与指定子网进行比较后,应用斯纳特普尔因此。

答案2

如果 SNAT 与您的 SELF-IPS 之一位于同一网络中 - 它将自动正确选择 SNAT 地址。为每个 SELF-IP 在网络中创建一个 SNAT 地址组 - 并将其放入 SNAT 组中 - 将该组分配给 VIP。F5 将根据用于到达池成员的自 ip 自动选择 SNAT(这意味着您必须拥有一条通往每个目的地的路由,您说您确实拥有这条路由)

相关内容