一、防火墙工作在路由模式
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不同):
# 内网子接口(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+静态路由,来让路由器自动选择主防火墙。
关键配置(下行同组网①,上行增加):
# 上行物理口(不做子接口) 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(更推荐):
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,更适合大型网络。
关键配置:
# 下行接口(接内网核心路由器) 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 配置中显式加上active或standby关键字,这会让该 VRRP 组的状态与 VGMP 状态相反(或独立)。
负载分担的核心思想是:通过在不同 VRRP 组中手动指定active或standby,让不同的 VLAN 或业务段的虚拟网关主备角色分布在两台防火墙上,从而实现流量分流。
主备模式则不需要手动指定active/standby,完全由 VGMP 统一控制。
注意:
active和standby关键字是 VRRP 配置中的参数,用于指定该 VRRP 组希望成为 Master 还是 Backup,它会覆盖 VGMP 的强制统一。
核心分清两个概念
主备模式:一台转发所有流量,另一台冷备。
VRRP 配置:可以不加active/standby,让 VGMP 自动决定;也可以手动指定,但最终只有一台是 Master。负载分担模式:两台都转发流量。
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 极大,保证路由器不选它。