一提到防火墙,一般都会想到企业的边界设备,是内网用户与互联网的必经之路。防火墙承载了非常多的功能,比如:安全规则、IPS、文件类型过滤、内容过滤、应用层过滤等。也正是因为防火墙如此的重要,如果防火墙一旦出现问题,所有对外通信的服务都将中断,所以企业中首先要考虑的就是防火墙的优化及高可用性。

博文大纲:
一、双机热备工作原理
二、VRRP协议
(1)VRRP协议概述
(2)VRRP的角色
(3)VRRP的状态机
(4)VRRP的工作原理
三、VGMP协议
(1)VGMP的工作原理
(2)VGMP的报文封装
(3)双机热备的备份方式
(4)连接路由器时的双机热备
四、实现防火墙双机热备的配置

一、双机热备工作原理

随着互联网的发展,现在人们生活中的大多数问题都可以通过网络解决,但与此同时,网络安全问题也逐渐暴露出来。在企业中部署一台防火墙已然成为常态。如何能够保证网络不间断地传输成为网络发展中急需解决的问题!

华为防火墙实现双机热备配置详解_第1张图片
企业在关键的业务出口部署一台防火墙,所有的对外流量都要经过防火墙进行传输,一旦防火墙出现故障,那么企业将面临网络中断的问题,无论防火墙本身的性能有多好,功能有多么强大。在这一刻,都无法挽回企业面临的损失。所以在企业的出口部署两台防火墙产品,可以在增加企业安全的同时,保证业务传输基本不会中断,因为两台设备同时出现故障的概率非常小。经过图中右边的部署,从拓补的角度来看,网络具有非常高的可靠性,但是从技术的角度来看,还需解决一些问题,正因为防火墙和路由器在工作原理上有着本质的区别,所以防火墙还需一些特殊的配置。

华为防火墙实现双机热备配置详解_第2张图片
左图,内部网络可以通过R3→R1→R4到达外部网络,也可以通过R3→R2→R4到达,如果通过R3→R1→R4路径的cost(运行OSPF协议)比较小,那么默认情况,内部网络将通过R3→R1→R4到达外部网络,当R1设备损坏时,OSPF将自动收敛,R3将通过R2转发到达外部网络。

右图,R1、R2替换成两台防火墙,默认情况下,流量将通过FW1进行转发到达外部网络,此时在FW1记录着大量的用户流量对应的会话表项内容,当FW1损坏时,通过OSPF收敛,流量将引导FW2上,但是FW2上没有之前流量的会话表,之前传输会话的返回流量将无法通过FW2,而会话的后续流量需要重新经过安全策略的检查,并生成会话。这就意味着之前所有的通信流量都将中断,除非重新建立连接。


如图,华为防火墙的双机热备功能是通过提供一条备份链路(心跳线)、协商防火墙之间的主备状态及备份会话表、Server-map表等操作。根据防火墙的配置分别选举出主用设备及备用设备,当主用设备正常工作时,备用设备不提供数据包的转发,但是备用设备会实时从主用设备下载当前的会话表及Server-map表。从而保证,当主用设备故障时,即使切换到备用设备,备用设备依然存在当前流量的会话表及Server-map表,从而保证业务流量不中断。

在双机热备环境中,要求如下:
(1)两台防火墙用于心跳线的接口加入相同的安全区域;
(2)两台防火墙用于心跳线的接口的设备编号必须一致,比如都是G1/0/0;
(3)建议用于双机热备的两条防火墙采用相同的型号、相同的VRP版本;

华为防火墙的双机热备包含以下两种模式:

  • 热备模式:同一时间只用一台防火墙转发数据包,其他防火墙不转发数据包,但是会同步会话表及Server-map表;
  • 负载均衡模式:同一时间,多台防火墙同时转发数据,但每个防火墙又作为其他防火墙的备用设备,即每个防火墙即是主用设备也是备用设备,防火墙之间同步会话表及Server-map表;

关于华为防护墙的热备模式和负载均衡模式如图:
华为防火墙实现双机热备配置详解_第3张图片

二、VRRP协议

在双机热备技术中,即使选举出了主用设备和备用设备,默认情况下流量也通过主用设备转发,而备用设备处于备份状态。但是客户机通常通过指定网关地址来指定网络出口,当客户机将网关指向主用设备时,流量自然从主用设备转发,但是当主用设备故障时,客户机并不会将网关自动指向备用设备,所以即使双机热备本身可以切换、客户机依然无法正常通信。所以要保证双机热备可以正常工作,还需解决客户机网关自动切换的问题。而VRRP技术可以解决网关自动切换的问题,甚至还能让设备切换对客户机而言是透明的。在华为防火墙的双机热备技术中,VRRP是非常重要的一个组成部分。

(1)VRRP协议概述

VRRP(虚拟路由冗余协议)由IETF进行维护。用来解决网关单点故障的路由协议。VRRP可以应用在路由器中提供网关冗余,也可以用在防火墙中做双击热备。

VRRP的基本概念如下:
(1)VRRP路由器:运行VRRP协议的路由器;
(2)虚拟路由器:由一个主用路由器和若干备用路由器组成的一个备份组,一个备份组对客户机提供一个虚拟网关;
(3)VRID:Virtual Router ID,虚拟路由器标识,用来唯一的表识一个备份组;
(4)虚拟IP地址:提供给客户端的网关IP地址,也是分配给虚拟路由器的IP地址,在所有的VRRP中配置,只有主用设备提供该IP地址的ARP响应;
(5)虚拟MAC地址:基于VRID生成的用于VRRP的MAC地址,在客户端通过ARP协议解析网关的MAC地址时,主用路由器提供该MAC地址;
(6)IP地址拥有者:若将虚拟路由器的IP地址配置为某个成员物理接口的真是IP地址,那么该成员被称为IP地址拥有者;
(7)优先级:用于表示VRRP路由器的优先级,并通过每个VRRP路由器的优先级选举主用设备及备用设备;
(8)抢占模式:在抢占模式下,如果备用路由器的优先级高于备份组中的其他路由器(包括当前的主用路由器),将立即成为新的主用路由器;
(9)非抢占模式:在非抢占模式下,如果备用路由器的优先级高于备份组中的其他路由器(包括当前的主用路由器),则不会立即成为主用路由器,直到下一次公平选举(如断电、设备重启等);

VRRP的工作原理与Cisco设备基本相同,只有一些细节上的一些区别,如图:
华为防火墙实现双机热备配置详解_第4张图片

(2)VRRP的角色

工作在VRRP模式下的路由器有两种角色,分别是:

  • Master路由器:正常情况下由Master路由器负责ARP响应及提供数据包的转发,并且默认每隔1s向其他路由器通告Master路由器当前的状态信息;
  • Backup路由器:是Master路由器的备用路由器,正常情况下不提供数据包的转发,当Master路由器故障时,在所有的Backup路由器中优先级最高的路由器将成为新的Master路由器,接替转发数据包的工作,从而保证业务不间断;

(3)VRRP的状态机

VRRP定义了三种工作状态,如下:

  • Initialize状态:刚配置VRRP时的初始状态。该状态下,不对VRRP报文做任何处理,当接口shutdown或接口故障时将进入该状态;
  • Master状态:当前设备选举成为主用路由器时的一种状态。该状态下会转发业务报文,并周期性地发送VRRP通告报文,处于该状态的路由器还将响应客户机发起的ARP请求,并将虚拟MAC地址回应客户机。当接口关闭时,将立即切换至Initialize状态;
  • Backup状态:当前设备选举成为备用路由器的一种状态。该状态下不转发任何业务报文,工作在该状态下的路由器会接收主用路由器发送的VRRP通告报文,并判断主用路由器是否正常工作。在双机热备模式中还将同步主用设备上的状态信息;

三种状态之间的切换关系如图:
华为防火墙实现双机热备配置详解_第5张图片
Initialize状态是VRRP的初始状态,当接口shutdown时,无论路由器处于Master状态还是Backup状态,都将立即切换至Initialize状态;当路由器配置IP地址拥有者时,其优先级默认为255,此时路由器直接由Initialize状态切换至Master状态;当路由器不是IP地址拥有者时,其优先级< 255,此时路由器直接由Initialize状态切换至Backup状态;处于Master状态的路由器如果收到优先级更大的VRRP报文,将由Master状态切换至Backup状态,而Backup状态的路由器如果收到一个优先级更大或者本地优先级相等的报文(通常是由Master路由器发出),将重置Master_DOWN_Interval计时器,如果一直没有接收到Master路由器发送的VRRP通过报文,待Master_DOWN_Interval计时器超时后,将由Backup状态切换至Master状态。

注意:除非手工将路由器配置为IP地址拥有者(优先级=255),否则VRRP的状态切换总是先经历Backup状态,即时路由器的优先级最高,也需要从Backup状态过渡到Master状态。此时Backup状态只是一个瞬间的过渡状态。

(4)VRRP的工作原理

VRRP选举Master路由器和Backup路由器的流程如下:
首先选举优先级高的设备成为Master路由器,如果优先级相同,再比较接口的IP地址大小,IP地址大(数值大)的设备将成为Master路由器,而备份组中其他的路由器将成为Backup路由器。

VRRP中的默认接口优先级值为100,取值范围为0~255。其中优先级0是系统保留,优先级255保留给IP地址拥有者,IP地址拥有者不需要配置优先级,优先级默认是255。

VRRP的工作原理如图:
华为防火墙实现双机热备配置详解_第6张图片

故障切换过程:
默认情况下,Master设备(FW1)会周期性(每1s)地向Backup设备发送VRRP通告,而Backup设备每次收到VRRP通告,就将Master_DOWN_Interval计时器重置为0。当Master设备出现故障,无法发出VRRP通告报文时,Backup设备将无法接收到VRRP,在Master_DOWN_Interval超时后,将直接由Backup状态切换为Master状态,FW2代替FW1成为新的Master设备。同时会向下游交换机发出免费ARP报文,以更新下游交换机的MAC地址表。而后续客户机发起的针对虚拟IP的ARP请求报文,FW2将直接代为回应,客户机发出的报文也将由FW2转发,而这一切变化对客户机而言都是透明的。因为虚拟IP地址仍然可用!

当FW1解决故障恢复正常运行时,因为FW1的优先级配置比FW2高,在抢占模式下,其将直接成为Master设备,而FW2再次回到Backup状态;在非抢占模式下,FW2依然是Master设备,而FW1成为Backup设备。

建议:当Master设备和Backup设备性能相差不大,同时网络规模较大时,建议配置为非抢占模式,因为这样可以减少网络的波动。

三、VGMP协议

(1)VGMP的工作原理

如果仅仅使用双机热备+VRRP就会出现以下情况:
华为防火墙实现双机热备配置详解_第7张图片
造成以下现象的原因是两个VRRP备份组各自独立工作,,那么有没有什么办法可以使两个备份组协同工作,以保证设备在两个备份组的状态一致性呢?就需要使用到——VGMP协议。

VGMP(VRRP组管理协议)用来实现VRRP备份组的统一管理,以保证设备在各个备份组中的状态一致性。VGMP通过在设备(FW1和FW2)上将所有的备份组(备份组1和备份组2)加入一个VGMP组中进行统一管理,一旦检测到某个备份组(备份组1)中的状态变化(如接口进入Initialize状态),VGMP组将自身优先级减2,并重新协商VGMP的Active组和Standby组。选举出的Active组将所有的其他备份组(备份组1和备份组2)统一进行状态切换(备份组1和备份组2中的FW2将成为Master设备)。

VGMP的工作原理:

  • VGMP组的状态决定了VRRP备份组的状态,即设备的角色(如Master和Backup)不再通过VRRP报文选举,而是直接通过VGMP统一管理;
  • VGMP组的状态通过比较优先级决定,优先级高的VGMP组将成为Active,优先级低的VGMP组将成为Standby;
  • 默认情况下,VGMP组的优先级为45000;
  • VGMP根据组内VRRP备份组的状态自动调整优先级,一旦检测到备份组的状态变成Initialize状态,VGMP组的优先级会自动减2;
  • 通过心跳线协商VGMP状态信息;

VGMP的工作原理:
华为防火墙实现双机热备配置详解_第8张图片

注意:在加入了VGMP组之后,VRRP中的状态标识从Master和Backup变成Active和Standby。

(2)VGMP的报文封装

VGMP通过心跳线协商VGMP的状态信息,通过发送VGMP报文实现。VGMP报文有以下两种形式,如图:
华为防火墙实现双机热备配置详解_第9张图片
左图中,当心跳线直连,或者通过二层交换机相连时,发送的报文属于组播报文,报文封装中不携带UDP头部信息;
右图中,心跳线通过三层设备(路由器)连接时,因为组播报文无法通过三层设备,所以在报文封装中会额外增加一个UDP头部信息,此时发送的报文属于单播;

在实际应用中,应根据实际的拓补灵活选择报文封装。在华为防火墙中,通过以下命令指定接口发送的报文属于哪种类型的封装。

[USG6000V1]hrp int g 1/0/0                         //eNSP模拟器不支持这条命令
[USG6000V1]hrp int g 1/0/0 remote 1.1.1.1

其中hrp命令用来指定用于心跳链路的接口,带remote参数的命令表示报文将封装UDP,并发送单播报文,不带remote参数的命令表示将发送组播报文。1.1.1.1标识对端是被(心跳线对端接口)的IP地址,该地址要求可路由,只有指定remote参数时才需要指定。

注意:

  • 加入VGMP后,心跳线的作用包含状态信息备份(会话表和Server-map表)及VGMP状态协商;
  • 华为防火墙在默认情况下放行组播流量(不带remote参数的VGMP报文),禁止单播流量(带remote参数的VGMP报文),所以配置了remote参数,还需要配置Local区域和心跳接口区域之间的安全策略;
  • 配置了虚拟IP地址的接口不能作为心跳口;
  • 如果使用二层接口作为心跳接口,不能直接在二层接口上配置,而是将二层接口加入VLAN,在VLAN中配置心跳接口;
  • eNSP模拟器中,及时心跳接口之间相连,也必须配置remote参数,否则无法配置;

(3)双机热备的备份方式

双击热备的备份方式包括以下三种:

  • 自动备份:该模式下,和双机热备有关的配置命令只能在主用设备上配置,并自动同步到备用设备中,主用设备自动将状态信息同步到备用设备中,该模式是华为防火墙的默认开启模式,主要应用于热备模式;
  • 手工批量备份:该模式下,主用设备上所有的配置命令和状态信息,只有在手工指定批量备份命令时才会自动同步到备用设备,该模式主要应用于主、备设备配置不同步,需要立即进行同步的场景中;
  • 快速备份:该模式下,不同步配置命令,只同步状态信息。在负载均衡方式的双机热备环境中,该模式必须启用,以快速更新状态信息;

(1)开启双击热备功能

[USG6000V1]hrp enable
HRP_S[USG6000V1]                    //开启双机热备后,提示符发生变化

(2)配置自动备份模式

HRP_M[USG6000V1]hrp auto-sync 

开启双机热备后,执行可以同步的命令时会有(+B)的提示

HRP_M[USG6000V1]security-policy  (+B)

(3)配置手工批量备份模式

HRP_Mhrp sync config                                             //表示手工同步命令配置
HRP_Mhrp sync connection-status                          //表示手工同步状态信息
//注意,此命令是在用户视图下执行的

(4)配置快速备份模式

HRP_M[USG6000V1]hrp mirror session enable 

(4)连接路由器时的双机热备

当配置双机热备上游或下游是交换设备时,可以通过VRRP检测接口或设备的状态,但是当上游或下游设备是路由器时,VRRP无法正常运行(VRRP依靠组播实现故障切换)。华为防火墙的做法是监控其接口状态,并配合OSPF实现流量切换。
华为防火墙实现双机热备配置详解_第10张图片
通过接口直接加入VGMP组中,当接口故障时(即使对端设备故障,本端接口的物理特性也将关闭),VGMP会感知接口状态变化,从而降低VGMP组的优先级,从Active状态切换至Stabdby状态。而之前的Standby组提升为Active状态。而处于Standby的VGMP组在发布OSPF路由时,会自动将cost值增加65500,通过OSPF的自动收敛,最终将流量引导至Active组设备中。

四、实现防火墙双机热备的配置

实验拓补:
华为防火墙实现双机热备配置详解_第11张图片

案例实施:

(1)防火墙接口配置IP地址,并加入各自的区域中,并设置相应的安全策略

[FW1]int g1/0/0
[FW1-GigabitEthernet1/0/0]ip add 10.1.1.101 24
[FW1-GigabitEthernet1/0/0]int g1/0/1
[FW1-GigabitEthernet1/0/1]ip add 172.16.1.1 24
[FW1-GigabitEthernet1/0/1]int g1/0/2
[FW1-GigabitEthernet1/0/2]ip add 192.168.1.101 24
[FW1-GigabitEthernet1/0/2]quit
[FW1]firewall zone untrust 
[FW1-zone-untrust]add int g1/0/0
[FW1-zone-untrust]quit
[FW1]firewall zone dmz
[FW1-zone-dmz]add int g1/0/1
[FW1-zone-dmz]quit
[FW1]firewall zone trust 
[FW1-zone-trust]add int g1/0/2
[FW1-zone-trust]quit
[FW1]security-policy 
[FW1-policy-security]rule name trust_to_untrust
[FW1-policy-security-rule-trust_to_untrust]source-zone trust 
[FW1-policy-security-rule-trust_to_untrust]destination-zone untrust 
[FW1-policy-security-rule-trust_to_untrust]action permit 
//配置安全策略:内部流量可以到外部
[FW1-policy-security-rule-trust_to_untrust]quit
[FW1-policy-security]rule name local_to_dmz
[FW1-policy-security-rule-local_to_dmz]source-zone local
[FW1-policy-security-rule-local_to_dmz]destination-zone dmz
[FW1-policy-security-rule-local_to_dmz]action permit 
//配置安全策略:从防火墙本身可以到DMZ区域(建立心跳线)
[FW1-policy-security-rule-local_to_dmz]quit
[FW1-policy-security]quit
//FW2的配置与FW1几乎是一模一样的,这里就不多说了
//注意FW2上也需设置相同的规则

(2)配置VRRP备份组

FW1的配置如下:

[FW1]int g1/0/2
[FW1-GigabitEthernet1/0/2]vrrp vrid 1 virtual-ip 192.168.1.100 active 
[FW1-GigabitEthernet1/0/2]int g1/0/0
[FW1-GigabitEthernet1/0/0]vrrp vrid 2 virtual-ip 10.1.1.100 active 

FW2的配置如下:

[FW2]int g1/0/2
[FW2-GigabitEthernet1/0/2]vrrp vrid 1 virtual-ip 192.168.1.100 standby 
[FW2-GigabitEthernet1/0/2]int g1/0/0
[FW2-GigabitEthernet1/0/0]vrrp vrid 2 virtual-ip 10.1.1.100 standby 

(3)配置心跳接口

[FW1]hrp int g1/0/1  remote 172.16.1.2
//FW1指定心跳接口,并指定对端接口IP地址
[FW2]hrp int g1/0/1 remote 172.16.1.1
//FW同上,这就是为什么防火墙需要设置从本地到DMZ区域的策略

(4)启用双机热备

[FW1]hrp enable
HRP_S[FW1]
//FW1的配置,命令提示符出现了变化
[FW2]hrp enable
HRP_S[FW2]
//FW2同上

(5)配置备份方式

HRP_S[FW1]hrp auto-sync
//配置自动备份
HRP_S[FW2]hrp auto-sync

(6)配置检查及验证
①查看双机热备的状态信息

HRP_M[FW1]display hrp state
 Role: active, peer: standby                            //本端状态为Active,对端为Standby
 Running priority: 45000, peer: 45000            //本端优先级为45000,对端为45000
 Core state: normal, peer: normal
 Backup channel usage: 0.00%
 Stable time: 0 days, 0 hours, 9 minutes
 Last state change information: 2019-10-26 6:29:53 HRP core state changed, old_s
tate = abnormal(active), new_state = normal, local_priority = 45000, peer_priori
ty = 45000.

②查看心跳接口状态

HRP_M[FW1]display hrp interface 
             GigabitEthernet1/0/1 : running

③两台PC配置IP地址及网关(虚拟地址),用PC1pingPC2
华为防火墙实现双机热备配置详解_第12张图片
④查看防火墙的会话表

HRP_M[FW1]display firewall session table 
 Current Total Sessions : 2
 udp  : public --> public  172.16.1.2:49152 --> 172.16.1.1:18514
 udp  : public --> public  172.16.1.1:49152 --> 172.16.1.2:18514

⑤PC1持续pingPC2,模拟FW1接口故障

HRP_M[FW1]int g1/0/2(+B)
HRP_M[FW1-GigabitEthernet1/0/2]shutdown

华为防火墙实现双机热备配置详解_第13张图片
⑥查看FW2双击热备的状态

HRP_M[FW2]display hrp state
 Role: active, peer: standby (should be "standby-active")               //状态发生了变化                      
 Running priority: 45000, peer: 44998                                             //FW1的优先级减2
 Core state: abnormal(active), peer: abnormal(standby)
 Backup channel usage: 0.00%
 Stable time: 0 days, 0 hours, 1 minutes
 Last state change information: 2019-10-26 6:49:06 HRP core state changed, old_s
tate = normal, new_state = abnormal(active), local_priority = 45000, peer_priori
ty = 44998.

实验完成!

———————— 本文至此结束,感谢阅读 ————————