【防火墙技术连载41】强叔侃墙 双机热备篇 你所不知道的HRP

digest [复制链接]
发表于 : 2014-12-11 16:01:35 最新回复:2016-12-06 18:35:06
21147 21
强叔侃墙
强叔侃墙 官方号

强叔在前几篇中讲解了双机热备的核心VGMP。在介绍VGMP报文结构时我们看到了几种HRP协议定义的报文,本期强叔就要为大家解析HRP协议和这几种HRP报文。

有的小伙伴儿们会说:“HRP不就是负责双机的数据备份嘛。有什么难度?”其实HRP在备份时还是大有文章的,现在强叔就为大家揭秘这些HRP鲜为人知的细节。

为什么需要HRP

1.1  备份配置命令

防火墙通过执行命令(通过Web配置实际上也是在执行命令)来实现用户所需的各种功能。如果备用设备切换为主用设备前,配置命令没有备份到备用设备,则备用设备无法实现主用设备的相关功能,从而导致业务中断。

如下图所示,主用设备FW1上配置了允许内网用户访问外网的安全策略。如果主用设备FW1上配置的安全策略没有备份到备用设备FW2上,那么当主备状态切换后,新的主用设备FW2将不会允许内网用户访问外网(因为防火墙缺省情况下禁止所有报文通过)。

1.2  备份会话

         防火墙属于状态检测防火墙,对于每一个动态生成的连接,都有一个会话表项与之对应。主用设备处理业务过程中创建了很多动态会话表项;而备用设备没有报文经过,因此没有创建会话表项。如果备用设备切换为主用设备前,会话表项没有备份到备用设备,则会导致后续业务报文无法匹配会话表,从而导致业务中断。

    如下图所示,主用设备FW1上创建了PC1访问PC2的会话(源地址为10.1.1.10,目的地址为200.1.1.10),PC1PC2之间的后续报文会按照此会话转发。如果主用设备FW1上的会话不能备份到备用设备FW2上,那么当主备状态切换后,PC1访问PC2的后续报文在FW2上匹配不到会话。这样就会导致PC1访问PC2的业务中断。

         因此为了实现主用设备出现故障时备用设备能平滑地接替工作,必须在主用和备用设备之间备份关键配置命令和会话表等状态信息。为此华为防火墙引入了HRP Huawei Redundancy Protocol)协议,实现防火墙双机之间动态状态数据和关键配置命令的备份。

    如下图所示,主用设备FW1上配置了允许内网用户访问外网的安全策略,所以FW1会允许内网PC1访问外网PC2的报文通过,并且会建立会话。由于在FW1FW2上都使用了HRP协议(配置了双机热备中的HRP功能),因此主用设备FW1上配置的安全策略和创建的会话都会备份到备用设备FW2上。这样当主备状态切换后,由于备用设备上已经存在允许内网用户访问外网的安全策略以及PC1访问PC2的会话,所以PC1访问PC2业务报文不会被禁止或中断。

 

HRP是如何实现备份的?

防火墙通过心跳口(HRP备份通道)发送和接收HRP数据报文来实现配置和状态信息的备份。如下图所示,HRP数据报文从外到内依次封装了VRRP报文头、VGMP报文头和HRP报文头。其中VRRP报文头中Type=2Type2=2VGMP报文头中的“vType”字段对应为“HRP数据报文”的取值。

 

      HRP报文头中的关键参数解释如下:

l Source Module IDSource Sub Module ID表示本端防火墙哪些特性模块和子模块的数据需要备份。

l Dest Module ID和和Dest Sub Module ID表示需要向对端防火墙的哪些特性模块和子模块备份数据。

      HRP数据备份的过程如下图所示:

1、 FWA在发送HRP数据报文时,会将ASPF特性模块的ID写入HRP报文头的“Source Module ID”和“Dest Module ID”字段中,并将ASPF模块的配置和表项信息封装到HRP数据报文中。

2、 FWAHRP数据报文通过备份通道(心跳线)发送给FWB

3、 FWB收到HRP数据报文后,会根据HRP报文头中的“Source Module ID”和“Dest Module ID”字段将报文中的配置和表项信息发送到本端的ASPF特性模块,并进行配置与表项的下发。

       在前面双机热备的第二篇中我们讲到USG6000系列防火墙和USG2000/5000系列V3R1版本防火墙还支持将各种VGMP报文和HRP报文封装成UDP报文。当然这里介绍的HRP数据报文,以及下面讲的心跳链路探测报文和一致性检查报文都支持这种UDP方式的封装。这种方式的封装方法就是在VRRP报文头上再封装一个UDP头。HRP数据报文的UDP封装结构如下图所示。

      UDP封装的好处前面我们也讲过:UDP封装后的报文是单播报文,只要路由可达就可以跨越网段传输,而且能够被安全策略控制。

HRP能够备份哪些配置与状态信息?

防火墙能够备份的配置如下(以HUAWEI USG6000系列 V100R001版本为例):

l 策略:安全策略 NAT策略 、带宽管理 、认证策略 、攻击防范 、黑名单 ASPF

l 对象:地址 、地区、服务 、应用 、用户 、认证服务器 、时间段 URL分类 、关键字组 、邮件地址组 、签名 、安全配置文件(反病毒 、入侵防御 URL过滤 、文件过滤 、内容过滤 、应用行为控制 、邮件过滤)

l 网络:新建逻辑接口 、安全区域 DNS IPSec SSL VPN TSM联动

l 系统:管理员 、日志配置

说明:一般情况下,displayresetdebugging命令都不支持备份。

 根据上面的描述我们可以看到,防火墙的网络基本配置如接口地址和路由等都不能够备份,这些配置需要在双机热备状态成功建立前配置完成。而上面支持备份的配置可以在双机热备状态成功建立后,只在主用设备上配置。

防火墙能够备份的状态信息如下:

l 会话表

l SeverMap

l IP监控表

l 分片缓存表

l GTP

l 黑名单

l PAT方式端口映射表

l NO-PAT方式地址映射表

HRP的备份方向是怎样的?什么是配置主和配置从设备?

在主备备份组网下,配置命令和状态信息都由主用设备备份到备用设备。

在负载分担组网下,配置命令只能由“配置主设备”备份到“配置备设备”。状态信息则是两台设备相互备份的。

那么什么是配置主和配置备设备呢?

在负载分担组网下,两台防火墙都是主用设备(都有状态为ActiveVGMP组)。因此如果允许两台主用设备之间能够相互备份命令,那么可能就会造成两台设备命令相互覆盖或冲突的问题。所以为了方便管理员对两台防火墙配置的统一管理,避免混乱,我们引入配置主和配置从设备的概念。我们定义负载分担组网下,发送备份配置命令的防火墙称为配置主设备(命令行提示符前有HRP_A前缀),接收备份配置命令的防火墙称为配置从设备(命令行提示符前有HRP_S前缀)。

那么在负载分担组网下,如何确定配置主和配置备设备呢?

在负载分担组网下,最先建立双机热备状态的防火墙会成为配置主设备。也就是最先启用双机热备功能的防火墙会成为配置主设备。

HRP的几种备份方式有什么区别?

双机热备的HRP支持以自动备份、手工批量备份和快速备份三种方式。这三种备份方式的描述和区别下面我们一一来介绍。

5.1  自动备份

自动备份功能(命令为hrp auto-sync [ config | connection-status ])缺省为开启状态,能够自动实时备份配置命令和周期性地备份状态信息,适用于各种双机热备组网。

l 启用自动备份功能后,主用(配置主)设备上每执行一条可以备份的命令时,此配置命令就会被立即同步备份到备用(配置备)设备上。

如果在主用(配置主)设备上执行不可以备份的命令,则该命令仅在主用(配置主)设备上执行。

对于可以备份的配置命令,只能在主用(配置主)设备上配置,备用(配置备)设备上不能配置。对于不可以备份的配置命令,备用(配置备)设备上可以配置。关于哪些配置命令可以备份或不可以备份请参见“3  HRP能够备份哪些配置与状态信息?”。

l 启用自动备份功能后,主用设备会周期性的将可以备份的状态信息备份到备用设备上。即主用设备的状态信息建立后不会立即备份,需要经过一个周期后才会备份到备用设备。

自动备份不会备份以下类型的会话(只快速会话备份支持)

n 到防火墙自身的会话,例如管理员登录防火墙时产生的会话

n 未完成3次握手的TCP半连接会话

n 只为UDP首包创建,而不被后续包匹配的会话

5.2  手工批量备份

手工批量备份需要管理员手工触发,每执行一次手工批量备份命令(hrp sync [ config | connection-status ],主用设备就会立即同步一次配置命令和状态信息到备用设备。因此手工批量备份主要适用于主备设备之间配置不同步,需要手工同步的场景。我们可以在防火墙上配置一致性检查功能,检查两台防火墙的配置是否同步。一致性检查功能需要用到HRP一致性检查报文,这个我们最后会讲到。

l 执行手工批量备份命令后,主用(配置主)设备会立即同步一次可以备份的配置命令到备用(配置备)设备。

l 执行手工批量备份命令后,主用设备会立即同步一次可以备份的状态信息到备用设备,而不必等到自动备份周期的到来。

5.3  快速备份

快速会话备份功能(命令为hrp mirror session enable适用于负载分担的工作方式,以应对报文来回路径不一致的场景。为了保证状态信息的及时同步,快速备份功能只是备份状态信息,不备份配置的命令。配置命令的备份由自动备份功能实现。

      启用快速备份功能后,主用设备会实时的将可以备份的状态信息(包括上面提到的自动备份不支持的会话)都同步到备用设备上。即在主用设备状态信息建立的时候立即将其实时备份到备用设备。

综上所示,三种备份方式的使用方式通常是:自动备份(hrp auto-sync [ config | connection-status ])默认开启,不要关闭;如果主备设备之间配置不同步,需要执行手工批量备份的命令(hrp sync [ config | connection-status ]);如果是负载分担组网,一般需要开启快速会话备份功能(hrp mirror session enable)。

下面来讲解为什么快速会话备份特别适用于负载分担组网?

负载分担组网下,由于两台防火墙都是主用设备,都能转发报文,所以可能存在报文的来回路径不一致的情况,即来回两个方向的报文分别从不同的防火墙经过。这时如果两台防火墙的状态信息没有及时相互备份,则回程报文会因为没有匹配到状态信息而被丢弃,从而导致业务中断。

为防止上述现象发生,需要在负载分担组网下配置快速会话备份功能,使两台防火墙能够实时的相互备份状态信息,使回程报文能够查找到相应的状态信息表项,从而保证内外部用户的业务不中断。

下面举个例子来说明。如下图所示,FW1FW2形成双机热备的负载分担组网。内网PC访问外网Server的报文通过FW1转发,并建立会话。由于来回路径不一致,Server返回给PC的回程报文转发到FW2。这时如果只启用了自动备份功能,则FW1的会话还没有来得及备份到FW2上。这就导致回程报文无法在FW2上匹配会话而被FW2丢弃,从而造成业务中断。这时如果启用了会话快速备份功能,则FW1上产生的会话会立即备份到FW2上。这样回程报文就能在FW2上匹配到会话,从而被正常转发到PC

什么是心跳链路探测报文?与HRP心跳报文有什么区别?

两台防火墙之间备份的数据是通过防火墙的心跳口发送和接收的,是通过心跳链路(备份通道)传输的。心跳口必须是状态独立且具有IP地址的接口,可以是一个物理接口GE,也可以是为了增加带宽,由多个GE接口捆绑而成的一个逻辑接口Eth-Trunk(通常情况下,备份数据流量约为业务流量的20%25%,请根据备份数据量的大小选择捆绑GE接口的数量)。

如下图所示,我们经常会配置多个心跳口(多个GE或者多个Eth-Trunk接口),从而形成多条心跳链路,以保证备份数据的可靠传输。两台防火墙通过心跳口相互发送心跳链路探测报文,来检测对端设备的心跳口能否正常接收本端设备的报文,以确定是否有心跳口可以使用。心跳链路探测报文也是由VRRP报文头封装的,当VRRP报文头中Type=2Type2=2时,报文封装成心跳探测链路报文。
 

如上图所示,心跳接口有五种状态(执行命令display hrp interface可以查看

l invalid:当本端防火墙上的心跳口配置错误时显示此状态(物理状态up,协议状态down),例如指定的心跳口为二层接口或未配置心跳接口的IP地址。

l down当本端防火墙上的心跳口的物理与协议状态均为down时,则会显示此状态。

l peerdown当本端防火墙上的心跳口的物理与协议状态均为up时,则心跳口会向对端对应的心跳口发送心跳链路探测报文。如果收不到对端响应的报文,那么防火墙会设置心跳接口状态为peerdown。但是心跳口还会不断发送心跳链路探测报文,以便当对端的对应心跳口up后,该心跳链路能处于连通状态。

l ready当本端防火墙上的心跳口的物理与协议状态均为up时,则心跳口会向对端对应的心跳口发送心跳链路探测报文。如果对端心跳口能够响应此报文(也发送心跳链路探测报文),那么防火墙会设置本端心跳接口状态为ready,随时准备发送和接受心跳报文。这时心跳口依旧会不断发送心跳链路探测报文,以保证心跳链路的状态正常。

l running当本端防火墙有多个处于ready状态的心跳口时,防火墙会选择最先配置的心跳口形成心跳链路,并设置此心跳口的状态为running。状态为running的接口负责发送和HRP心跳报文、HRP数据报文、HRP一致性检查报文和VGMP报文。

这时其余处于ready状态的心跳口处于备份状态,当处于running状态的心跳口或心跳链路故障时,其余处于ready状态的心跳口依次(按配置先后顺序)接替当前心跳口处理业务。如上图所示,由于两台防火墙心跳接口的配置顺序与接口编号顺序相同,所以先配置的处于ready状态的心跳口GE1/0/3成为running状态,而后配置的处于ready状态的心跳口GE1/0/4处于备份状态。

    下面我们来看一种特殊情况:两台防火墙的心跳口配置顺序不一致时的情况。如下图所示,两台防火墙的GE1/0/2GE1/0/3GE1/0/4接口都是能够正常工作的心跳口(处于ready状态)。由于FW1先配置GE1/0/3为心跳口,而FW2先配置GE1/0/2为心跳口,所以FW1GE1/0/3 心跳口状态为running,而FW2GE1/0/2心跳口状态为running。这样FW1HRP数据报文会从GE1/0/3发送,而FW2HRP数据报文会从GE1/0/2发送。虽然HRP数据报文的发送和接收接口不一致,但这并不会影响双机热备的正常工作。

最后来总结下心跳链路探测报文和HRP心跳报文的区别。心跳链路探测报文用于检测对端设备的心跳口能否正常接收本端设备的报文,以确定心跳口是否可用的。只要本端心跳接口的物理和协议状态up就会向对端心跳口发送心跳链路探测报文进行探测。HRP心跳报文是用于探测和感知对端设备(VGMP组)是否正常工作的。HRP心跳报文只有主用设备的VGMP组通过状态为running的心跳口发出。


HRP一致性检查报文能够检查哪些内容?是如何实现的?

HRP一致性检查报文用于检测双机热备状态下的两台防火墙的双机热备配置是否一致以及策略配置是否相同。双机热备配置的一致性检查包括两台防火墙是否监控了相同的业务接口,是否配置了相同的心跳接口等。策略配置一致性检查主要检查两台防火墙是否配置了相同的策略,包括安全策略、带宽策略、NAT策略、认证策略和审计策略。HRP一致性检查报文也是由VRRP报文头封装的,当VRRP报文头中Type=2Type2=5时,报文封装成HRP一致性检查报文。

HRP一致性检查的实现原理如下:

1.    执行一致性检查命令hrp configuration check { all | audit-policy | auth-policy | hrp | nat-policy | security-policy | traffic-policy }后,执行此命令的设备会发送一致性检查请求报文给对端,并且同时收集自身的相关模块的配置信息摘要。

2.    对端设备收到请求后,会收集自身相关模块的配置信息摘要,然后封装到一致性检查报文中返回给本端设备。

3.    本端设备会对比自身的配置摘要和对端设备的配置摘要,并记录比较信息。客户可以执行命令display hrp configuration check查看一致性检查结果。例如下面的结果表示双机热备配置一致。

HRP_A[FWA] display hrp configuration check hrp

Module     State  Start-time          End-time            Result

hrp        finish 2008/09/08 14:21:56 2008/09/08 14:21:56 same configuration

 

至此,双机热备篇圆满结束,感谢各位小伙伴的观看~ 下周强叔将为大家带来本季的收官之作??防火墙出口选路篇,大家敬请期待!

 

 


上一篇 双机热备篇 VGMP招式详解

下一篇 出口选路篇 就近选路??缺省路由有备无患,明细路由近路建功

汇总贴】 


本帖被以下专题推荐:

  • x
  • 常规:

点评 回复

跳转到指定楼层
lWX273180
lWX273180   发表于 2015-1-22 20:02:28 已赞(0) 赞(0)

你好强叔,你之前有没有做过透明防火墙的HRP啊?我今天又需求做了一下,出现了很多问题,比如:firewall packet-filter default permit interzone local hrp direction inbound 等这样的策略无法同步!我这个拓扑结构和你的拓扑结构一样,上下连都是交换机,我在两台交换机上分别使用vlanif 10 (SW1)ip:10.1.1.1/24 ,(SW2)10.1.1.2/24,刚开始能ping通,可是过了一会就ping不通了,ARP老化时间过了之后就无法请求到SW2上的地址了,当拔掉交换机连接防火墙上的任意一根线的时候就能ping通了,我把ARP表和MAC地址表都删除后再ping发现所有交换机和防火墙上的灯都一起闪,就是ping不通,强叔,能帮忙分析一下吗?谢谢了。

  • x
  • 常规:

点评 回复

weissyang
weissyang   发表于 2014-12-23 16:57:10 已赞(0) 赞(0)

貌似路由是可以同步的啊

  • x
  • 常规:

点评 回复

强叔侃墙
强叔侃墙 官方号 发表于 2014-12-23 17:20:04 已赞(0) 赞(0)

回复 10 楼

亲,路由是不能同步的。防火墙的双机不是交换机的堆叠,本质上防火墙还是两台设备,而两台设备的路由配置是不能完全相同的,所以路由配置必然是不能同步的,需要各自手工配置的。

  • x
  • 常规:

点评 回复

weissyang
weissyang   发表于 2014-12-24 14:50:40 已赞(0) 赞(0)

那为什么不能能够设计为路由信息同步呢?本地和下一条地址都是用的浮动地址。为什么不能同步?除了随配置自动生成接口直连路由是接口实地址不应该同步外,其他的手工配置的路由没理由不同步啊。

而且我记得5000系列的防火墙上路由都是主设备上配完了都同步到备设备了

另外,请问用户名密码之类的到底能同步么?各种说法都有。不过我试验过,VTY和CON的情况五花八门。盼解答

 

  • x
  • 常规:

点评 回复

爱在离别时
爱在离别时  精英 发表于 2014-12-26 13:18:56 已赞(0) 赞(0)

顶强叔!收藏先!

  • x
  • 常规:

点评 回复

强叔侃墙
强叔侃墙 官方号 发表于 2014-12-26 17:19:08 已赞(0) 赞(0)

回复 12 楼

路由配置是不能同步的。我理解你说的那种情况,是指VRRP+静态路由方式的,这时主备FW的静态路由配置一般是相同的。但你也要考虑FW上下行连接路由器运行OSPF的情况。举个例子,FW1上行连接Router1,FW2上行连接Router2,那么这两个FW的上行网段肯定是不同的,我们需要在FW上发布的OSPF路由网段也是不同的。

目前用户名和密码的配置是能够备份的。

  • x
  • 常规:

点评 回复

Cai_n
Cai_n   发表于 2014-12-11 16:09:29 已赞(0) 赞(0)

顶强叔!收藏先!

  • x
  • 常规:

点评 回复

x00151571
x00151571   发表于 2014-12-11 16:11:18 已赞(0) 赞(0)

足够深入!

  • x
  • 常规:

点评 回复

Y_GH
Y_GH   发表于 2014-12-11 16:11:35 已赞(0) 赞(0)

终于对双机入门了!

感谢强叔,期待更多好文!

  • x
  • 常规:

点评 回复

123
返回列表
发表回复
您需要登录后才可以回帖 登录 | 注册

警告 内容安全提示:尊敬的用户您好,为了保障您、社区及第三方的合法权益,请勿发布可能给各方带来法律风险的内容,包括但不限于政治敏感内容,涉黄赌毒内容,泄露、侵犯他人商业秘密的内容,侵犯他人商标、版本、专利等知识产权的内容,侵犯个人隐私的内容等。也请勿向他人共享您的账号及密码,通过您的账号执行的所有操作,将视同您本人的行为,由您本人承担操作后果。详情请参看“隐私声明
如果附件按钮无法使用,请将Adobe Flash Player 更新到最新版本!
登录参与交流分享

登录参与交流分享

登录