防火墙双击热备的工作模式详解

一、防火墙工作在路由模式

1 区分的技术背景

双机热备的唯一目标:让上下行设备"无感知"地把流量发给当前工作的防火墙。

无论你用什么技术,最终要解决的就是一个问题:
当主防火墙故障时,备用防火墙接管,但上下行设备(交换机或路由器)必须自动把流量发给新主设备,不能人工改配置。

这个目标看起来简单,但上下行设备是两种完全不同的"动物":

设备类型 转发依据 它怎么识别"该发给谁"? 它懂什么协议?
二层交换机 MAC地址表 它只看目的MAC。谁响应了网关的ARP,它就发给谁。 只懂ARP、MAC、VLAN;不懂IP路由
三层路由器 IP路由表 它根据路由表下一跳IP。谁的IP作为下一跳,它就发给谁。 懂IP、OSPF、BGP等;可识别路由Cost

因此,要骗过交换机和路由器,必须用不同的"骗术":

  • 骗交换机 :让主备防火墙使用相同的虚拟MAC ,主设备响应ARP,备设备沉默;切换时新主主动发免费ARP刷交换机的MAC表。 → 这就是 VRRP

  • 骗路由器 :让路由器认为"去往内网/外网的最佳路径应该经过当前主防火墙"。 → 通过 动态路由协议调整Cost静态路由+BFD 来改变路由器的选路。

所以,双机热备的技术方案不是固定的,而是由邻居设备类型决定的。


2 为什么分为三种组网?------ 因为防火墙有两个"邻居"(下行和上行)

防火墙有两个方向:下行(接内网)上行(接外网)。每个方向上的邻居可能是交换机,也可能是路由器。排列组合就会出现多种情况。

场景 下行邻居 上行邻居 对双机热备的要求 技术组合
① 上下接交换机 交换机 交换机 两边都需要用同一种"骗术":虚拟MAC + VRRP 全部用VRRP
② 下交换、上路由 交换机 路由器 下行骗交换机(VRRP),上行骗路由器(路由协议/BFD) VRRP + 路由/BFD
③ 上下接路由器 路由器 路由器 两边都骗路由器(路由协议),VRRP根本用不着 纯动态路由

为什么没有"下路由、上交换"?

因为内网如果已经用了三层路由器作为网关,通常不会在它后面再串一台防火墙做二层接入,拓扑不合理(可以存在,但极少见,老师一般不讲)。


3 这三种组网在"双机热备"中的本质区别

你现在应该已经看出来了:分类的本质是"防火墙与邻居之间的接口类型和协议栈"------它直接决定了双机热备中你必须启用哪些功能、禁用哪些功能。

对比项 组网① 上下交换 组网② 下交换上路由 组网③ 上下路由
下行接口模式 三层子接口(带VLAN) 三层子接口(带VLAN) 三层物理口(无VLAN)
下行冗余机制 VRRP(必须) VRRP(必须) 无VRRP,靠OSPF Cost
上行接口模式 三层子接口或物理口 三层物理口(点对点IP) 三层物理口(点对点IP)
上行冗余机制 VRRP(必须) BFD+静态路由 或 OSPF OSPF/BGP(Cost调优)
VGMP的作用 统一控制所有VRRP组 同左 + 可联动BFD/IP-Link 仅整机主备,不控制VRRP
HRP同步内容 会话表、Server-map 同左 同左

关键点:组网②中,上行不能配VRRP(因为路由器不认虚拟IP),所以必须用其他方式让路由器感知主备切换。这正是很多人学双机热备时最容易忽略的。


4 具体配置

4.1 组网①:上下都接二层交换机

拓扑描述

  • 两台防火墙(FW1、FW2)的G1/0/1口分别连接到内网二层交换机。

  • 两台防火墙的G1/0/2口分别连接到外网二层交换机。

  • 防火墙之间用G1/0/3直连作为心跳口

  • 内网有多个VLAN(如VLAN10、VLAN20),防火墙作为这些VLAN的网关。

  • 外网交换机上行接出口路由器(路由器可能只配一个接口IP)。

为什么这样组网?

  • 内网交换机是二层设备,它不认识IP路由,只认识MAC地址。为了让交换机把流量正确地发给主防火墙,防火墙必须提供一个"不变的虚拟网关IP+虚拟MAC"。这就是VRRP的作用。

  • 外网交换机同样是二层,所以也需要VRRP来提供虚拟网关给出口路由器(路由器虽然三层,但因为中间隔着交换机,路由器看到的是防火墙的虚拟IP,所以VRRP仍然有效)。

  • 因此,上下行都需要VRRP。

关键配置(以FW1为例,FW2配置完全一样,只是心跳IP不同)

bash 复制代码
# 内网子接口(VLAN10网关)
interface GigabitEthernet1/0/1.10
 vlan-type dot1q 10
 ip address 192.168.10.2 24
 vrrp vrid 10 virtual-ip 192.168.10.1

# 外网子接口(假设VLAN100接外网)
interface GigabitEthernet1/0/2.100
 vlan-type dot1q 100
 ip address 200.1.1.2 24
 vrrp vrid 100 virtual-ip 200.1.1.1

# 心跳口
interface GigabitEthernet1/0/3
 ip address 172.16.0.1 24
 hrp enable

双机热备如何工作

  • VGMP通过心跳协商,决定FW1为Active,FW2为Standby。

  • VGMP强制控制所有VRRP组:FW1上所有VRRP组为Master,FW2上所有VRRP组为Backup。

  • 内网交换机的MAC表里,虚拟MAC对应FW1的端口;外网同样。

  • 当FW1故障,VGMP切换,FW2成为Active,FW2发送免费ARP,更新交换机的MAC表,流量切换到FW2。

  • HRP实时将FW1的会话表同步给FW2,保证切换后连接不断。


4.2 组网②:下接交换机,上接路由器

拓扑描述

  • 下行(内网侧)同组网①:防火墙通过子接口接二层交换机,使用VRRP。

  • 上行(外网侧)不再经过二层交换机,防火墙的G1/0/2口直接与一台三层路由器(如运营商CE)用网线直连。

  • 直连链路使用一个30位掩码的互联IP段(例如FW1用100.1.1.2/30,路由器用100.1.1.1/30)。

为什么这样组网?

  • 下行仍是二层交换机,所以必须用VRRP。

  • 上行是三层路由器,路由器本身运行IP路由,它不需要VRRP虚拟IP,它只需要知道"去往内网的下一跳应该指向哪台防火墙"。但是,如果两台防火墙都接在同一台路由器上(路由器两个接口分别接FW1和FW2),路由器需要一种机制来感知哪台防火墙是主。VRRP不可行(路由器不参与VRRP),所以必须用动态路由协议(如OSPF)或BFD+静态路由,来让路由器自动选择主防火墙。

关键配置(下行同组网①,上行增加)

bash 复制代码
# 上行物理口(不做子接口)
interface GigabitEthernet1/0/2
 ip address 100.1.1.2 30

# 静态路由指向路由器(下一跳100.1.1.1),并绑定BFD检测
bfd
 ip-link 1 destination 100.1.1.1 interface GigabitEthernet1/0/2
ip route-static 0.0.0.0 0.0.0.0 100.1.1.1 track ip-link 1

# 告诉VGMP,当ip-link检测失败时降低优先级
hrp track ip-link 1

或者使用OSPF(更推荐):

bash 复制代码
ospf 1
 area 0
  network 100.1.1.0 0.0.0.3
 default-route-advertise cost 10
# 在备墙上,通过 hrp ospf-cost increase 65500 让备墙宣告的路由cost极大

双机热备如何工作

  • 下行VRRP仍然由VGMP统一控制。

  • 上行:主设备BFD检测正常,静态路由有效;备设备的上行口虽然也配IP,但VGMP Standby状态下,HRP不会在备墙上激活上行路由(或cost极高)。

  • 当主设备上行链路故障(接口仍UP但路由器不可达),BFD快速检测到,触发VGMP降低优先级,备设备切换为Active。备设备激活自己的上行路由,路由器通过动态路由收敛或ARP更新将流量切到新主。

  • HRP同样同步会话表。


4.3 组网③:上下都接路由器(全三层)

拓扑描述

  • 防火墙不再作为内网网关。内网核心路由器负责所有VLAN间路由。

  • 防火墙的上行接外网路由器,下行接内网核心路由器。所有接口都是三层物理口,点对点IP。

  • 两台防火墙的下行分别接内网路由器的不同接口(或同一交换机但三层口),上行类似。

为什么这样组网?

  • 防火墙不需要提供虚拟网关,所以完全不用VRRP。

  • 冗余切换依靠动态路由协议。通过调整路由协议的metric(如OSPF cost),让内网和外网路由器优先选择主防火墙,主故障时自动切换到备防火墙。

  • 这样避免了VRRP带来的额外虚拟IP,更适合大型网络。

关键配置

bash 复制代码
# 下行接口(接内网核心路由器)
interface GigabitEthernet1/0/1
 ip address 192.168.1.2 30

# 上行接口(接外网路由器)
interface GigabitEthernet1/0/2
 ip address 200.1.1.2 30

# 运行OSPF
ospf 1
 area 0
  network 192.168.1.0 0.0.0.3
  network 200.1.1.0 0.0.0.3
  default-route-advertise always cost 10   # 主墙宣告默认路由cost=10

# 备墙上使用
ospf 1
 hrp ospf-cost increase 65500   # 备墙所有接口cost自动增加

双机热备如何工作

  • VGMP仍然选举Active和Standby,但不对VRRP做任何控制(因为没有VRRP)。

  • 主墙正常宣告低cost路由,备墙宣告高cost路由。内网和外网路由器根据SPF算法选择主墙路径。

  • 当主墙故障,OSPF邻居中断,路由器重新计算路径,切换到备墙(备墙的cost虽然高,但唯一可用)。

  • HRP仍然需要同步会话表,保证TCP连接不中断。

  • 此模式要求防火墙与路由器之间必须运行动态路由协议,且备墙必须预先建立邻居(但邻居状态可能非Full?实际上备墙OSPF邻居也是Full,只是它宣告的路由cost高,不被优选)。


主备的配置

前置基础:VGMP 与 VRRP 的默认关系

在华为双机热备中,VGMP 组(设备级)默认强制所有 VRRP 备份组(接口级)的状态与 VGMP 状态一致

  • VGMP = Active → 本机所有 VRRP 组都是 Master

  • VGMP = Standby → 本机所有 VRRP 组都是 Backup

如果要实现负载分担(不同 VLAN 走不同防火墙),就必须打破这个默认行为 。打破的方法就是在 VRRP 配置中显式加上 activestandby 关键字,这会让该 VRRP 组的状态 与 VGMP 状态相反(或独立)。

负载分担 的核心思想是:通过在不同 VRRP 组中手动指定 activestandby,让不同的 VLAN 或业务段的虚拟网关主备角色分布在两台防火墙上,从而实现流量分流。
主备模式 则不需要手动指定 active/standby,完全由 VGMP 统一控制。

注意activestandby 关键字是 VRRP 配置中的参数,用于指定该 VRRP 组希望成为 Master 还是 Backup,它会覆盖 VGMP 的强制统一。


核心分清两个概念

  1. 主备模式 :一台转发所有流量,另一台冷备。
    VRRP 配置 :可以不加 active/standby,让 VGMP 自动决定;也可以手动指定,但最终只有一台是 Master。

  2. 负载分担模式 :两台都转发流量。
    VRRP 配置:必须至少两个 VRRP 组(例如不同 VLAN),FW1 在其中一组 active、另一组 standby;FW2 相反。

第一条:上下接交换机

  • 负载分担 :需要两组 VRRP(例如 VLAN10 和 VLAN20,或上行组和下行组)。FW1 在组 A active,组 B standby;FW2 在组 A standby,组 B active。两台设备的接口 VRRP 配置中都出现了 active 和 standby(因为每个设备上既有 active 的组也有 standby 的组)。这就是老师说的"FW1和FW2的接口VRRP的配置都要出现active和standby"。

  • 主备模式:只需要一组 VRRP,FW1 active、FW2 standby(或者都不加参数)。老师后半句"FW1的接口的VRRP配置出现active,FW2的接口的VRRP配置出现standby"就是描述主备模式下 VRRP 的一种配置方式。

第二条:上接交换机下接路由器

  • 负载分担 :下行(接交换机)需要多个 VRRP 组,配置同第一条的负载分担。上行(接路由器)不需要 VRRP,靠 OSPF 的 ECMP 自动分担。老师那句话仍然是指下行 VRRP 的 active/standby 错开配置,上行不适用。

  • 主备模式:下行 VRRP 一组,FW1 active、FW2 standby;上行 OSPF 通过 cost 控制(备墙 cost 调大)。

第三条:上下接路由器

  • 负载分担 :默认就是负载分担(ECMP)。不需要任何 VRRP,也不配置 active/standby。

  • 主备模式 :在备墙上配置 hrp standby-device(强制为备),同时配置 hrp ospf-cost increase 65500 使其路由 cost 极大,保证路由器不选它。

相关推荐
humors2212 小时前
SSH管理github代码
运维·ssh·github
不羁的fang少年2 小时前
https机制
服务器·https·ssl
AKA__Zas2 小时前
初识多线程(初初识)
java·服务器·开发语言·学习方法
小夏子_riotous2 小时前
Docker学习路径——10、Docker Compose 一站式编排:从入门到生产级部署
linux·运维·服务器·docker·容器·centos·云计算
小菜同学爱学习2 小时前
兜底保障!MySQL运维实战与常见问题排查全解析
运维·mysql·adb
雅斯驰2 小时前
工业自动化、物联网传感器、车身控制:PIC18F26K20-I/ML的典型应用场景
运维·物联网·自动化
云栖梦泽2 小时前
Linux内核与驱动:GPIO设备树与SPI设备树的区别
linux·运维·c++·嵌入式硬件
断问天2 小时前
Faq:Fedora44 Kernel升级后WIFI和声卡都不能使用了
linux·运维·服务器
zjeweler2 小时前
云服务器部署 Claude Code 实战指南
运维·服务器·claude code