思维导图
VRRP备份
双机热备技术产生的背景
单点故障所以配置两台防火墙主备。在双机热备组网中,一台防火墙转发流量,一台防火墙作为备份,这时需要VRRP协议帮助两台设备协同工作。VRRP协议最初使用在路由器可靠性组网上。
基于VRRP的路由器冗余部署方案
VRRP(Virtual Router Redundancy Protocol)是一种容错协议,它保证当主机的下一跳路由器(默认网关)出现故障时,由备份路由器自动代替出现故障的路由器完成报文转发任务,从而保持网络通信的连续性和可靠性。同一VRRP备份组内的路由器有两种角色:Master设备(活动状态)、Backup设备(备份状态)。
当Master设备正常工作时,网络内主机通过Master设备与外部网络通信。当Master设备出现故障时,Backup设备会成为新的Master设备,接替原Master设备的报文转发工作,保证网络不中断。
备份组:同一个广播域的一组路由器组织成一个虚拟路由器,备份组中的所有路由器一起,共同提供一个虚拟IP地址,作为内部网络的网关地址,实现网关的备份。
Master:活动状态。VRRP备份组状态为Master的设备被称为Master设备。Master设备拥有VRRP备份组的虚拟IP地址和虚拟MAC地址。Master设备收到目的IP地址是虚拟IP地址的ARP请求时,会响应这个ARP请求。在同一个备份组中的多个路由器中,只有一台处于活动状态,只有主路由器能转发以虚拟IP地址作为下一跳的报文;
Backup:备份状态。VRRP备份组状态为Backup的设备被称为Backup设备。Backup设备不会响应目的IP地址为虚拟IP地址的ARP请求。在同一个备份组中的多个路由器中,除主路由器外,其他路由器均为备份路由器,处于备份状态。当Master设备出现故障时,剩下的Backup设备中将会选举出新的Master设备;
Master设备选举规则:首先比较优先级的大小,优先级的范围为0-255,优先级高者当选为Master设备,其次比较接口IP地址大小,接口IP地址较大的设备当选为Master设备。成为Master的设备运行优先级自动变为255;
主路由器通过组播方式定期向备份路由器发送通告报文(Hello报文),备份路由器则负责监听通告报文,以此来确定其状态。由于VRRP Hello报文为组播报文,所以要求备份组中的各路由器通过二层设备相连。
图中Router A正常时流量转发流程如下:
Router A发送免费ARP:免费ARP包含VRRP虚拟IP地址与VRRP虚拟MAC地址;
交换机刷新MAC地址表:MAC地址表将虚拟MAC地址与接收免费ARP的接口映射;
内部网络用户发送ARP请求询问网关地址:网关地址即虚拟IP地址;
Router A应答ARP请求:Router A将虚拟MAC地址回应给内部网络用户;
内部网络用户的流量发向网关Router A:内部网络用户将流量发送给虚拟MAC地址,交换机根据MAC地址映射表将流量转发给Router A。
Router A故障时流量转发流程如下:
Router B三个报文周期没有收到主设备Router A发送的VRRP报文,自动切换成为新的Master;
Router B发送免费ARP:免费ARP包含VRRP虚拟IP地址与VRRP虚拟MAC地址;
交换机刷新MAC地址表:MAC地址表将虚拟MAC地址与接收免费ARP的接口映射;
内部网络用户发送ARP请求询问网关地址:网关地址即虚拟IP地址;
Router B应答ARP请求:Router B将虚拟MAC地址回应给内部网络用户;
内部网络用户的流量发向网关Router B:内部网络用户将流量发送给虚拟MAC地址,交换机根据MAC地址映射表将流量转发给Router B。
VRRP在多区域防火墙组网中的应用
为防火墙上多个区域提供双机备份功能时,需要在每一台防火墙上配置多个VRRP备份组,比如上行都要做,下行也都要做vrrp。
华为防火墙是状态化防火墙,要求报文的来回路径通过同一台防火墙,所以切换主备要多个vrrp组一起切换。
VRRP在防火墙应用中存在的缺陷
传统VRRP方式无法实现主、备用防火墙状态信息和多组VRRP状态的一致性。
如图所示,假设防火墙A和防火墙B的VRRP状态一致,即防火墙A的所有接口均为主用状态,防火墙B的所有接口均为备用状态。
此时,Trust区域的PC1访问Untrust区域的PC2,报文的转发路线为(1)-(2)-(3)-(4)。防火墙A转发访问报文时,动态生成会话表项。当PC2的返回报文经过(4)-(3)到达防火墙A时,由于能够命中会话表项,才能再经过(2)-(1)到达PC1,顺利返回。同理,当PC2和DMZ区域的Server也能互访。
假设防火墙A和防火墙B的VRRP状态不一致,例如,当防火墙B与Trust区域相连的接口为备用状态,但与Untrust区域的接口为主用状态,则PC1的报文通过防火墙A设备到达PC2后,在防火墙A上动态生成会话表项。PC2的返回报文通过路线(5)返回。此时由于防火墙B上没有相应数据流的会话表项,在没有其他报文过滤规则允许通过的情况下,防火墙B将丢弃该报文,导致会话中断。
问题产生的原因:报文的转发机制不同。
路由器:每个报文都会查路由表,当匹配上后才进行转发。链路切换后,后续报文不会受到影响,继续进行转发。
状态检测防火墙:如果首包允许通过会建立一条五元组的会话连接,只有命中该会话表项的后续报文(包括返回报文)才能够通过防火墙;如果链路切换后,后续报文找不到正确的表项,会导致业务中断。
如要保障防火墙双机热备的顺利运行,VRRP在防火墙中应用还需满足以下条件:VRRP状态的一致性和防火墙状态信息的一致性。
VGMP管理组
VGMP基本原理
VGMP(VRRP Group Management Protocol)是VRRP组管理协议,该协议定义了VGMP组,防火墙基于VGMP组实现设备主备状态管理。
防火墙VGMP组状态分为三类:Load-balance、Active、Standby;
防火墙VGMP组通过发送VGMP报文通告自身运行状态,从而根据Hello优先级决定主备设备,主设备VGMP组的状态为Active,备设备VGMP组的状态为Standby;
当防火墙上的VGMP组为Active/Standby状态时,组内所有VRRP备份组的状态统一为Active/Standby状态。
VGMP组选举主从设备工作流程如图所示。
VGMP状态:
Initialize是初始化状态,设备未启用双机热备功能时,VGMP组处于这个状态;
设备自身的VGMP组优先级等于对端设备的VGMP组优先级时,设备的VGMP组状态为Load-balance;
设备自身的VGMP组优先级大于对端设备的VGMP组优先级时,设备的VGMP组状态为Active;
设备自身的VGMP组优先级小于对端设备的VGMP组优先级时,设备的VGMP组状态为Standby;
设备没有接收到对端设备的VGMP报文,无法了解到对端VGMP组优先级时,设备的VGMP组状态为Active;
当防火墙上的VGMP为Active状态时,它保证组内所有VRRP备份组的状态统一为Active状态,这样所有报文都将从该防火墙上通过,该防火墙成为主用防火墙。此时另外一台防火墙上对应的VGMP为备状态,该防火墙成为备用防火墙。
VGMP报文:VGMP报文包含VGMP Hello报文、HRP Hello报文以及HRP数据报文。
VGMP报文发送周期缺省为1秒,通过心跳口发送;
VGMP Hello报文用于协商防火墙主备状态,主备防火墙VGMP组定期向对端发送VGMP Hello报文,通知对端本身的运行状态(优先级、设备状态等),事件触发时也会发送VGMP报文(如VGMP开启,优先级改变);
HRP Hello报文用于探测对端的VGMP组是否处于工作状态,主备防火墙VGMP组定期向对端发送HRP Hello报文,当Standby端五个报文周期没有收到对端发送的HRP Hello报文时,会认为对端出现故障,从而将自己切换到Active状态。
VGMP组选举主设备工作流程如下:
配置VRRP:配置VRRP备份组1和VRRP备份组2,备份组1和备份组2指定防火墙A为Master设备,防火墙B为Backup设备;
启用防火墙VGMP功能:备份组1和备份组2被防火墙A和防火墙B的VGMP组纳管;
选举VGMP主设备:启用VGMP功能后,VRRP备份组的优先级失效,VRRP Master设备由VGMP优先级指定。防火墙A和防火墙B相互发送VGMP Hello报文,默认情况下,两台防火墙VGMP组的优先级相同,优先级为45000(不同防火墙型号和版本有所区别),此时根据VRRP的配置决定防火墙VGMP组的状态;
切换VRRP组状态:根据配置,防火墙A成为主设备,状态为Active;防火墙B为备设备,状态为Standby。此时备份组1和备份组2皆以防火墙A为Master设备,由防火墙A转发流量。
当故障发生时,VGMP统一切换VRRP备份组1与VRRP备份组2的状态。当VGMP组状态为Active时,VRRP备份组的状态都是Master;当VGMP组状态为Standby时,VRRP备份组的状态都是Backup;
防火墙正常时工作原理如左图,在防火墙A上将VRRP备份组1和VRRP备份组2都加入状态为Active的VGMP组,在防火墙B上将VRRP备份组1和VRRP备份组2都加入状态为Standby的VGMP组。由于VGMP组的状态决定了组内VRRP备份组的状态,所以防火墙A上VRRP备份组1和2的状态都为Master,防火墙B上VRRP备份组1和2的状态都为Backup。这样防火墙A就是VRRP备份组1和VRRP备份组2中的Master设备(也就是两台防火墙中的主用设备),而防火墙B就是他们的Backup设备(也就是两台防火墙中的备用设备),所以上下行的业务流量都会被引导到主用设备防火墙A转发。
防火墙故障时工作原理如右图,当防火墙A的接口故障时,VGMP组控制VRRP备份组状态统一切换的过程如下:
当防火墙A的下联接口故障时,防火墙A上的VRRP备份组1发生状态切换(由Master切换成Initialize);
防火墙A的VGMP组感知到这一故障后,会降低自身的优先级,然后与防火墙B的VGMP组比较优先级,重新协商主备状态;
协商后,防火墙A的VGMP组状态由Active切换成Standby,防火墙B的VGMP组状态由Standby切换成Active;
同时,由于VGMP组的状态决定了组内VRRP备份组的状态,所以防火墙A的VGMP组会强制组内的VRRP备份组2由Master切换成Backup状态,防火墙B的VGMP组也会强制组内的VRRP备份组1和2由Backup切换成Master状态。这样防火墙B就成为了VRRP备份组1和VRRP备份组2中的Master设备,也就成了为两台防火墙中的主用设备;而防火墙A则成为了VRRP备份组1和VRRP备份组2中的Backup设备,也就成为了两台防火墙中的备用设备;
防火墙B会分别向Trust和Untrust区域发送免费ARP,更新他们的MAC转发表,使Trust访问Untrust的上行报文和回程报文都转发到防火墙B。这样就完成了VRRP备份组状态的统一切换,并且保证业务流量不会中断。
如下故障会引发防火墙VGMP状态切换,不同故障降低的优先级数值不同:
VGMP组监控的接口故障;
VGMP监控的链路故障;
接口板故障;
业务板故障;
交换网板故障。
VGMP组管理
状态一致性管理:VGMP管理组控制所有的VRRP备份组统一切换,VRRP备份组加入到管理组后状态不能单独切换。
抢占管理:
当原来出现故障的主设备故障恢复时,其VGMP管理组优先级也会恢复,此时可以重新将自己的VGMP管理组状态抢占为主;
当VRRP备份组加入到VGMP管理组后,备份组上原来的抢占功能将失效,抢占行为发生与否必须由VGMP管理组统一决定。
通道管理:
所谓通道管理,就是为了确定双机热备的两台防火墙之间有哪些接口是可用的,VGMP、HRP模块将自动选用可用的接口来发送VGMP、HRP报文。
HRP冗余备份功能
HRP基本概念
HRP(Huawei Redundancy Protocol)协议,用来实现防火墙双机之间状态信息和关键配置命令的动态备份。
备份方向,往哪边备份
支持备份的配置命令默认只能在配置主设备上执行,这些命令会自动备份到备设备上。例如,安全策略配置命令、NAT策略配置命令等;
主备备份组网中,只有主设备会处理业务,主设备上生成业务表项,并向备设备备份。负载分担组网中,两台防火墙都会处理业务,都会生成业务表项并向对端设备备份。
备份通道
配置和状态数据需要网络管理员指定备份通道接口进行备份。一般情况下,在两台设备上直连的端口作为备份通道,有时也称为“心跳线”(VGMP也通过该通道进行通信)。
配置备份与状态信息备份
为了让两台设备故障切换时业务能平滑切换,两台设备间需要备份配置和状态信息。
备份方式
自动备份:缺省为开启状态,能够自动实时备份配置命令和周期性地备份状态信息,适用于各种双机热备组网。
手工批量备份:需要管理员手工触发,每执行一次手工批量备份命令,主用设备就会立即同步一次配置命令和状态信息到备用设备。
设备重启主备防火墙的配置自动同步:重启成功的设备会自动从当前承载业务的防火墙上进行一次配置同步。
会话快速备份:会话快速备份功能,适用于负载分担的工作方式,以应对报文来回路径不一致的场景。
备份内容
设备配置:
策略:安全策略、NAT策略、认证策略、攻击防范和ASPF等;
对象:地址、地区、服务、应用、用户、认证服务器、时间段、地址池、URL分类、关键字组、邮件地址组、签名和安全配置文件等;
网络:新建逻辑接口、安全区域、DNS、静态路由(配置hrp auto-sync config static-route后才可以备份)、IPSec和SSL VPN等;
系统:管理员、虚拟系统、日志配置等。
状态信息:会话表、Sever-map表、黑白名单、地址映射表、MAC表、用户表、IPSec安全联盟和隧道等。
到设备自身和从设备发出的报文产生的会话不会备份;
对于ICMP协议,设备收到ICMP ECHO-REQUEST报文,生成会话后就立即备份会话;
对于TCP协议,设备收到SYN报文,生成会话后就立即备份会话;
对于UDP协议,设备收到正向的首个报文,生成会话后就立即备份会话。
心跳线两端的接口通常被称之为“心跳接口”;
心跳接口可以是一个物理接口(GE接口),或者多个物理接口捆绑成的一个逻辑接口(Eth-Trunk)。
HRP Hello报文:两台防火墙通过定期(默认周期为1秒)互相发送心跳报文检测对端设备是否存活,也称为HRP心跳报文;
VGMP Hello报文:了解对端设备的VGMP组的状态,确定本端和对端设备当前状态是否稳定,是否要进行故障切换;
HRP数据报文:用于两台防火墙同步配置命令和状态信息;
心跳链路探测报文:用于检测对端设备的心跳口能否正常接收本端设备的报文,确定是否有心跳接口可以使用;
配置一致性检查报文:用于检测两台防火墙的关键配置是否一致,如安全策略、NAT等;
上述报文均不受防火墙的安全策略控制。因此,不需要针对这些报文配置安全策略。
开启会话快速备份功能后:
HRP心跳线
双机热备组网中,心跳线是两台防火墙交互消息了解对端状态、备份配置命令和各种表项的通道。
心跳线主要传递如下消息:
通常情况下,备份数据流量约为业务流量的20%~30%,请根据备份数据量的大小选择捆绑物理接口的数量。
心跳接口的状态
HRP心跳接口共有五种状态:Invalid、Down、Peerdown、Ready、Running。
防火墙VGMP状态:防火墙A为主设备,VGMP状态为Active;防火墙B为备设备,VGMP状态为Standby;
VRRP 备份组:防火墙下游配置VRRP备份组1 ,防火墙上游配置VRRP备份组2;VRRP备份组1和2设置防火墙A为Master,VRRP备份组1和2设置防火墙B为Backup;
备份方式:默认情况下,双机热备采用自动备份方式;
备份接口:防火墙GE0/0/1接口为心跳口,所连接的线路为心跳线;
抢占:默认开启,默认抢占时延为60s。
如图所示,防火墙A的业务口/所连业务线出现故障时,防火墙A的VGMP组优先级降低,发送VGMP请求报文;
防火墙B收到对端发送的VGMP请求报文后,与自己的VGMP组优先级进行比较,发送VGMP应答报文;
防火墙A收到回应报文,将VGMP组状态切换为Standby,防火墙A上的VRRP备份组1和备份组2则切换状态为Backup;
防火墙B将VGMP组状态切换为Active,防火墙B上的VRRP备份组1和备份组2则切换状态为Master。由防火墙B向交换机B和D发送免费ARP报文。
防火墙A出现整机故障,不再发送HRP Hello报文,防火墙B五个报文周期没有收到对端发送的HRP Hello报文,则防火墙B切换为主设备,VGMP状态为Active,防火墙B上的VRRP备份组1和备份组2则切换状态为Master。
心跳线出现故障,防火墙B五个报文周期没有收到对端发送的HRP Hello报文,则防火墙B切换为主设备,VGMP状态为Active,防火墙B上的VRRP备份组1和备份组2则切换状态为Master。此时出现双主现象。
防火墙A故障恢复后,此时VGMP组优先级恢复,在等待60s后,发送VGMP请求报文;
防火墙B收到VGMP请求报文后,与自己的VGMP组优先级进行比较,发现对端的优先级较高或相等(相等时查看VGMP的配置),则回应VGMP应答报文,同时将自己的VGMP组状态切换为Standby,VRRP备份组1和2状态切换为Backup;
防火墙A收到回应报文后,将自己的VGMP状态切换为Active,VRRP备份组1和2状态切换为Master。
防火墙A和防火墙B的业务接口都工作在三层,上下行分别连接二层交换机。上行交换机连接运营商的接入点,运营商为企业分配的IP地址为1.1.1.1。现在希望防火墙A和防火墙B以主备备份方式工作。正常情况下,流量通过防火墙A转发;当防火墙A出现故障时,流量通过防火墙B转发,保证业务不中断;
VRRP备份组1的虚拟IP:1.1.1.1/24;
VRRP备份组2的虚拟IP:10.3.0.3/24;
防火墙A心跳接口10GE0/0/7地址:10.10.0.1/24;
防火墙B心跳接口10GE0/0/7地址:10.10.0.2/24。
完成基本网络配置:包括配置防火墙各接口的IP地址,将防火墙各接口加入相应的安全区域及缺省路由配置;
配置VRRP备份组:在两台防火墙上完成VRRP备份组配置;
配置安全策略,允许心跳口之间交互HRP报文;
指定心跳接口,配置认证密钥,并启用双机热备功能;
配置安全策略,允许内网用户访问Internet;
配置NAT策略,让内网用户成功访问Internet。
Invalid:当本端防火墙上的心跳口配置错误时显示此状态(物理状态up,协议状态down),例如指定的心跳口为二层接口或未配置心跳接口的IP地址。
Down:当本端防火墙上的心跳口的物理与协议状态均为down时,则会显示此状态。
Peerdown:当本端防火墙上的心跳口的物理与协议状态均为up时,则心跳口会向对端对应的心跳口发送心跳链路探测报文。如果收不到对端响应的报文,那么防火墙会设置心跳接口状态为Peerdown。但是心跳口还会不断发送心跳链路探测报文,以便当对端的对应心跳口up后,该心跳链路能处于连通状态。
Ready:当本端防火墙上的心跳口的物理与协议状态均为up时,则心跳口会向对端对应的心跳口发送心跳链路探测报文。如果对端心跳口能够响应此报文(也发送心跳链路探测报文),那么防火墙会设置本端心跳接口状态为ready,随时准备发送和接受心跳报文。这时心跳口依旧会不断发送心跳链路探测报文,以保证心跳链路的状态正常。
Running:当本端防火墙有多个处于ready状态的心跳口时,防火墙会选择最先配置的心跳口形成心跳链路,并设置此心跳口的状态为Running。如果只有一个处于Ready状态的心跳口,那么它自然会成为状态为Running的心跳口。状态为Running的接口负责发送HRP心跳报文、HRP数据报文、HRP链路探测报文、VGMP报文和一致性检查报文。这时其余处Ready状态的心跳口处于备份状态,当处于Running状态的心跳口或心跳链路故障时,其余处于Ready状态的心跳口依次(按配置先后顺序)接替当前心跳口处理业务。
防火墙双机热备工作流程
防火墙双机热备主备备份应用场景
应用场景:主要应用于对可靠性要求较高场景,如企业办公场景,为提升网络可靠性,可在企业网络出口部署两台防火墙构成双机热备的组网。综合考虑业务需求,双机热备采用主备模式。
配置分析
防火墙双机热备主备备份工作流程
防火墙主备状态:防火墙A为主设备,VGMP状态为Active,VRRP备份组1和2状态为Matser;防火墙B为备设备,VGMP状态为Standby,VRRP备份组1和2状态为Backup;
配置与状态备份:防火墙A的配置与状态信息通过心跳线实时备份到防火墙B;
流量转发路径:防火墙A向交换机A和交换机C发送免费ARP报文,刷新交换机的MAC地址表。当主机A访问Internet时,首先通过ARP查询网关MAC地址(即查询VRRP Virtual IP的MAC地址),防火墙A回应VRRP Virtual MAC,主机A向交换机A发送业务报文,交换机A根据MAC表转发流量到防火墙A,防火墙A再转发到Internet。返程同理。
防火墙双机热备主备切换
业务口/业务线路故障
整机故障
心跳线故障
防火墙双机热备主备切回切
双机热备基本组网与配置
防火墙主备备份双机热备配置举例
需求描述:
配置思路:
在防火墙A上行业务接口10GE0/0/1上配置VRRP备份组1,并设置其状态为Active。
[FWA] interface 10ge0/0/1
[FWA-10GE0/0/1] vrrp vrid 1 virtual-ip 1.1.1.1 active
[FWA-10GE0/0/1] quit[FWA] interface 10ge0/0/3
[FWA-10GE0/0/3] vrrp vrid 2 virtual-ip 10.3.0.3 active
[FWA-10GE0/0/3] quit
在防火墙B上行业务接口10GE0/0/1上配置VRRP备份组1,并设置其状态为Standby。
[FWB] interface 10ge0/0/1
[FWB-10GE0/0/1] vrrp vrid 1 virtual-ip 1.1.1.1 standby
[FWB-10GE0/0/1] quit
[FWB] interface 10ge0/0/3
[FWB-10GE0/0/3] vrrp vrid 2 virtual-ip 10.3.0.3 standby
[FWB-10GE0/0/3] quit
在防火墙A指定心跳接口,配置认证密钥,并启用双机热备功能。
[FWA] hrp interface 10ge0/0/7 remote 10.10.0.2
[FWA] hrp authentication-key Admin@123
[FWA] hrp enable
在防火墙B指定心跳接口,配置认证密钥,并启用双机热备功能。
[FWB] hrp interface 10ge0/0/7 remote 10.10.0.1
[FWB] hrp authentication-key Admin@123
[FWB] hrp enabl