华为防火墙(NGFW)的双机热备
Posted 坏坏-5
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华为防火墙(NGFW)的双机热备相关的知识,希望对你有一定的参考价值。
目录
- 实现网络高可靠性的一种技术
VRRP技术
- 虚拟路由冗余协议
- 可以避免路由器传统组网所引起的单点故障
- 多台路由器在同一个广播域组成一台虚拟路由器,虚拟路由器提供一个虚拟IP地址,作为内网的网关,实际情况下,只有一台设备承载流量的转发,这台设备称为Master设备,其余设备为Slave设备
- 不同的路由器会根据优先级、接口地址大小进行选举主、从设备
- 主设备会周期性(1s)发送通告报文给组内的其他设备,告知自己在正常运行
- 当主设备出现故障,剩余的其他路由器会重新再选举新的主设备
- 当主设备从故障中恢复后,可以再次抢夺,重新成为主设备
- VRRP在防火墙中应用的缺陷
- 无法实现主、备防火墙一致性。当防火墙的上下行业务端口都配置了VRRP时,两个VRRP组是独立运行的,可能会出现两个VRRP的备份组状态不一致,导致业务不通
- 如果Trust区域、DMZ区域、Untrust区域的VRRP状态都一致,选择USG A作为主设备,那么可以正常的进行转发数据
- 如果对于Trust区域,USG A是作为VRRP的主设备,对于Untrust区域,USG B是作为VRRP的主设备,则会数据转发会出现问题
- PC1将数据转发给USG A(Master设备),USG A创建会话表项,指导报文转发,PC2在进行回包时,因为VRRP的Master设备是USG B,所以会把数据转发给USG B,但是此时USG B上并不存在会话表项,而且收到PC2的数据包并不是首包,所以不会创建会话表项,防火墙会直接丢弃
- 产生问题的原因是路由器和防火墙的转发机制不同
- 路由器是每个报文都会查找路由表,当匹配上后,再进行转发,当链路切换后,后续的报文不会受到影响,可以继续转发
- 防火墙是状态检测,首包允许通过,会创建一条五元组的会话表项,只有命中该会话表项的报文,才能通过防火墙。链路切换后,报文无法匹配到正确的会话表项,会导致丢包
VGMP协议
- VRRP组管理协议
- 将同一台防火墙上的多个VRRP备份组都加入到一个VRRP管理组,由管理组统一管理所有VRRP备份组,以此来保障组内的所有VRRP备份状态一致
- VGMP工作原理
- 将USG A配置为VGMP Active状态后,组内的所有VRRP组都以USG A作为Master设备,所有的报文从USG A上进行转发。另一台设备成为备用防火墙
- USG A会周期性发送Hello报文,其中携带自身的优先级(默认为45000)、VRRP成员状态等信息,以此通知Standby设备自身的运行状态,Standby设备收到Hello报文,也会恢复Ack消息,其中携带自身的优先级、VRRP成员状态等信息
- 当USG A出现故障后,会降低自身的优先级(-2),USG B收到Hello报文后,发现自身的优先级高于USG A,则成为Active设备,将流量引导到自身进行转发
- 当USG B三个Hello周期(3s)没有收到Hello报文时,就会认为对端出现故障,会将自己切换到Active状态
VGMP报文格式
- VGMP支持2种封装格式
- VRRP封装:即原始的VRRP报文封装格式
- 华为对VRRP报文进行扩展和修改后的VGMP报文
- VRRP报文头部的Type字段为2时,表示VRRP承载了VGMP报文
- Priority字段被修改为Type2,用以区分VGMP报文
- Type2=1:报文封装为心跳探测报文,用于检测能否正常接收本端设备报文,以确定是否由心跳口可以使用
- Type2=5:报文封装为一致性检查报文
- Type2=2:VRRP进一步封装VGMP头,根据VGMP报头中的vType字段区分一下报文
- vType=1:Hello心跳报文,用于探测对端的VGMP组是否处于工作状态
- vType=2:VGMP报文,用于两台防火墙间的VGMP组协商主备状态
- vType=3:HRP数据报文,用于数据备份,包括关键配置备份、各种状态信息备份
VGMP组管理
- 状态一致性管理
- VGMP管理组控制所有的VRRP备份组统一切换
- 抢占管理
- 当出现故障的主设备故障恢复时,其优先级也会恢复,可以重新抢占为主设备
- 抢占延时默认是60s
- 抢占:设备从主设备变为从设备再变回主设备
- 主备切换:设备从从设备,切换为主设备
HRP
- Huawei Redundancy Protocol,华为冗余协议
- 用来实现防火墙双机之间动态状态数据和关键配置命令的备份
- 连接状态数据包括TCP/UDP的会话表、ServerMap表项、动态黑名单、NO-PAT表项、ARP表项等
- 备份方向是从有状态为主设备的防火墙向对端备份
- 备份的通道也称为心跳线
HRP心跳接口
- 防火墙之间的备份数据通过心跳口发送和接收,通过心跳链路传输
- 心跳口必须至少是千兆接口,因为备份数据流量较多。也可以配置Eth-Trunk,将多个物理接口配置为逻辑接口,以增加带宽
- 心跳接口的状态
- Invalid:本端配置错误,本端显示的状态
- Down:本端的接口故障,本端显示的状态
- Peerdown:对端接口不是心跳口或对端接口故障,本端显示的状态。此时本端接口依旧会发送心跳链路探测报文,以便对端心跳口up后,心跳链路可以处于连通状态
- Ready:本端的心跳口发出心跳探测报文,对端心跳口可以响应此报文,则本端的端口状态为Ready,可以随时准备发送和接收心跳报文。此时端口会一直发送心跳链路探测报文,以保证心跳链路的状态正常
- Running:当本端有多个处于Ready状态的心跳口时,选择最先配置心跳口形成心跳链路,端口状态设置为Running
- 当Running状态的心跳口或心跳链路故障时,其他的Ready状态的心跳口,按照配置的先后顺序,再形成新的心跳链路
双机热备的备份方式
- 手工批量备份
- 管理员通过命令,把配置同步到另一台防火墙上
- 每执行一次手工批量备份命令,主设备就会立即同步一次配置命令和状态信息到备设备
- 执行一次手工批量备份命令后,主设备会立即同步一次可以备份的配置命令和可以备份的状态信息到备用设备
- 自动备份
- 默认开启,双机热备配置完成后,安全策略等就会自动备份到另一台防火墙上
- 能够自动实时备份配置命令,周期性备份状态信息
- 在防火墙上每执行一条可以备份的命令时,此配置命令就会立即同步备份到另一台防火墙上
- 主设备周期性(10s左右)地将可以备份的状态信息备份到备用设备上
- 不会备份的会话
- 到防火墙自身的会话
- 未完成3次握手的TCP半连接会话
- 只为UDP首包创建,而不被后续包匹配的会话
- 自动备份只会备份双机热备配置完成之后的配置命令,完成双机热备之前配置的命令不会自动备份,需要使用手工批量备份
- 会话快速备份
- 默认关闭,只做状态信息的快速备份,配置不会备份
- 当双机热备采用负载分担组网时,流量来回路径不一致,会启用该功能
- 主设备会实时的备份会话信息到备设备上
- 设备重启后,主备防火墙的配置自动同步
- 如果一台设备重启,重启期间,业务流量都是由另一台防火墙承载,此时可能会由新增、删除或修改配置。所以在防火墙重启完成后,会自动从当前承载业务的防火墙上进行一次配置同步
- 配置同步只会同步支持备份的配置,不支持备份的配置还是沿用原有的
- 配置量越大,在进行配置同步时,时间就会越长,在同步期间,不能执行支持备份的配置命令
实验
实验拓扑
实验说明
- 在防火墙上配置VGRP,对Trust区域提供的网关地址是10.1.1.254,对Untrust区域提供的网关地址是202.1.1.254
- FW1作为VGRP的Active设备,FW2作为Slave设备
- 防火墙的G1/0/2接口在DMZ区域,作为心跳线,配置HRP
- 防火墙配置SNAT,10.1.1.1访问AR2使用公网地址203.1.1.1-203.1.1.5访问
- 防火墙配置安全策略,允许AR1对AR2发起的ping和Telnet
实验配置
- AR、SW设备基本配置
# AR1 | # AR2 user-interface vty 0 4 set authentication password cipher huawei@123 user privilege level 3 | # SW1、SW2 |
- 防火墙基本配置
# FW1 ip ad 10.1.1.1 24 int g1/0/1 ip ad 202.1.1.1 24 int g1/0/2 ip ad 1.1.1.1 24
# 将相关接口加入到相关区域 firewall zone trust add int g1/0/0 firewall zone untrust add int g1/0/1 firewall zone dmz add int g1/0/2 | # FW2 ip ad 10.1.1.2 24 int g1/0/1 ip ad 202.1.1.2 24 int g1/0/2 ip ad 1.1.1.2 24
# 将相关接口加入到相关区域 firewall zone trust add int g1/0/0 firewall zone untrust add int g1/0/1 firewall zone dmz add int g1/0/2 |
- 配置VGRP
# FW1 vrrp vrid 1 virtual-ip 10.1.1.254 active int g1/0/1 vrrp vrid 2 virtual-ip 202.1.1.254 active | # FW2 int g1/0/0 vrrp vrid 1 virtual-ip 10.1.1.254 standby int g1/0/1 vrrp vrid 2 virtual-ip 202.1.1.254 standby |
- 在FW1和FW2上查看VGMP的状态
[FW1]dis vrrp brief 2022-07-15 10:32:00.740 Total:2 Master:2 Backup:0 Non-active:0 VRID State Interface Type Virtual IP ---------------------------------------------------------------- 1 Master GE1/0/0 Vgmp 10.1.1.254 2 Master GE1/0/1 Vgmp 202.1.1.254 |
[FW2]dis vrrp bri 2022-07-15 10:32:23.480 Total:2 Master:0 Backup:2 Non-active:0 VRID State Interface Type Virtual IP ---------------------------------------------------------------- 1 Backup GE1/0/0 Vgmp 10.1.1.254 2 Backup GE1/0/1 Vgmp 202.1.1.254 |
- 可以看到FW1成为Master设备,FW2成为Backup设备
- 配置HRP,将主设备恢复后的抢占延时配置为10s,默认为60s
# FW1 # HRP的接口为G1/0/2,对端的IP为1.1.1.2 hrp preempt delay 10 //配置主设备恢复后的抢占延时为10s hrp standby config enable //允许Standby设备配置 | # FW2 |
- HRP配置完成后,都会认为自己是Slave设备,主设备名会成为HRP_M,备设备名会成为HRP_S
- 主备的选举
- 由主机名的ASCII码的大小决定主备。ASCII码小的成为主设备,ASCII码大的成为备设备
- ASCII码相同时,根据启用双机热备功能时的时钟大小决定主备。时钟小的成为主设备,时钟大的成为备设备
- 双机热备配置完成后,只能在主设备上进行配置,不能在备设备上配置
- 在FW1上查看HRP的状态信息
HRP_M[FW1]dis hrp state verbose 2022-07-15 10:37:39.330 # 自身为active设备,对端为standby设备 Role: active, peer: standby # 自身的优先级为45000,对端的设备优先级为45000 Running priority: 45000, peer: 45000 Backup channel usage: 0.00% Stable time: 0 days, 0 hours, 0 minutes Last state change information: 2022-07-15 10:36:56 HRP core state changed, old_state = abnormal(standby), new_state = normal, local_priority = 45000, peer_priority = 45000.
Configuration: hello interval: 1000ms # 抢占延时为60s preempt: 60s # 镜像模式关闭 mirror configuration: off # 会话快速备份关闭 mirror session: off track trunk member: on auto-sync configuration: on auto-sync connection-status: on adjust ospf-cost: on adjust ospfv3-cost: on adjust bgp-cost: on nat resource: off
Detail information: GigabitEthernet1/0/0 vrrp vrid 1: active GigabitEthernet1/0/1 vrrp vrid 2: active ospf-cost: +0 ospfv3-cost: +0 bgp-cost: +0 |
- 在FW1上配置SNAT,并配置NAT策略
# 配置NAT地址池 mode pat section 0 203.1.1.1 203.1.1.5 HRP_M[FW1]nat-policy (+B) HRP_M[FW1-policy-nat]rule name SNAT (+B) HRP_M[FW1-policy-nat-rule-SNAT]source-zone trust (+B) HRP_M[FW1-policy-nat-rule-SNAT]destination-zone untrust (+B) HRP_M[FW1-policy-nat-rule-SNAT]source-address 10.1.1.3 32 (+B) HRP_M[FW1-policy-nat-rule-SNAT]action source-nat address-group SNAT (+B) |
- 在FW2上查看NAT地址池和NAT策略
- 可以看到FW1上的配置都同步到了FW2上
- 在FW1上配置安全策略,允许Ping和Telnet
security-policy rule name test source-zone trust destination-zone untrust source-address 10.1.1.3 mask 255.255.255.255 service icmp service telnet action permit |
- 查看FW1的防火墙的会话表
HRP_M[FW1]dis firewall session table verbose 2022-07-15 11:45:51.840 Current Total Sessions : 4 udp VPN: public --> public ID: c387f9fd640c2d8f7662d15349 Zone: local --> dmz TTL: 00:02:00 Left: 00:01:59 Recv Interface: InLoopBack0 Interface: GigabitEthernet1/0/2 NextHop: 1.1.1.2 MAC: 00e0-fcdb-17e0 <--packets: 0 bytes: 0 --> packets: 117 bytes: 20,151 1.1.1.1:49152 --> 1.1.1.2:18514 PolicyName: ---
udp VPN: public --> public ID: c487f9fd640c488176162d1534a Zone: dmz --> local TTL: 00:02:00 Left: 00:01:59 Recv Interface: GigabitEthernet1/0/2 Interface: InLoopBack0 NextHop: 127.0.0.1 MAC: 0000-0000-0000 <--packets: 0 bytes: 0 --> packets: 37 bytes: 2,516 1.1.1.2:16384 --> 1.1.1.1:18514 PolicyName: ---
udp VPN: public --> public ID: c487f9fd640c3b0190c62d15349 Zone: dmz --> local TTL: 00:02:00 Left: 00:01:59 Recv Interface: GigabitEthernet1/0/2 Interface: InLoopBack0 NextHop: 127.0.0.1 MAC: 0000-0000-0000 <--packets: 0 bytes: 0 --> packets: 113 bytes: 19,212 1.1.1.2:49152 --> 1.1.1.1:18514 PolicyName: --- # icmp是ping的会话表项 icmp VPN: public --> public ID: c487f9fd640222029cd62d1536d Zone: trust --> untrust TTL: 00:00:20 Left: 00:00:19 Recv Interface: GigabitEthernet1/0/0 Interface: GigabitEthernet1/0/1 NextHop: 202.1.1.3 MAC: 00e0-fc5d-1063 <--packets: 4 bytes: 336 --> packets: 4 bytes: 336 # 源地址为10.1.1.3的52651端口被转换为203.1.1.5的2048端口,对202.1.1.3发起访问 10.1.1.3:53163[203.1.1.5:2050] --> 202.1.1.3:2048 PolicyName: test |
- 查看FW2的会话表项
HRP_S[FW2]dis firewall session table 2022-07-15 11:46:08.080 Current Total Sessions : 4 udp VPN: public --> public 1.1.1.1:16384 --> 1.1.1.2:18514 udp VPN: public --> public 1.1.1.1:49152 --> 1.1.1.2:18514 udp VPN: public --> public 1.1.1.2:49152 --> 1.1.1.1:18514 # Remote表示是从主设备同步过来的 icmp VPN: public --> public Remote 10.1.1.3:53163[203.1.1.5:2050] --> 202.1.1.3:2048 HRP_S[FW2] |
- 可以看到流量虽然是经过FW1访问AR2,但是会话表项也会同步到FW2上
- 在AR1上使用ping -c 1000 202.1.1.3,SW1将连接FW1的接口shutdown,查看是否可以顺利的将流量引导到FW2上转发
HRP_S[FW1]dis hrp state 2022-07-15 11:57:11.600 # 自身的角色成为Standby,对端成为Active Role: standby, peer: active (should be "active-standby") # 优先级降低成为44998 Running priority: 44998, peer: 45000 Backup channel usage: 0.00% Stable time: 0 days, 0 hours, 3 minutes Last state change information: 2022-07-15 11:53:51 HRP core state changed, old_state = normal, new_state = abnormal(standby), local_priority = 44998, peer_priority = 45000. |
HRP_M[FW2]dis hrp state 2022-07-15 11:57:14.950 Role: active, peer: standby (should be "standby-active") Running priority: 45000, peer: 44998 Backup channel usage: 0.00% Stable time: 0 days, 0 hours, 3 minutes Last state change information: 2022-07-15 11:53:51 HRP core state changed, old_state = normal, new_state = abnormal(active), local_priority = 45000, peer_priority = 44998. |
- 可以看到FW2成为了主设备,FW1成为了备设备,优先级变为了44998,此时ping丢了1个包后,就恢复了连通性
- 使用Telnet服务测试主备切换过程时,对用户的TCP业务流量是否有影响
- AR1上Tenlet登录AR2,进行操作,查看配置等。此时将SW1连接FW1的接口shutdown,查看是否对Telnet服务有影响
- 根据测试结果得知,主备切换时,会有些许卡顿,但是不会影响到AR1的操作
以上内容均属原创,如有不详或错误,敬请指出。
本文作者: 坏坏
本文链接: http://t.csdn.cn/1eFjK
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请联系作者注明出处并附带本文链接!
以上是关于华为防火墙(NGFW)的双机热备的主要内容,如果未能解决你的问题,请参考以下文章