huawei实战2 VRRP+HRP


huawei实战2 VRRP+HRP

设备IP编址、接口VLAN见下表:

实验需求

1. 设备IP、VLAN规划如上表所示;

2. PC1(VLAN10)的网关在汇聚交换机SW1及SW2上;PC3的网关在FW1及FW2上;

3. PC1属于安全区域Trust;PC3属于安全区域Untrust;

4. 网络中一共存在四组VRRP,VRRP组1的虚拟IP地址作为PC1的网关;VRRP组3的虚拟IP地址作为SW1及SW2上默认路由的下一跳;VRRP组2的虚拟IP地址作为FW1及FW2上回程路由的下一跳;VRRP组4的虚拟IP地址作为PC3的网关;

5. FW1及FW2上不激活HRP(也就是说不运行双机热备)的情况下完成配置使得PC1能够ping通PC3,并且流量从PC1发出后,路径是SW1-FW1-SW4-PC3。

6. 断开FW1-SW1的互联线路,检查PC1及PC3的连通性,分析原因。

7. 在FW1的GE0/0/2口及FW2的GE0/0/2口之间增加一根连线(GE0/0/2口划入DMZ区域),激活HRP,防火墙以主备模式运行,FW1为主,FW2为备。

配置实现

1. 配置接入层交换机SW3

#在SW3上创建VLAN

[SW3] vlan batch 10

#配置二层接口类型,并加入相应的VLAN

[SW3] interface GigabitEthernet0/0/1

[SW3-GigabitEthernet0/0/1] port link-type access

[SW3-GigabitEthernet0/0/1] port default vlan 10

[SW3] interface GigabitEthernet0/0/21

[SW3-GigabitEthernet0/0/21] port link-type trunk

[SW3-GigabitEthernet0/0/21] port trunk allow-pass vlan all

[SW3] interface GigabitEthernet0/0/22

[SW3-GigabitEthernet0/0/22] port link-type trunk

[SW3-GigabitEthernet0/0/22] port trunk allow-pass vlan all

#配置MSTP

[SW3] stp mode mstp

[SW3] stp enable


2. 配置SW1及SW2,使得PC1能够ping通网关

#在SW1上创建VLAN、配置二层接口并将接口划入相应VLAN

[SW1] vlan batch 10 210

[SW1] interface GigabitEthernet0/0/24

[SW1-GigabitEthernet0/0/24] port link-type trunk

[SW1-GigabitEthernet0/0/24] port trunk allow-pass vlan all

[SW1] interface GigabitEthernet0/0/21

[SW1-GigabitEthernet0/0/21] port link-type trunk

[SW1-GigabitEthernet0/0/21] port trunk allow-pass vlan all

#SW1配置MSTP

[SW1] stp mode mstp

[SW1] stp instance 0 root primary

[SW1] stp enable

#在SW1上配置vlanif10,并加入VRRP组1,VRRP组1的虚拟IP作为PC1的网关

[SW1] interface vlanif 10

[SW1-vlanif 10] ip address 192.168.10.3 24

[SW1-vlanif 10] vrrp vrid 1 virtual-ip 192.168.10.1

[SW1-vlanif 10] vrrp vrid 1 priority 120


#在SW2上创建VLAN、配置二层接口并将接口划入相应VLAN

[SW2] vlan batch 10 210

[SW2] interface GigabitEthernet0/0/24

[SW2-GigabitEthernet0/0/24] port link-type trunk

[SW2-GigabitEthernet0/0/24] port trunk allow-pass vlan all

[SW2] interface GigabitEthernet0/0/22

[SW2-GigabitEthernet0/0/22] port link-type trunk

[SW2-GigabitEthernet0/0/22] port trunk allow-pass vlan all

#SW2配置MSTP

[SW2] stp mode mstp

[SW2] stp instance 0 root secondary

[SW2] stp enable

#在SW2上配置vlanif10,并加入VRRP组1,VRRP组1的虚拟IP作为PC1的网关

[SW2] interface vlanif 10

[SW2-vlanif 10] ip address 192.168.10.2 24

[SW2-vlanif 10] vrrp vrid 1 virtual-ip 192.168.10.1


完成上述配置后,PC1即可ping通自己的网关192.168.10.1。


3. 配置FW1及FW2,使得PC3能够联通自己的网关

在FW1上将GE0/0/3口添加到相应的安全区域,并完成接口的IP地址、VRRP等配置:

[Fw1] firewall zone untrust

[Fw1-zone-untrust] add interface GigabitEthernet 0/0/3

[Fw1] interface GigabitEthernet 0/0/3

[Fw1-GigabitEthernet0/0/3] ip address 10.1.1.3 24

[Fw1-GigabitEthernet0/0/3] vrrp vrid 4 virtual-ip 10.1.1.1 master


在FW2上将GE0/0/3口添加到相应的安全区域,并完成接口的IP地址、VRRP等配置:

[Fw2] firewall zone untrust

[Fw2-zone-untrust] add interface GigabitEthernet 0/0/3

[Fw2] interface GigabitEthernet 0/0/3

[Fw2-GigabitEthernet0/0/3] ip address 10.1.1.2 24

[Fw2-GigabitEthernet0/0/3] vrrp vrid 4 virtual-ip 10.1.1.1 slave


完成上述配置后,FW1的GE0/0/3口及FW2的GE0/0/3口就会加入VRRP组4,其产生的虚拟路由器就是PC3的网关,只不过由于我们暂时没有在防火墙上放开Untrust到local的inbound方向的策略,因此PC3无法ping通自己的网关10.1.1.1,但是这并不影响实验,当然如果向看看实验现象,可以开放local untrust的inbound策略,不过在实际的网络环境中要慎重。

4. 完成FW1FW2与SW1SW2的对接(SW1及SW2的配置)

#在SW1上完成vlanif210的接口IP及VRRP的配置

[SW1] interface vlanif 210

[SW1-vlanif210] ip address 192.168.210.12 24

[SW1-vlanif210] vrrp vrid 2 virtual-ip 192.168.210.1

[SW1-vlanif210] vrrp vrid 2 priority 120

[SW1-vlanif210] quit

#在SW1上将GE0/0/20接口加入vlan210

[SW1] interface GigabitEthernet0/0/20

[SW1-GigabitEthernet0/0/20] port link-type access

[SW1-GigabitEthernet0/0/20] port default vlan 210

[SW1-GigabitEthernet0/0/20] quit

#在SW1上配置默认路由,该默认路由下一跳为VRRP组3的虚拟IP地址

[SW1] ip route-static 0.0.0.0 0.0.0.0 192.168.210.2


#在SW2上完成vlanif210的接口IP及VRRP的配置

[SW2] interface vlanif 210

[SW2-vlanif210] ip address 192.168.210.11 24

[SW2-vlanif210] vrrp vrid 2 virtual-ip 192.168.210.1

[SW2-vlanif210] quit

#在SW2上将GE0/0/20接口加入vlan210

[SW2] interface GigabitEthernet0/0/20

[SW2-GigabitEthernet0/0/20] port link-type access

[SW2-GigabitEthernet0/0/20] port default vlan 210

[SW2-GigabitEthernet0/0/20] quit

#在SW2上配置默认路由,该默认路由下一跳为VRRP组3的虚拟IP地址

[SW2] ip route-static 0.0.0.0 0.0.0.0 192.168.210.2


#在FW1上完成GE0/0/1接口的IP及VRRP配置,将GE0/0/1加入Trust安全区域

[FW1] interface GigabitEthernet0/0/1

[FW1-GigabitEthernet0/0/1] ip address 192.168.210.22 24

[FW1-GigabitEthernet0/0/1] vrrp vrid 3 virtual-ip 192.168.210.2 master

[FW1-GigabitEthernet0/0/1] vrrp virtual-mac enable #如果在eNSP模拟器上实验,需配置此条命令,否则SW1及SW2无法ping通VRRP组3的虚拟IP地址。

[FW1-GigabitEthernet0/0/1] quit

[FW1] firewal zone trust

[Fw1-zone-trust] add interface GigabitEthernet 0/0/1

[Fw1-zone-trust] quit

#在FW1上配置回程路由,下一跳为VRRP组2的虚拟IP地址

[FW1] ip route-static 192.168.10.0 24 192.168.210.1

#在FW1上配置区域间安全策略,允许trust区域的192.168.10.0/24网络访问Untrust区域:

[FW1] policy interzone trust untrust outbound

[Fw1-policy-interzone-trust-untrust-outbound] policy 0

[Fw1-policy-interzone-trust-untrust-outbound-0] policy source 192.168.10.0 0.0.0.255

[Fw1-policy-interzone-trust-untrust-outbound-0] action permit

[Fw1-policy-interzone-trust-untrust-outbound-0] quit

[Fw1-policy-interzone-trust-untrust-outbound] quit


#在FW2上完成GE0/0/1接口的IP及VRRP配置,将GE0/0/1加入Trust安全区域

[FW2] interface GigabitEthernet0/0/1

[FW2-GigabitEthernet0/0/1] ip address 192.168.210.21 24

[FW2-GigabitEthernet0/0/1] vrrp vrid 3 virtual-ip 192.168.210.2 slave

[FW2-GigabitEthernet0/0/1] vrrp virtual-mac enable #如果在eNSP模拟器上实验,需配置此条命令,否则SW1及SW2无法ping通VRRP组3的虚拟IP地址。

[FW2-GigabitEthernet0/0/1] quit

[FW2] firewal zone trust

[FW2-zone-trust] add interface GigabitEthernet 0/0/1

[FW2-zone-trust] quit

#在FW2上配置回程路由,下一跳为VRRP组2的虚拟IP地址

[FW2] ip route-static 192.168.10.0 24 192.168.210.1

#在FW2上配置区域间安全策略,允许trust区域的192.168.10.0/24网络访问Untrust区域:

[FW2] policy interzone trust untrust outbound

[FW2-policy-interzone-trust-untrust-outbound] policy 0

[FW2-policy-interzone-trust-untrust-outbound-0] policy source 192.168.10.0 0.0.0.255

[FW2-policy-interzone-trust-untrust-outbound-0] action permit

[FW2-policy-interzone-trust-untrust-outbound-0] quit

[FW2-policy-interzone-trust-untrust-outbound] quit


最后为PC1及PC3配置网卡IP、网关地址。

完成上述配置后,PC1即可ping通PC3。

数据交互过程分析

下面我们来分析一下,PC1访问PC3时,数据的交互过程:

1. PC1产生数据包,数据包的源IP地址为192.168.10.100,目的IP为10.1.1.100。PC1发向数据包的目的地是非本地网络的IP,因此将数据包交给自己的网关192.168.10.1。此时我们已经在SW1及SW2的vlanif 10接口上部署了VRRP(组1)并且Master为SW1,因此数据包被引导到SW1的vlanif10。

huawei实战2 VRRP+HRP

值得注意的是,此时由于MSTP的作用,SW3的GE0/0/22口被Block,因此网络中不存在环路。所以PC1到网关的数据包直接从SW3的GE0/0/21口转发出去到达SW1。

2. SW1在收到这个数据包后,发现目的地址为10.1.1.100,于是在路由表中进行查找,最终匹配路由表中的默认路由。默认路由的下一跳地址为192.168.210.2。

此时我们已在FW1的GE0/0/1及FW2的GE0/0/1口上运行了一组VRRP(组ID为3),而此刻FW1的GE0/0/1口为该组VRRP的Master,因此数据包被引导到了FW1上:

huawei实战2 VRRP+HRP

防火墙从自己的GE0/0/1口收到这个数据包,而该接口属于Trust安全区域,目的地址为10.1.1.100,而10.1.1.100正是自己的GE0/0/3口直连的网络,因此它查看安全策略,发现Trust到Untrust的Outbound方向的安全策略放行了来源于192.168.10.0/24网络的流量,于是FW1为了该流量在会话表中创建了一个条目,并将报文转发给PC3。

huawei实战2 VRRP+HRP

3. 数据包到达PC3后,PC3要回包,回送的报文源地址为10.1.1.100,目的地址为192.168.10.100。该数据包被PC3交给了自己的网关:10.1.1.1。

而我们已经在防火墙FW的GE0/0/3及FW2的GE0/0/3口上运行了一组VRRP(组ID为4),此刻该组VRRP的Master为FW1的GE0/0/3口,因此PC3发向自己网关10.1.1.1的数据实际上是转发到了FW1上:

huawei实战2 VRRP+HRP

4. FW1在从自己的GE0/0/1口上收到这个数据包后,发现该接口为Untrust接口,同时经过路由查找后确认该数据包需从GE0/0/1口送出(我们为FW1配置了到达192.168.10.0/24的路由),虽然我们没有放开trust与untrust的inbound方向的安全策略,但是FW1在会话表中找到了一个匹配的表项,确认该报文为回程报文,因此放行。数据包的下一跳是192.168.210.1。

5. 由于我们在SW1及SW2的vlanif210接口上已经部署了一组VRRP(组ID为2),虚拟IP地址为192.168.210.1,并且此时SW1的vlanif210为该组VRRP的Master,因此,FW1转发到192.168.210.1的报文实际上是转发给了SW1:

huawei实战2 VRRP+HRP

6. SW1在收到该报文后,发现报文的目的地址是192.168.10.100,就是自己本地直连的网络,因此将数据直接走二层丢给了PC1。到此PC1与PC3的通信过程就完成了。

遗留问题及防火墙双机热备

经过我们的配置,大体上是实现了网路的需求,在网络拓扑正常的情况下,PC1及PC3的数据访问是没有问题的,但是这个网络却存在隐患:

huawei实战2 VRRP+HRP

由于某种原因,SW1及FW1之间的链路发生了故障,故障发生后,FW2的GE0/0/1口由于无法收到原Master的VRRP消息因此认为FW1的GE0/0/1口已发生故障,于是自己切换到Master状态。此时PC1发往PC3的报文将经由交换机转发给FW2,FW2从GE0/0/1口收到这些报文,转给PC3。但是问题就出在PC3回包上,PC3的回程数据包是发向自己的网关的,而此刻FW1及FW2加入的VRRP组4由于并未发生切换,FW1的GE0/0/3口依然是Master。因此PC3的回程流量实际上是发给了FW1,这就造成了来回路径不一致的问题,由于此刻FW1已经丢失了与SW1的连接,因此数据包在这里被丢弃。

huawei实战2 VRRP+HRP

从上面的现象我们可以看出,之所以发生这样的问题,是因为防火墙上,VRRP组3和VRRP组4是相互独立的,一个VRRP组的状态切换并不影响另一个VRRP组的状态切换,一种理想的方式是当FW1及FW1之间的链路发生故障时,VRRP组3发生了状态切换,同时激发VRRP组4也发生切换,这样一来FW2就同时成为VRRP组3和组4的Master,来回路径就能一致了。

实现这个目标的方法是部署双机热备。

huawei实战2 VRRP+HRP

在FW1及FW2之间增加一根连线:双方GE0/0/2口互联。

FW1的配置增加如下:

[FW1] Interface GigabitEthernet 0/0/2

[FW1-GigabitEthernet 0/0/2] Ip address 1.1.1.1 24

[FW1-GigabitEthernet 0/0/2] quit

[FW1] firewall zone dmz

[FW1-zone-dmz] add interface GigabitEthernet 0/0/2

[FW1-zone-dmz] quit

[FW1] hrp interface GigabitEthernet0/0/2 #将GE0/0/2口配置为HRP心跳接口

[FW1] hrp enable #启用HRP备份功能,启用之后就会协商主备,主设备显示HRP_M,备设备显示HRP_S。两端首次协商出主备后,主用设备将向备用设备备份配置和连接状态等信息


FW2的配置增加如下:

[FW2] Interface GigabitEthernet 0/0/2

[FW2-GigabitEthernet 0/0/2] Ip address 1.1.1.2 24

[FW2-GigabitEthernet 0/0/2] quit

[FW2] firewall zone dmz

[FW2-zone-dmz] add interface GigabitEthernet 0/0/2

[FW2-zone-dmz] quit

[FW2] hrp interface GigabitEthernet0/0/2 #将GE0/0/2口配置为HRP心跳接口

[FW2] hrp enable #启用HRP备份功能,启用之后就会协商主备,主设备显示HRP_M,备设备显示HRP_S。两端首次协商出主备后,主用设备将向备用设备备份配置和连接状态等信息

完成上述配置后,FW1及FW2就会进行主备的协商。

由于我们在FW1上的VRRP组3及组4的配置中,都加入了Master的VGMP组,而在FW2上加入的是Slave的VGMP组,因此在激活HRP后,FW1成为HRP的Master,FW2成为Slave。VGMP会监控并同一管理VRRP的状态,HRP会在心跳线上同步两台防火墙的会话表、配置等信息。

当网络正常的时候,数据流是这么走的:

huawei实战2 VRRP+HRP

当FW1-SW1之间的链路发生故障时:

huawei实战2 VRRP+HRP

由VRRP组3发生了状态切换,VRRP切换将触发VGMP管理组的状态发生切换,FW2变成了VGMP Master,而FW1变成了VGMP Slave,而我们知道VRRP组的状态是由VGMP统一管理的,因此在FW2上,接口GE0/0/1成为了组3的 master,同时,接口GE0/0/3成为了组4的master。如此一来VRRP组的状态就达成了一致,数据的往返路径也就一致了。


分享到:


相關文章: