追风赶月莫停留,平芜尽处是春山。这篇文章主要讲述#yyds干货盘点# HCIE-Security Day11:初步学习防火墙双机热备和VGMP概念相关的知识,希望能为你提供帮助。
基本概念防火墙的高可靠性可以通过双机热备等方式实现,相比于路由器和交换机,有了一些不一样的东西,主要总结就是:
通过VGMP协议和HRP协议实现防火墙之间主备切换,会话表项和配置命令的同步。
VGMP协议是对vrrp协议的补充和针对防火墙部署特性的适应性改进,实现主备防火墙上下行接口同步切换状态。
HRP协议实现了防火墙双机之间动态状态数据和关键配置命令的备份。
产生目的传统备份方案在接入点部署多台路由器形成主备备份,并通过vrrp或者动态路由等方式进行链路切换。但是如果接入点部署的是状态检测防火墙时,由于它是基于连接状态的,维护会话表,高效转发非首包。如果还是仅仅使用vrrp的话,虽然流量可以在主备之间切换,但是新的master的会话表项需要重新引导建立,原有连接中断,造成业务中断。
状态检测防火墙是基于连接状态的,会对一条流量的首包(第一个报文)进行完整的检测,并建立会话来记录报文的状态信息(包括哦报文的源目地址、源目端口和协议号等),而这条流量的后续报文只需匹配会话就可以通过防火墙并完成转发,如果不匹配则会被丢弃。
针对这一情况,开发了防火墙的双机热备功能。其最大特点就是通过在主备防火墙之间部署专用心跳线,用来同步防火墙主备状态、会话表项以及配置信息,使得流量无缝切换。
?
工作模式主备备份
正常情况下,两台防火墙根据配置形成一主一备,master会处理业务,并将设备上的会话、server-map表等重要信息以及配置信息通过心跳线实时同步到backup。backup不会处理业务,只是接收master传递的这些表项和配置命令。
master故障后,backup升主,处理业务,业务流量被上下行设备的路由信息引导到新的master上,由于新的master之前已经同步了各种会话表项和配置信息,所以业务的切换是无感的。
负载分担
如果希望backup闲置,或者业务流量较多,对master产生较大压力,可以考虑采用负载分担模式,该模式下,两台fw都是master,都建立会话,都处理业务流量,同时又作为对方的backup设备,接受对方备份的会话和配置信息。
正常情况下,两台fw各自负责不同类型的流量转发,当某一fw故障后,流量全部切换到另外一台fw。
相比主备备份方式,组网方案和配置比较复杂。也有更多需要注意的地方,比如nat地址池的分配啦、流量的来回路径不一致啦,峰值流量啦,总之让人头大,后面通过实验再讲吧。
注意事项目前只支持两台完全一致防火墙之间部署。完全一致的意思看起来简单,但是实际上不好给定。硬件的一致指的是型号必须要一样,安装的单板类型、数量以及单板安装的位置必须相同,在更高版本的防火墙中,比如USG6680E等,还要求同型号设备的BomID version匹配,可以通过display version检查。但是硬盘的有无不包括在内。
软件的一致包括系统软件版本、系统补丁版本、动态加载的组件包、特征库版本、HASH选择CPU模式以及HASH因子等。但实际上,两台fw可以暂时运行不同版本的系统软件。
VGMP组vrrp组管理协议,VRRP Group Management Protocol,华为私有协议。
防火墙的双机热备功能是在VRRP的基础上拓展而来的,vrrp上一篇已经系统学习过了,总的来说就是保证了当主机的默认网关出现故障时,由备份路由器自动代替出现故障的路由器完成报文转发任务,从而保持网络通信的连续性和可靠性。
vrrp的主备指的是作为主机的默认网关的主备,解决的是网关的可靠性问题。而作为防火墙,则需要对上下行接口均进行主备。
所以就需要给上行接口也配置vrrp,这样,两台防火墙的下行接口加入vrrp备份组1,上行接口加入vrrp备份组2,正常情况下,一台防火墙的上下行接口要么都是主,要么都是备。比如fw1是vrrp备份组1中的master设备,也是vrrp备份组2中的master设备,内外网之间的业务报文都会通过fw1来转发。
如果fw1的下行接口故障,则vrrp备份组1发生主备切换,fw2成为vrrp备份组1的master设备,并且通过发送免费arp的方式引导上行流量通过自己转发,但是fw1的上行接口依然是正常的,它仍是vrrp备份组2的master设备,所以回程流量一定会流向fw1,企图通过fw1做转发。但是fw1的下行接口是故障的,所以它没有办法完成这项使命,只好抱歉的把这些流量全部丢掉。此时,我们的业务流量就中断了。
这并不是我们希望看到的样子,所以我们希望vrrp协议聪明一点,多个vrrp备份组之间步调一致,不要各自为战,免得防火墙对上是主,对下是备,欺上瞒下。
为了让vrrp不要各自为战,解决多个vrrp备份组状态不一致的问题,华为防火墙引入VGMP(vrrp组管理协议),实现对vrrp备份组的统一管理,保证多个vrrp备份组状态的一致性。把防火墙上所有的vrrp备份组都加入到同一个vgmp组中,由vgmp组来集中监控并管理所有的vrrp备份组状态。如果vgmp组检测到其中一个vrrp备份组的状态变化,则vgmp组会控制组中的所有vrrp备份组统一进行状态切换,保证各vrrp备份组状态的一致性。
vgmp组的优先级决定了vgmp组的状态,高优先级的是active,低优先级的是standby。
vgmp组的状态决定了组内vrrp备份组的状态,也决定了防火墙的主备状态。
vgmp组的初始优先级是根据cpu个数自动生成的,后续会根据vrrp状态变化进行调整,vrrp状态变init,vgmp组的优先级下调2.
?
有了vgmp,在fw1上将vrrp备份组1和备份组2都加入active的vgmp组,在fw2上将vrrp备份组1和备份组2都加入standby的vgmp组。由于vgmp组的状态决定了组内vrrp备份组的状态,也决定了防火墙的主备状态,所以fw1是主设备,fw2是从设备,fw1的上下行接口都是master,fw2的上下行接口都是backup,这时如果fw1的下行接口故障,则fw1的vgmp组优先级下调,成为standby状态,而fw2上的vgmp组成了active状态,即fw1是备设备,fw2是主设备。vgmp组内vrrp备份组状态也被调整,fw1的上行接口成为backup,fw2的上行接口成为master,此时上行流量通过fw2转发,下行流量也通过fw2转发,流量不会丢失。
两台防火墙的VGMP组之间通过交互VGMP报文来传递状态和优先级信息。
VGMP报文结构
vgmp报文由改造后的vrrp报头封装。
标准vrrp报头version
| type
| virtual rtr id
| priority
| count ip addrs
|
【#yyds干货盘点# HCIE-Security Day11(初步学习防火墙双机热备和VGMP概念)】auth type
| adver int
| checksum
|
ip address1
|
ip addressn
|
auth data1
|
auth data2
|
Version:2
Type:1,表示advertisement
Vrid:虚拟路由器id ,从1到255
Priority:缺省100,越大越优,0表示停止参与备份组,主动放弃master地位,不必等到计时器超时,255保留给ip地址拥有者
Count ip addrs:备份组中虚拟ipv4地址个数
Auth type:0不认证,1明文认证,2md5认证
Adver int:通告报文发送间隔,默认1s
Checksum:16位校验和,检测vrrp报文完整性
Ipaddr1:第一个vrrp备份组中虚拟ipv4地址
Ipaddrn:第n个vrrp备份组中虚拟ipv4地址
Auth data:明文认证和md5认证使用
然后把vgmp报文也放这里
version
| type
| virtual rtr id
| type2
| count ip addrs
|
auth type
| adver int
| checksum
|
auth data1
|
auth data2
|
version
| vtype
| mode
| vgmpid
| vpriority
|
checkcode
|
datalen
|
data
|
比较
字段
| 标准vrrp头
| 改造vrrp头
|
type
| 恒为1,表示vrrp通告
| 为1表示标准vrrp通告报文,为2表示改造vrrp通告报文
|
virtual rtr id
| 表示vrrp备份组id
| 恒为0
|
priority/type2
| priority,表示优先级
| type2 为1时,表示携带心跳链路探测报文 为5时,表示携带一致性检查报文 为2时,携带vgmp报文
|
ip address
| vrrp备份组中虚拟ipv4地址
| 取消
|
vtype
|
| 表示vgmp hello报文 或hrp hello报文 或hrp数据报文
|
mode
|
| 请求报文/应答报文
|
vgmpid
|
| 表示vgmp组是active组还是standy组
|
vpriority
|
| 表示vgmp组的优先级
|
data
|
| 包含vgmp组的状态信息
|
vgmp报文类型心跳链路探测报文
检测对端设备的心跳口能否正常接收本段设备的报文,以确定是否有心跳口可以使用
一致性检查报文
检测双机热备状态下的两台防火墙的双机热备和策略配置是否一致,如安全策略、NAT等。
vgmp hello报文
两台防火墙之间的vgmp组协商主备。
hrp hello报文
探测对端的vgmp组是否处于工作状态,状态为active的vgmp组会每隔一段时间(缺省1s)向对端的vgmp组发送hrp心跳报文,用来通知本端的vgmp组状态和优先级。如果状态为standby的vgmp在三个周期内没有收到对端发送的hrp心跳报文,就认为对端vgmp组故障,将自身状态切换到active。
hrp数据报文
在vgmp报文头后增加hrp报文头,才能封装成hrp数据报文,hrp数据报文用来在主备设备之间的数据备份,包括命令行配置的备份和各种状态信息的备份。
特别注意:上述报文均不受FW的安全策略控制。因此,不需要针对这些报文配置安全策略!
VGMP报文交互通道双机热备组网中,心跳线是两台fw交互消息了解对端状态以及备份配置命令和各种表项的通道。心跳线两端的接口叫做心跳接口。vgmp报文就是通过心跳线来交互的。
心跳接口最好使用防火墙的ha接口,如果没有ha接口,可以多个以太网接口绑成eth-trunk接口。
心跳接口一般光纤或网线直连,也可以通过交换机或者路由器连接。
心跳接口必须加入相同的安全区域。
心跳接口的mtu不要小于1500.
心跳线不要跑业务数据。
今天没有实验,明天会贴实验出来 :)
推荐阅读