上下行都是路由器跑OSPF?华为防火墙双机热备自动调开销完成主备切换

双机热备在静态路由环境里的做法之前聊过——手工写路由把流量引到主用设备。但如果出口上下行接的都是路由器、全网跑 OSPF 动态路由,这套就不适用了:路由是 OSPF 自己算出来的,手工静态路由管不住动态协议的收敛逻辑。

OSPF 环境下的主备切换,华为防火墙走的是另一条路——双机热备联动调整 OSPF 开销。正常情况主用设备保持路由开销不变,流量从它走;一旦主用设备故障,设备自动把自身的 OSPF 开销调大,路由器重新算路,流量自然绕到备用设备,全程无需人工干预。下面这套 Web 配置完整过一遍:DeviceA 与 DeviceB 直路部署、业务接口都工作在三层、上下行连接路由器并运行 OSPF。

配置步骤(Web 界面)

第一步,配两台设备的接口。DeviceA 上三个口——GE0/0/1 加入 untrust 区域、IP 地址 10.2.0.1/24(连上行路由器);GE0/0/3 加入 trust 区域、IP 地址 10.3.0.1/24(连下行路由器);GE0/0/7 加入 dmz 区域、IP 地址 10.10.0.1/24(这台口有特殊用途,后面说)。操作均为选择"网络 > 接口",单击接口按参数配置后确定。DeviceB 同样三口:GE0/0/1 填 untrust 10.2.1.1/24、GE0/0/3 填 trust 10.3.1.1/24、GE0/0/7 填 dmz 10.10.0.2/24——心跳口两台地址同处 10.10.0.0/24 网段。

第二步,两台设备分别配 OSPF。选择"网络 > 路由 > OSPF",单击"新建",类型选 OSPFv2、进程 ID 填 10,确定;再新建区域 0.0.0.0 发布相邻网段。DeviceA 发布 10.2.0.0/255.255.255.0 与 10.3.0.0/255.255.255.0 两个网段,DeviceB 发布 10.2.1.0/255.255.255.0 与 10.3.1.0/255.255.255.0。

第三步,配双机热备。选择"系统 > 高可靠性 > 双机热备",单击"配置",开启"双机热备"后按参数配置并确定——DeviceA 指定为主用、DeviceB 指定为备用,心跳口用 GE0/0/7 互指对端地址,同时监控上下行业务接口 GE0/0/1 与 GE0/0/3,并开启 OSPF 开销调整功能。

第四步,配安全策略。双机热备状态建立后,在 DeviceA 上配置的安全策略会自动备份到 DeviceB,只需要配一份。这里有个极易踩的坑——缺省情况下 firewall packet-filter basic-protocol enable 处于开启状态,OSPF 报文本身也受安全策略控制,需要在上下行业务接口所在安全区域与 local 区域之间配置放行。选择"策略 > 安全策略 > 安全策略",单击"新建安全策略",先放行设备与路由器之间的 OSPF 交互,两条策略方向相反:

  • 名称:policy_ospf_1;源安全区域:local;目的安全区域:trust,untrust;服务:ospf;动作:允许
  • 名称:policy_ospf_2;源安全区域:trust,untrust;目的安全区域:local;服务:ospf;动作:允许

再配业务策略,允许内网用户访问外网:

  • 名称:policy_sec;源安全区域:trust;目的安全区域:untrust;源地址:10.3.2.0/24,10.3.3.0/24;动作:允许

第五步,四台路由器分别配 OSPF、发布相邻网段,具体命令参考路由器自己的文档。

全部完成后,两台防火墙的配置脚本如下(左 DeviceA 右 DeviceB 对照着看更清楚):

#
sysname DeviceA
#
hrp enable
hrp device active
hrp interface GE0/0/7 remote 10.10.0.2
hrp track interface GE0/0/1
hrp track interface GE0/0/3
hrp adjust ospf-cost enable
hrp authentication-key %+%##!!!!!!!!!"!!!!"!!!!*!!!!J6+;U#>V\!_e1NY[iGLXjT%k=rKkg,Z)CI0!!!!!!!!!!!!!!!:!!!!Ec&0;Y9kF~"+*IM>Io(Sm{&9' 5y$6'L:2@-!!!!!%+%#
#
interface GE0/0/1
 ip address 10.2.0.1 255.255.255.0
#
interface GE0/0/3
 ip address 10.3.0.1 255.255.255.0
#
interface GE0/0/7
 ip address 10.10.0.1 255.255.255.0
#
firewall zone trust
 set priority 85
 add interface GE0/0/3 
#
firewall zone untrust
 set priority 5
 add interface GE0/0/1
#
firewall zone dmz
 set priority 50
 add interface GE0/0/7
#
ospf 10  
 area 0.0.0.0
  network 10.2.0.0 0.0.0.255
  network 10.3.0.0 0.0.0.255
#
security-policy
 rule name policy_ospf_1
  source-zone local
  destination-zone trust
  destination-zone untrust
  service ospf
  action permit
 rule name policy_ospf_2
  source-zone trust
  source-zone untrust
  destination-zone local
  service ospf
  action permit
 rule name policy_sec
  source-zone trust
  destination-zone untrust
  source-address 10.3.2.0 24
  source-address 10.3.3.0 24
  action permit
#
return
#
sysname DeviceB
#
hrp enable
hrp device standby
hrp interface GE0/0/7 remote 10.10.0.1
hrp track interface GE0/0/1
hrp track interface GE0/0/3
hrp adjust ospf-cost enable
hrp authentication-key %+%##!!!!!!!!!"!!!!"!!!!*!!!!\FR0@B|5m51t2(SLB$(Yzq_KUB|V43Td3,.!!!!!!!!!!!!!!!:!!!!>$P4S-0S{KqT>VWoG2!K9t\i4 t;1e+vR$$U!!!!!%+%#
#
interface GE0/0/1
 ip address 10.2.1.1 255.255.255.0
#
interface GE0/0/3
 ip address 10.3.1.1 255.255.255.0
#
interface GE0/0/7
 ip address 10.10.0.2 255.255.255.0
#
firewall zone trust
 set priority 85
 add interface GE0/0/3
#
firewall zone untrust
 set priority 5
 add interface GE0/0/1
#
firewall zone dmz
 set priority 50
 add interface GE0/0/7
#
ospf 10  
 area 0.0.0.0
  network 10.2.1.0 0.0.0.255
  network 10.3.1.0 0.0.0.255
#
security-policy
 rule name policy_ospf_1
  source-zone local
  destination-zone trust
  destination-zone untrust
  service ospf
  action permit
 rule name policy_ospf_2
  source-zone trust
  source-zone untrust
  destination-zone local
  service ospf
  action permit
 rule name policy_sec
  source-zone trust
  destination-zone untrust
  source-address 10.3.2.0 24
  source-address 10.3.3.0 24
  action permit
#
return

脚本里三行值得记:hrp adjust ospf-cost enable 是 OSPF 联动开销调整的总开关;hrp track interface 盯住上下行口,任一接口故障也触发主备切换;hrp interface GE0/0/7 remote 指定心跳口,两台设备靠它同步状态和配置。

验证

选择"系统 > 高可靠性 > 双机热备",查看双机热备运行情况。正常情况下,DeviceA 的"当前运行模式"为"主备备份"、“当前运行角色"为"主用”,DeviceB 为"备用",说明流量通过 DeviceA 转发。当 DeviceA 出现故障时,两台的角色对调,流量切换到 DeviceB。演练时直接看这两个角色字段,比翻日志直观。

动态路由环境里的高可用改造,难点从来不在双机本身,而在路由怎么跟着切。贵州诚鑫致达科技做出口高可用项目时,OSPF 联动开销和基础协议放行这两处是方案评审的必查项。你的出口现在是静态路由还是动态路由?评论区聊聊切换演练时踩过的坑。