第205篇:防火墙双机热备:主备与负载分担

关键词:双机热备、HA、主备模式、负载分担、HRP、状态同步、会话同步、抢占模式、心跳线

一、引言

在企业网络中,防火墙作为安全边界的关键设备,其可用性直接关系到业务的连续性。单台防火墙一旦出现故障,将导致整个网络中断。双机热备(High Availability, HA)通过在两台防火墙之间建立冗余关系,实现了设备级的故障自动切换,是构建高可用安全架构的基础方案。

华为防火墙采用 HRP(Huawei Redundancy Protocol)协议实现双机热备,支持主备模式和负载分担两种工作模式。理解这两种模式的差异及其适用场景,是设计高可用防火墙架构的核心能力。

二、核心概念

2.1 主备模式(Active-Standby)

主备模式是最常见的双机热备方案。两台防火墙中一台作为主设备(Active),承担所有业务流量;另一台作为备设备(Standby),实时同步主设备的配置和会话状态但不转发业务流量。

主备模式的核心特征:

特性 主设备(Active) 备设备(Standby)
业务流量 全部处理 不处理
配置管理 唯一管理入口 自动同步主设备配置
会话表 维护完整会话 实时同步主设备会话
故障切换 自动降级为备 自动升级为主

2.2 负载分担模式(Active-Active)

负载分担模式下,两台防火墙同时处理业务流量,通过 VRRP 或策略路由将流量分散到两台设备上。这种模式充分利用了两台设备的硬件资源,但配置复杂度较高。

负载分担的核心要点:

  • 两台防火墙通过 HRP 同步配置和部分会话状态
  • 每台设备独立维护自己的会话表(本端创建的会话不同步到对端)
  • 通过 VRRP 组将不同业务区域的流量分配到不同设备
  • 某台设备故障时,对端接管全部流量

2.3 HRP 协议工作机制

HRP(Huawei Redundancy Protocol)是华为防火墙专有的双机热备协议,运行在两台防火墙的心跳接口上,负责以下功能的同步:

同步内容 说明
配置同步 主设备配置变更实时同步到备设备
会话同步 主设备的会话表项同步到备设备(主备模式)
状态同步 设备状态、接口状态、路由状态同步
切换协商 故障检测和角色切换协商

三、技术细节

3.1 主备模式心跳与切换流程

主备模式心跳与切换流程 - 图示

3.2 心跳链路设计

心跳链路是双机热备的基础,其可靠性直接决定热备系统的质量。华为防火墙支持两种心跳链路配置方式:

方式 拓扑 可靠性
直连心跳 两台防火墙通过专用网线直连心跳接口 中等(单链路故障)
以太网心跳 心跳接口连接交换机,支持主备两条心跳链路 高(链路冗余)

最佳实践建议使用双心跳链路:一条专用直连心跳线 + 一条通过业务交换机的心跳线。当直连心跳线故障时,自动切换到备份心跳链路。

3.3 会话同步的策略

会话同步是主备模式实现无缝切换的关键。但并非所有会话都需要同步:

会话类型 是否同步 原因
普通 TCP/UDP 会话 同步 切换后继续通信
NAT 会话 同步 维持地址映射关系
IPSec SA 同步 VPN 连接不断
大流量长时间会话 可选不同步 同步开销过大
已被 ALG 修改的会话 同步 需要维持应用状态

四、实战配置/案例分析

4.1 主备模式完整配置

# ============================================
# 设备A(主设备)配置
# ============================================
system-view
sysname FW-Primary

# 1. 创建心跳接口(Eth-Trunk聚合链路)
interface Eth-Trunk 1
 mode lacpu
 trunkport GigabitEthernet 0/0/4
 trunkport GigabitEthernet 0/0/5
 quit

# 2. 创建心跳逻辑接口
interface Channel 1
 ip address 169.254.1.1 255.255.255.252
 quit

# 3. 配置HRP
hrp
 # 设置HRP ID(主设备ID=1)
 id 1
 priority 120
 # 开启配置自动同步
 configuration enable
 # 开启会话同步
 session enable
 quit

# 4. 配置VRRP(业务接口)
interface GigabitEthernet 0/0/2
 description To-Trust-Internal
 # 实际IP(主设备)
 ip address 10.10.0.2 255.255.255.0
 vrrp vrid 10 virtual-ip 10.10.0.1
 vrrp vrid 10 priority 120
 vrrp vrid 10 preempt-mode timer delay 30
 quit

interface GigabitEthernet 0/0/0
 description To-Internet
 ip address 202.96.1.2 255.255.255.252
 vrrp vrid 20 virtual-ip 202.96.1.1
 vrrp vrid 20 priority 120
 vrrp vrid 20 preempt-mode timer delay 30
 quit
# ============================================
# 设备B(备设备)配置
# ============================================
system-view
sysname FW-Standby

# 1. 心跳接口(与主设备相同物理连接)
interface Eth-Trunk 1
 mode lacpu
 trunkport GigabitEthernet 0/0/4
 trunkport GigabitEthernet 0/0/5
 quit

interface Channel 1
 ip address 169.254.1.2 255.255.255.252
 quit

# 2. 配置HRP
hrp
 id 2
 priority 100
 # 注意:备设备不手动配置业务规则
 # 配置会自动从主设备同步
 quit

# 3. VRRP配置
interface GigabitEthernet 0/0/2
 description To-Trust-Internal
 ip address 10.10.0.3 255.255.255.0
 vrrp vrid 10 virtual-ip 10.10.0.1
 vrrp vrid 10 priority 100
 vrrp vrid 10 preempt-mode timer delay 60
 quit

interface GigabitEthernet 0/0/0
 description To-Internet
 ip address 202.96.1.3 255.255.255.252
 vrrp vrid 20 virtual-ip 202.96.1.1
 vrrp vrid 20 priority 100
 vrrp vrid 20 preempt-mode timer delay 60
 quit

4.2 负载分担模式配置要点

# ============================================
# 负载分担模式:设备A(VRP角色A)
# ============================================
hrp
 id 1
 priority 120
 # 负载分担模式
 mode load-balance
 quit

# VRRP组10:内网方向,设备A为主
interface GigabitEthernet 0/0/2
 ip address 10.10.0.2 255.255.255.0
 vrrp vrid 10 virtual-ip 10.10.0.1
 vrrp vrid 10 priority 120
 quit

# VRRP组20:外网方向,设备A为备
interface GigabitEthernet 0/0/0
 ip address 202.96.1.2 255.255.255.252
 vrrp vrid 20 virtual-ip 202.96.1.1
 vrrp vrid 20 priority 100
 quit
# ============================================
# 负载分担模式:设备B(VRP角色B)
# ============================================
hrp
 id 2
 priority 100
 mode load-balance
 quit

# VRRP组10:内网方向,设备B为备
interface GigabitEthernet 0/0/2
 ip address 10.10.0.3 255.255.255.0
 vrrp vrid 10 virtual-ip 10.10.0.1
 vrrp vrid 10 priority 100
 quit

# VRRP组20:外网方向,设备B为主
interface GigabitEthernet 0/0/0
 ip address 202.96.1.3 255.255.255.252
 vrrp vrid 20 virtual-ip 202.96.1.1
 vrrp vrid 20 priority 120
 quit

4.3 监控与排障命令

# 查看HRP状态
display hrp state
# 输出示例:
# HRP State: Primary
# HRP ID: 1
# Priority: 120
# Config sync: Success
# Session sync: Success
# Link State: Up

# 查看HRP链路状态
display hrp link
# 输出示例:
# Link ID: 1
# Interface: Channel1
# State: Up
# Protocol: HRP

# 查看会话同步状态
display hrp session
# 输出示例:
# Sync Session Count: 12,345
# Sync Rate: 500 sessions/sec

# 手动测试切换(谨慎操作)
hrp swap
# 或强制切换
hrp reset

4.4 故障案例:脑裂(Split-Brain)问题

故障现象:双机热备系统中两台防火墙同时认为自己是主设备,导致业务异常。

排查过程:

  1. 检查两台设备的 HRP 状态:
# 设备A
display hrp state
# HRP State: Primary

# 设备B
display hrp state
# HRP State: Primary  <-- 异常!两台都认为自己为主
  1. 检查心跳链路:
display hrp link
# 主心跳链路:Down
# 备份心跳链路:Down
# 两条心跳链路全部中断
  1. 根因分析:两条心跳链路同时故障(光纤被施工挖断 + 交换机端口故障),两台防火墙失去通信。在 HRP 超时后,两台设备均认为对端已故障,各自切换为 Active 角色,形成脑裂。

  2. 影响:

  3. 两台设备同时占用虚拟 IP,导致 ARP 冲突
  4. 会话表不一致,部分用户连接中断
  5. NAT 地址映射冲突,外网 IP 被重复使用

  6. 修复与预防措施:

# 临时修复:在一台设备上手动降级
hrp reset

# 长期预防:
# 1. 心跳链路物理隔离(不同路由走线)
# 2. 部署第三心跳链路(4G/5G 备份链路)
# 3. 配置防脑裂机制(通过业务交换机的心跳检测)
hrp split-brain-prevention enable

五、总结

知识点 核心要点
主备模式 一台 Active 处理业务,Standby 待命,切换时无会话丢失
负载分担 两台同时处理流量,通过 VRRP 分配业务方向
HRP 协议 华为专有协议,实现配置/会话/状态三重同步
心跳链路 建议双链路冗余,物理路径隔离
VRRP 与 HRP 配合,实现业务 IP 的无缝漂移
会话同步 主备模式全量同步,负载分担仅同步部分
抢占模式 主设备恢复后自动抢回主角色,可配置延迟时间
脑裂风险 心跳全断时两台争为主,需物理隔离+防脑裂机制

思考

  1. 主备模式和负载分担模式在会话同步方面的策略有何不同?负载分担模式下,如果一台设备故障,另一台能否接管全部会话?
  2. HRP 配置同步与手动在两台设备上分别配置业务规则相比,各有什么优缺点?在什么场景下不建议使用自动配置同步?
  3. 如果两台防火墙通过同一条以太网交换机连接心跳线,当交换机故障时会出现什么问题?如何设计心跳链路拓扑来避免单点故障?

下篇预告:第206篇:防火墙的虚拟化:虚拟防火墙(VSYS)