山石防火墙主主模式双机热备配置与调优实战指南
1. 项目背景与核心价值:为什么需要主主模式的双机热备?
在任何一个对网络连续性有高要求的生产环境中,防火墙作为网络边界的安全闸门,其自身的可靠性直接决定了整个业务的可用性。单台防火墙部署,无论其硬件多么高端,都始终存在单点故障的风险——一次计划内的设备升级、一次意外的硬件故障、甚至一次错误的配置操作,都可能导致网络中断,业务停摆。因此,部署双机热备(High Availability, HA)成为了保障核心网络边界“永不掉线”的标配方案。
山石网科(Hillstone)防火墙的HA功能,正是为此而生。它通过将两台物理防火墙虚拟化为一个逻辑的、高可用的安全网关,确保在任何时刻,至少有一台设备能够正常处理流量。而HA模式中的“主主模式”(Active-Active Mode),相较于更常见的“主备模式”(Active-Standby Mode),在资源利用和性能扩展上有着独特的优势。
简单来说,主备模式下,只有一台设备(Active)处理所有流量,另一台(Standby)处于闲置监听状态,仅在心跳或会话同步时工作。一旦主设备故障,备设备接管。这种模式简单可靠,但备设备的计算资源(CPU、内存)在平时是完全浪费的。而主主模式则允许两台设备同时处于工作状态,共同分担网络流量。这不仅最大化利用了硬件投资,更能在业务流量增长时,提供近乎线性的性能扩展能力。例如,你可以将一部分服务器区域的流量指向设备A,将办公区域的流量指向设备B,实现流量的负载分担。
然而,主主模式的配置逻辑比主备模式要复杂一些,它不仅仅是建立心跳线那么简单,还涉及到会话同步、流量分配策略(通常依赖上游路由设备或自身策略)等多个环节。网上能找到的配置指南往往版本陈旧、步骤零散,或者语焉不详。本文将基于山石网科最新的StoneOS操作系统(以5.5R8及以上版本为参考),为你拆解一套从零开始、步步为营的AA模式双机热备详细配置流程,并穿插大量官方文档未必会写的实操细节和避坑要点。
2. 部署前的核心规划与物理连接
在登录设备命令行或Web界面之前,周密的规划是成功的一半。盲目接线和配置很容易导致后期排查困难,甚至需要推倒重来。
2.1 网络拓扑与接口角色定义
一个典型的主主模式HA部署,至少需要规划以下几类接口和连线:
心跳接口(HA Link):这是两台防火墙之间用于状态同步和健康检查的专用通道。强烈建议使用设备背板上的专用HA接口(如果有),或者使用一个独立的物理接口。切勿将业务流量和心跳流量混在同一个物理接口或VLAN中,否则业务流量的突发拥塞可能导致心跳报文延迟或丢失,从而引发不必要的设备切换(脑裂)。
- 连线:设备A的HA口 —— 直连网线 —— 设备B的HA口。
- IP规划:心跳接口通常只需要配置一个链路本地地址或简单的IP地址,因为其通信仅限于两台防火墙之间。StoneOS会自动处理这部分。
业务接口:连接内外网的接口。在主主模式下,两台防火墙的业务接口都需要连接到网络中。这里的关键在于IP地址的配置模式。
- 配置模式选择:山石防火墙HA支持两种IP配置模式——
IP模式和MAC模式。- IP模式:两台设备使用相同的虚拟IP(Virtual IP, VIP)和不同的真实IP(Real IP)。上游路由器和下游设备都将网关指向这个VIP。这是最常用、最推荐的方式,对网络拓扑改动最小。
- MAC模式:两台设备使用不同的IP,但通过虚拟MAC地址进行通告。这种方式在某些特定的网络环境中使用。
- 连线:以一对Trust区域接口为例。设备A的GigabitEthernet 0/1和设备B的GigabitEthernet 0/1,需要连接到同一台二层交换机(或堆叠交换机)的同一个VLAN中。同理,Untrust区域接口也是如此。确保连接同一业务区域的两根网线在交换机侧属于同一个广播域(同一个VLAN)。
- 配置模式选择:山石防火墙HA支持两种IP配置模式——
管理接口(可选但推荐):用于带外管理(Out-of-Band Management)。为每台设备配置一个独立的、与业务网络隔离的管理IP,方便在业务网络故障时仍能访问设备进行排查。
2.2 硬件与软件版本一致性检查
这是铁律,必须在开工前确认:
- 硬件型号:两台防火墙的硬件型号必须完全相同。例如,不能将一台E5860和一台E5870组成HA。
- 软件版本:两台设备的StoneOS操作系统版本必须完全一致,包括主版本、次版本和补丁号(如5.5R8P1)。版本不一致会导致HA组建立失败或出现不可预知的兼容性问题。
- 许可证书:关键的安全功能许可(如AV、IPS、URL过滤等)最好在两组设备上都激活,并且确保特征库版本一致。虽然HA同步后,主用设备的许可状态可以覆盖备用设备,但为了减少切换后的潜在问题,保持一致性是最佳实践。
3. 分步配置详解:从基础设置到策略同步
假设我们使用IP模式进行配置。以下步骤以命令行界面(CLI)为主,因为CLI在配置HA时更为清晰和高效,Web界面操作逻辑类似。
3.1 初始设备独立配置
在连接HA线缆之前,先分别对两台设备(假设为FW-A和FW-B)进行最基本的网络配置,确保它们能独立管理。
- 登录设备:通过Console口或默认管理IP登录每台设备。
- 配置管理IP(以FW-A为例):
为FW-B的对应接口配置另一个IP,如# 进入配置模式 configure # 进入接口配置上下文 interface ethernet0/0 # 配置IP地址并放通管理服务 ip address 192.168.1.100/24 service ssh service ping service web exit192.168.1.101/24。 - 保存配置:在两台设备上分别执行
write命令保存当前配置。
3.2 配置HA基本参数与心跳
现在开始配置HA核心部分。建议先在一台设备(如FW-A)上完成大部分HA配置,另一台设备只需配置最基本的HA参数,然后加入集群。
在FW-A上启用HA并设置组参数:
configure # 进入HA配置模式 high-availability # 设置HA集群的组ID和名称,两台设备必须相同 set group 1 set name HS-Cluster # 设置HA模式为 active-active (主主) set mode active-active # 配置心跳接口,假设使用ethernet0/7作为专用HA口 set ha-interface ethernet0/7 # 配置心跳IP地址。这里配置的是心跳链路上的本地IP和对端IP。 # 本地IP: 169.254.1.1, 对端IP: 169.254.1.2 set ha-ip 169.254.1.1 255.255.255.252 peer-ip 169.254.1.2 # 设置本设备在集群中的优先级,用于初始主设备选举。数字越大优先级越高。 set priority 150 # 启用配置 enable exit注意:
ha-ip配置中的子网掩码通常使用/30(255.255.255.252),这为心跳链路提供了一个最小的点对点网络。peer-ip就是你打算为对端设备配置的IP。在FW-A上配置业务接口的虚拟IP(VIP)和真实IP(RIP): 这是IP模式的核心。假设业务接口
ethernet0/1属于Trust区域,连接内网。interface ethernet0/1 # 先配置本设备的真实IP (Real IP) ip address 10.10.10.2/24 # 配置集群的虚拟IP (Virtual IP),即网关地址 ip address 10.10.10.1/24 virtual # 同样,配置Untrust区域接口(如ethernet0/2) interface ethernet0/2 ip address 202.96.1.2/29 ip address 202.96.1.1/29 virtual exit关键点理解:
virtual关键字标识的IP就是VIP,是网络中其他设备使用的网关地址。真实IP(RIP)是每台防火墙自身的物理接口IP,用于设备间通信和管理。在HA组建立后,只有当前处理该区域流量的设备才会响应ARP请求,将VIP映射到自己的MAC地址。
3.3 配置会话同步与设备监控
主主模式要协同工作,必须同步连接状态(会话),否则一台设备上建立的连接,在流量被路由到另一台设备时会被拒绝。
- 配置会话同步接口: 会话同步流量通常与心跳流量共用同一个HA链路,但也可以指定单独的接口。为了简化,我们使用心跳链路进行同步。
high-availability # 设置会话同步的源接口和对端IP set session-sync interface ethernet0/7 peer-ip 169.254.1.2 # 启用会话同步 set session-sync enable exit - 配置设备监控(可选但重要): 除了心跳线,还可以通过监控业务接口或网关的可达性来更精准地触发切换。
实操心得:对于主主模式,监控配置需要谨慎。如果你监控了一个网关,而该网关对于两台设备由于路由路径不同导致可达性不一致,可能会引起不必要的切换。通常,监控直连接口的物理状态(high-availability # 创建一个监控组,例如监控上行链路 monitor-group uplink # 向监控组中添加监控项,例如监控Untrust接口的物理状态 interface ethernet0/2 # 或者监控一个外部网关的可达性 gateway 202.96.1.3 exit # 将监控组与HA绑定 set monitor-group uplink exitlink)是比较安全的方式。
3.4 将第二台设备(FW-B)加入集群
在FW-A上完成主要配置后,在FW-B上进行最小化配置。
- 在FW-B上配置基础HA参数(必须与FW-A匹配):
configure high-availability set group 1 set name HS-Cluster set mode active-active set ha-interface ethernet0/7 # 注意:ha-ip的本地IP和对端IP要与FW-A的配置互换 set ha-ip 169.254.1.2 255.255.255.252 peer-ip 169.254.1.1 # 设置一个比FW-A低的优先级,例如120 set priority 120 enable exit - 在FW-B上配置业务接口的IP:
interface ethernet0/1 # 配置FW-B自己的真实IP,与FW-A不同 ip address 10.10.10.3/24 # 配置相同的虚拟IP ip address 10.10.10.1/24 virtual interface ethernet0/2 ip address 202.96.1.3/29 ip address 202.96.1.1/29 virtual exit - 连接心跳线并保存配置: 确保FW-A和FW-B的
ethernet0/7口用网线直连。然后在两台设备上分别执行write保存配置。
3.5 验证HA状态与流量分担
配置保存后,HA组应该开始建立。使用以下命令查看状态:
# 查看HA摘要状态 show high-availability # 查看详细的HA状态和信息 show high-availability status # 查看会话同步状态 show high-availability session-sync status正常的输出会显示两台设备均为“Active”状态(主主模式),组状态为“UP”,会话同步状态为“Enabled”且同步队列正常。
如何实现流量分担?山石防火墙自身不提供复杂的负载均衡算法。在主主模式下,流量分担依赖于网络侧的路由策略。常见做法有:
- 基于源IP的ECMP(等价多路径路由):在上游核心交换机或路由器上,配置到内网VIP(10.10.10.1)的两条等价静态路由,下一跳分别指向FW-A和FW-B的真实IP(10.10.10.2和10.10.10.3)。这样,去往内网的流量会根据源IP的哈希值被分摊到两台防火墙。
- 策略路由(PBR):通过策略将特定网段或协议的流量定向到其中一台防火墙的真实IP。
4. 高级调优与关键故障排查指南
配置通了只是第一步,要让HA集群稳定运行,还需要一些调优和知道如何排错。
4.1 关键参数调优建议
- 心跳间隔与失效时间:
set hello-interval和set dead-interval。默认值通常为1秒和3秒。在低延迟、高可靠的直连心跳线上,可以保持默认。如果心跳线经过复杂网络,可能需要适当调大,但要以牺牲故障检测速度为代价。 - 会话同步调优:
set session-sync max-queue-size:同步队列大小。如果网络中有大量短时连接(如HTTP),可以适当调大此值,防止队列溢出导致同步延迟。set session-sync sync-limit:每秒同步会话数的限制。在高性能场景下,可以调高以加速同步。
- 抢占与延迟切换:
high-availability # 启用抢占:当原主设备恢复后,是否抢回主角色。主主模式下意义不大,通常禁用。 set preempt disable # 设置延迟切换:监控项失效后,等待一段时间再切换,避免网络抖动。 set hold-down 5 exit
4.2 常见故障现象与排查思路
现象一:HA组状态一直为“DOWN”或“NEGOTIATING”。
- 排查步骤:
- 检查物理连接:确认心跳线已正确连接,且接口物理状态为UP (
show interface ethernet0/7)。 - 检查配置一致性:逐条核对两台设备的
group id、name、mode、ha-interface、ha-ip(注意本地IP和对端IP是否配对)。 - 检查网络可达性:在FW-A上
ping source 169.254.1.1 169.254.1.2,看是否能通。检查是否有ACL或本地策略阻止了心跳报文(UDP端口695)。 - 检查版本一致性:再次确认
show version输出完全一致。
- 检查物理连接:确认心跳线已正确连接,且接口物理状态为UP (
现象二:会话不同步,导致部分连接中断。
- 排查步骤:
show high-availability session-sync status查看同步状态是否为“Enabled”,同步队列是否有持续积压(Current Queue一直很高)。- 检查
session-sync配置的接口和IP是否正确。 - 使用
debug high-availability session-sync命令打开调试信息(生产环境慎用),观察同步报文是否正常收发。 - 确认两台设备的时间是否同步(
show clock),巨大时间差可能导致会话状态异常。
现象三:脑裂(Split-Brain),即两台设备都认为自己是Active,导致网络混乱。
- 原因与解决:这是最严重的问题,通常因心跳链路完全中断且没有配置监控组(或监控组未生效)导致。每台设备都检测不到对方,于是都提升自己为Active。
- 立即处理:手动登录其中一台设备,执行
high-availability disable临时禁用其HA功能,让网络先恢复。 - 根因排查:彻底检查心跳链路(线缆、光模块、接口)。务必配置监控组(Monitor Group),让设备在心跳丢失时,还能通过业务链路的状态来判断自身是否应该成为Active。例如,监控上行接口,如果本设备的上行接口也断了,那它就不应该抢占Active角色。
- 立即处理:手动登录其中一台设备,执行
现象四:切换后网络不通。
- 排查步骤:
- 检查新Active设备上相关业务接口的VIP是否生效 (
show interface查看VIP是否存在)。 - 检查ARP表:在新Active设备上
show arp,确认VIP对应的MAC地址是否已更新为本设备的物理MAC。 - 检查上游设备:登录核心交换机,查看ARP表,确认到VIP的MAC地址是否已更新。有时上游设备有ARP缓存老化时间,需要等待或手动清除。
- 检查安全策略:确认所有必要的安全策略(Security Policy)已在两台设备上同步并启用。HA默认会同步策略,但需检查同步日志。
- 检查新Active设备上相关业务接口的VIP是否生效 (
配置山石防火墙双机热备主主模式,是一个对逻辑性和细致度要求都很高的任务。整个过程的核心在于理解“虚拟IP”和“真实IP”在网络中的角色,以及心跳、会话同步、监控这三个机制是如何协同工作来保障无缝切换的。每一次配置变更后,养成使用show high-availability系列命令进行验证的习惯,并在非业务时间进行实际的故障模拟演练(如拔掉心跳线、关闭一台设备电源),是检验HA配置是否真正生效、团队应急流程是否顺畅的唯一标准。纸上得来终觉浅,绝知此事要躬行。
