为什么会话状态与高可用性同步?

网络工程 通讯协议
2021-07-20 05:55:59

正如我的标题所说,为什么在大多数 HA 协议中,会话状态在对等方之间同步?我假设像 Esablished、Invalid、New 和 Related 这样的 TCP 状态是同步的,但我不明白你为什么要在对等点之间同步,因为防火墙与 2 个对等点之间的 TCP 流无关?

2个回答

...因为防火墙与 2 个对等点之间的 TCP 流无关?

有状态防火墙对每个 TCP 连接都有一个状态,并且只允许匹配此状态的数据包在此 TCP 连接的上下文中有效 - 并且只有有效数据包才会通过。“有效”不仅意味着存在已建立的连接,还意味着数据包的序列号与预期序列号的范围相匹配。

这些预期的序列号是连接状态的一部分,只要连接的新数据包通过,它们就会更改。就这些状态而言,必须在 HA 集群内的防火墙对等点之间定期同步。

考虑具有应用了入口和出口访问列表的“外部”接口的网络设备。

如果设备是无状态路由器,则根据入口 acl 评估入口流量,并根据出口 acl 应用出口流量。这需要两个 ACL 都允许返回流量。通常这包括“允许任何已建立的 tcp”加上特定的 UDP 返回流量许可。示例:入口 acl 中的“permit udp any eq 53 any”以允许内部解析器的 DNS 返回流量。

如果设备是有状态防火墙,则根据出口 ACL 评估出口发起的流量。防火墙会记住其状态表中的连接,并自动允许返回入口流量,无需在入口 ACL 中获得许可。

这消除了可以利用的返回“permit tcp any any created”和“permit udp any eq 53 any”规则的需要。

状态防火墙的一个问题是流量必须双向流经同一设备才能允许返回流量。如果防火墙没有 tcp 流量的状态条目,则已建立的流量将被拒绝。

这在 HA 环境中是一个真正的问题。必须设计一对有状态防火墙,以便在正常情况下所有流量都通过其中一个。通常这是通过主动/被动防火墙集群内外的第 2 层 vlan 完成的。防火墙同步它们的状态,因此在故障转移后,预先存在的 tcp 套接字仍然连接并且仍然允许返回流量。这对 HTTP 流量来说不是那么重要,但对许多其他长时间运行的连接(例如数据库连接)至关重要。

一些防火墙供应商尝试实现具有连续同步的第 3 层双活防火墙集群,从而消除对第 2 层 vlan 的需要。其工作的可靠性(尤其是在软件升级期间)因供应商而异。

拥有多个防火墙 ISP 点和内部骨干网的大型企业还有另一个问题:来自特定“站点”的流量必须通过同一防火墙进出公司,才能允许返回的进入流量。