pfSense高可用(HA)功能介绍

什么是高可用性?

高可用性 (HA) 是系统工程中的一个重要概念,它消除了单点故障,确保即使出现硬件或软件故障也能持续运行。特定于网络,它允许网络工程师或管理员更换或修复故障设备或组件,而不会影响服务和最终用户。从概念上讲,这类似于数据存储的 RAID1,当使用一对硬盘以镜像存储冗余数据时,即使一个硬盘发生故障,作为一个整体,阵列也不会丢失数据并且仍然可以访问。

IT行业经常使用的一句话:“二为一,一为无”。如果有两个同样的设备,你应该只期望其中一个是正常的,因为硬件随时可能因任何原因发生故障,而且通常是在最不希望发生的时候出现。如果未做故障备份,正常工作可能会受到影响。

6100HARack生活时尚

在考虑是否应该进行高可用设置时,必须权衡风险和收益。如果业务的特定功能被认为对业务的盈利能力至关重要,却又没有适合的冗余,那么应该尽快进行补救,并经常进行测试来确保功能正常。

CARP – 跳动的心脏

CARP,即通用地址冗余协议,是一种类似于VRRP 的协议,它允许局域网上的一组主机“共享”一个IP地址,监控当前哪个设备对其具有“控制权”,并允许其中一个设备始终控制可用设备之间的地址。

在典型的CARP配置中,两个防火墙将分别启用三个 IP 地址:一个用于两个节点上的接口本身,另外一个用于CARP 虚拟 IP 地址 (VIP) 的共享IP地址。承载用户流量的每个接口都必须满足这一要求,包括广域网。

它的工作原理如下 :

  1. 在使用CARP的接口上连接到两个节点的交换机必须能够正确处理多播流量。
  2. WAN IP必须是静态地址,掩码必须小于29码,才能为CARP提供3个以上的可用地址。
  3. 假定两台设备上仅使用一个 WAN 和一个 LAN 接口,LAN 接口使用192.168.1.0/24网络, WAN 接口使用198.51.100.0/24网络 。
  4. 防火墙IP地址设置示例:
    1. 防火墙1是主节点,LAN地址192.168.1.2,WAN地址198.51.100.201
    2. 防火墙2是辅助节点,LAN地址192.168.1.3,WAN 地址198.51.100.202
    3. 两个防火墙共享一个用于LAN的CARP IP地址192.168.1.1,并且做为所有客户端的网关。WAN 的共享 CARP IP 地址是 198.51.100.200。

配置完成后,防火墙1将以每秒一次的设定基本频率在网络上向每个配置了CARP 的接口发送心跳,让防火墙2知道它仍然“活动”并处理流量。默认情况下,pfSense将为防火墙2 配置100的偏差,这意味着防火墙2将假设一切正常,只要它继续接收不超过基本 + 偏差(1 秒 + 100/256 秒)的心跳。

在任何时候,防火墙2在偏差指定的分配时间内停止接收来自防火墙1的心跳,它将假设防火墙1不再处理流量并接管主控角色。这会将CARP IP地址的控制权“转移”到防火墙2上,并立即接手开始处理流量。然后,防火墙2将开始在此接口上传输心跳,并代替防火墙1运行,直到它再次开始接收来自防火墙1的心跳。默认的CARP行为是执行抢占,这意味着一旦防火墙1重新上线,防火墙2将识别到比自己的基本值和偏差值更快的心跳,防火墙2便其状态更改为辅助角色。

这一切都在短短几秒内完成,可以最大限度减少网络断流的影响。

pfsync – 跟踪状态

pfsync是pfSense上高可用的状态同步组件。它同步两个设备的状态表,以确保防火墙操作系统的数据包过滤器 (pf) 组件准备好在另一个节点发生故障时接管现有的连接。

如果没有pfsync,如果防火墙1在状态不同步的情况下故障转移到防火墙2,则任何现有的有状态的连接都将中断并需要重新建立。这会影响带有状态防火墙规则的TCP等协议,会给最终用户和应用程序网络连接带来麻烦。

如果没有跨两个节点的状态同步,每次下载、文件传输、备份、电子邮件客户端等都会产生一个短暂的连接“暂停”,甚至可能需要关闭和重新打开连接/程序。高可用的目标是在发生转移时确保网络的连续性,这显然不能满足要求。

由于pfsync涉及身份验证,因此建议在专用SYNC接口上运行,以确保连接的可靠性。

XMLRPC – 同步配置

高可用的XML远程过程调用 (XMLRPC) 组件负责保持主防火墙和辅助防火墙之间的配置同步。这可以确保防火墙规则、CARP VIP、NAT 配置等在两个防火墙之间保持相同。如果没有XMLRPC,则管理员需要记住在两个防火墙上进行每一次更改,这会大大增加出错的概率。

每次在主防火墙上进行更改时,都会运行XMLRPC同步过程。使用专用的用户名和密码,并在pfsync使用的同一SYNC接口上运行。

出站NAT和DHCP – 绑定一起

配置高可用性的最后一部分是为客户端和NAT配置DHCP,以便与新的高用用设置一起使用,尽管从技术上讲,它并不完全是pfSense高可用组件的一部分。

对于出站NAT,默认情况下,pfSense利用WAN接口地址将NAT应用于防火墙后面的私有网络范围,以及Internet上IPv4中的公共和可路由IP地址。如果保持不变,这对HA来说是一个问题,因为如果pfsync中的状态表转移到辅助防火墙,它将只与主防火墙的WAN IP地址匹配,从而破坏状态。要解决这个问题,必须配置混合或手动出站NAT,然后创建规则来将IPv4流量NAT到所有相关WAN 接上的CARP VIP地址。这将确保状态在故障转移时在两个防火墙上都有效。

DHCP 范围,无论是在pfSense还是其他的DHCP服务器上,都需要使用CARP VIP作为客户端网关,而不是主防火墙的实际接口IP地址。否则,如果主防火墙离线,客户端将无法访问其上游网关,从而失去所有连接。如果有任何客户端使用静态IP地址,其网关地址也必须为CARP VIP。

结论

综上所述,pfSense的高可用功能让所有组件协同工作,提供了一个出色且强大的软硬件冗余解决方案,即使在单个硬件出现故障的情况下也会确保网络正常,减少对企业正常生产经营和办公业务的影响。