防火墙是网络的单点——它挂了,整个网络就断了。双机热备是标配。但很多人配完发现:设备切换成功了,用户却感觉断网了。这篇文章就讲这个「切换成功但业务断」的原因。

一句话概括:VRRP 决定「谁来转发」,HRP 决定「转发状态是否连续」。只有 VRRP 没有 HRP,切换瞬间所有已建立的连接全部作废。

为什么一个协议不够

普通的路由器/交换机做冗余,VRRP 就够了——因为它们是无状态转发,换个设备接着转就行。

防火墙不一样,它是有状态的:它记着几万条会话表。设备一切换,新设备上什么都没有:

切换瞬间发生了什么
切换前:FW1(主)上有 30000 条会话表
        └─ 用户 A 的 TCP 连接:10.1.1.10:1025 ↔ 200.1.1.1:443  ESTABLISHED

FW1 故障 → VRRP 切换 → FW2 接管

FW2 上的会话表:空的
用户 A 的报文到达 FW2:
  → 查会话表,没有
  → 当成首包,重新匹配安全策略
  → 策略可能允许(那就重建会话,用户感觉卡一下)
  → 但 TCP 序列号/窗口对不上,多数情况直接 RST

用户看到的现象:网页「刷新失败」,正在下载的文件中断

所以必须有第二个协议,把 FW1 的状态实时搬到 FW2 上。这就是 HRP(Huawei Redundancy Protocol)。

两个协议的分工

VRRPHRP
解决什么谁当主、对外用哪个虚拟 IP/MAC状态怎么同步
跑在哪业务接口(对外提供虚拟网关地址)心跳接口(专用链路)
决定什么流量走哪台设备哪台设备是「HRP 主」,由谁往谁同步
典型配置vrrp vrid 1 virtual-ip …hrp enable / hrp interface …
少了它会怎样两台都转发或都不转发,流量乱切换后业务中断

两种模式:主备 vs 负载分担

防火墙双机热备的主备模式与负载分担模式对比,以及 HRP 备份的内容
▲ 主备与负载分担的差异,以及 HRP 必须同步的四类状态

主备模式(Active / Standby)

负载分担模式(Active / Active)

负载分担听起来更好,但实际项目里主备用得更多。原因是:出口带宽通常不是瓶颈(瓶颈在运营商),而负载分担带来的路径一致性问题和排错难度是实打实的。

HRP 备份哪些内容

类别具体内容不同步会怎样
会话表所有已建立的连接切换后连接全断(最严重)
server-mapASPF 动态生成的放行表项切换后 FTP/SIP 等数据连接建不起来
动态 NAT 表项地址端口的转换映射切换后 NAT 失效,内网访问外网断
配置与状态策略、NAT、路由、主备状态两台配置不一致,切换后行为不一致

配置同步用 hrp auto-sync config 打开后,在主的上面改策略会自动同步到备——很方便,但也意味着改错了一起错。生产环境建议改配置前先确认同步状态。

心跳链路:别把它当儿戏

hrp track:最容易漏的一步

这是导致「切换成功但业务不通」的第二个常见原因。

场景还原
拓扑:  [运营商A]——FW1(主)——内网
                    |
                心跳线
                    |
        [运营商B]——FW2(备)——内网

故障:FW1 的上行口(连运营商 A)断了,但 FW1 自己没死

如果没有 hrp track:
  FW1 依然是 VRRP 主 → 内网流量继续送给 FW1
  FW1 发现上行口 down → 没有默认路由可用 → 丢包
  FW2 在备着,什么都不做
  → 内网完全断网,但两台设备看起来都"正常"

配上 hrp track 之后:
  hrp track interface GigabitEthernet1/0/0     # 监控上行口
  上行口 down → 主动降低优先级 → VRRP 切换 → FW2 接管
  → 业务自动恢复

华为 USG 配置

huawei usg · 双机热备(主备模式)
# ── FW1(主)──────────────────────────────
# ① 心跳接口
interface GigabitEthernet1/0/3
 ip address 10.0.0.1 30
hrp interface GigabitEthernet1/0/3 remote 10.0.0.2

# ② 开启 HRP
hrp enable
hrp auto-sync config            # 配置自动同步到对端
hrp track interface GigabitEthernet1/0/0   # ★ 监控上行口

# ③ 业务接口跑 VRRP
interface GigabitEthernet1/0/1
 ip address 10.1.1.2 24
 vrrp vrid 1 virtual-ip 10.1.1.1 active     # 本机是主
 vrrp vrid 1 priority 120                   # 主设备优先级高

# ④ 状态同步要覆盖的内容(默认已包含,确认一下)
hrp sync session all            # 同步所有会话表
hrp sync server-map             # 同步 server-map
hrp sync nat                    # 同步动态 NAT

# ── FW2(备)──────────────────────────────
# 配置基本一致,差别只在:
#   vrrp vrid 1 virtual-ip 10.1.1.1 standby
#   vrrp vrid 1 priority 100                 # 备设备优先级低
#   hrp interface GigabitEthernet1/0/3 remote 10.0.0.1

# ★ 负载分担模式:两台设备各起两组 VRRP,互相交叉主备
#   FW1: vrid 1 active  / vrid 2 standby
#   FW2: vrid 1 standby / vrid 2 active
#   内网一半走 vrid 1 的网关,一半走 vrid 2 的网关

验证与排错

huawei usg
display hrp state                       # ★ HRP 运行状态(主/备/心跳)
display hrp state verbose               # 详细信息:同步了哪些、心跳延迟
display hrp configuration               # HRP 相关配置
display hrp interface                   # 心跳接口状态

display vrrp                            # VRRP 主备状态
display vrrp verbose                    # 含优先级、虚拟 IP、切换计数

display firewall session table          # 对比两台的会话数是否接近
display hrp statistics                  # 同步报文统计(丢包说明心跳有问题)

排错顺序:

一句话总结:VRRP 管「谁来转发」,HRP 管「状态连不连续」,hrp track 管「上行断了要主动让位」。三件事缺一件,双机热备就是摆设。

📌 本篇整理自 2024–2025 的「数通」学习笔记(HCIE-Datacom 方向)

合并了原始笔记中「双机热备 / 高可用」两页。
原笔记以组网截图为主,本文把「切换瞬间发生了什么」用序列化的方式重写了一遍,并补上 hrp track、双主、负载分担路径一致性这几个实际项目才会暴露的坑。
配置命令保留华为 VRP 原样。