Cisco 防火墙Firwall Failover ActiveActive 双HSRP 实现双ISP完美切换

简介

failover Active/Active是与context结合,实现一个context出现了故障,自动切换到另外一个,实现流量不间断转发,当然不间断是需要合理的配置holdtime时间的,默认情况下 可能会需要45s的切换时间来完成。

image001.png

第一个拓扑是failover Active/Active的,只能实现FW出现了故障才会切换,而SP出现了故障缺不能实现切换,导致一部分内部网络无法上外网的问题。
基于第一个拓扑的原因,第二个拓扑Cisco-SP1和Cisco-SP2多加入了一条线路,来完成双HSRP的工作,这样能解决无论是FW还是边界路由器故障,都能实现完美的切换。
如果是第一次做这个模型,强烈建议做第一个没有HSRP的,不然你很容易奔溃的。

image002.jpg

这个拓扑是实际拓扑,全部的接口都连接在一个交换机上,其实对于这个模型,最难点不是配置,而是交换机VLAN的划分,和firewall接口的划分,这是比较麻烦的。 关于接口的划分,在做这个模型实验的时候,连接一个接口 就记下来,不然后面全部搞混淆了。

基本VLAN划分

这里trunk是因为FW的接口要起子接口,所以与firewall 之间起trunk 来解决问题。

Cisco-SW(config)#vlan 2
Cisco-SW(config-vlan)#name HSRP_1
Cisco-SW(config-vlan)#vlan 3
Cisco-SW(config-vlan)#name HSRP_2
VLAN2作为Cisco-SP1的使用,包括HSRP协商的接口和firewall的接口
VLAN3作为Cisco-SP2的使用,包括HSRP协商的接口和firewall的接口

Cisco-SW(config-vlan)#vlan 4
Cisco-SW(config-vlan)#name A/A
单独划分一个VLAN,作为failover的协商和statefull的复制。

Cisco-SW(config)#vlan 5
Cisco-SW(config-vlan)#name Cisco-Inside.1
Cisco-SW(config-vlan)#vlan 6
Cisco-SW(config-vlan)#name Cisco-Inside.2
VLAN5和VLAN6是Cisco-Inside.1和Cisco-Inside.2分别划分。

Cisco-SW(config-vlan)#int range f1/6 -7 , f1/8 -9
Cisco-SW(config-if-range)#Cisco-SWitchport mode trunk
起trunk,是因为在实际中可能接口不是那么多,所以这里我用子接口作为配置,虽然配置繁琐了点,但是对于自己的思路,跟方案也算一种提升咯。

Cisco-SW(config)#int range f1/0 – 1
Cisco-SW(config-if-range)#Cisco-SWitchport mode access
Cisco-SW(config-if-range)#Cisco-SWitchoport access vlan 2

Cisco-SW(config)#int range f1/2 – 3
Cisco-SW(config-if-range)#Cisco-SWitchport mode access
Cisco-SW(config-if-range)#Cisco-SWitchport access vlan 3

Cisco-SW(config-if-range)#
Cisco-SW(config-if-range)#int range f1/4 -5
Cisco-SW(config-if-range)#Cisco-SWitchport mode access
Cisco-SW(config-if-range)#Cisco-SWitchport access vlan 4

Cisco-SW(config)#int f1/10
Cisco-SW(config-if)#Cisco-SWitchport mode access
Cisco-SW(config-if)#Cisco-SWitchport access vlan 5

Cisco-SW(config-if)#int f1/11
Cisco-SW(config-if)#Cisco-SWitchport mode access
Cisco-SW(config-if)#Cisco-SWitchport access vlan 6
这里把对应的VLAN划分不同的VLAN中,这张表就对应我图上的VLAN 信息。 这是在连接接口的时候 连接一个写上一个,不然后面就奔溃了。这里我用ASA做的,所以接口跟拓扑上有点点不同。

image003.jpg

在做firewall之前 把其他的基本配置先解决

Cisco-Inside.1
Cisco-Inside.1(config)#int f0/0
Cisco-Inside.1(config-if)#ip add 10.1.1.1 255.255.255.0
Cisco-Inside.1(config-if)#no shut
Cisco-Inside.1(config-if)#exit
Cisco-Inside.1(config)#ip route 0.0.0.0 0.0.0.0 10.1.1.254
把默认路由给做了,指向Cisco-primary的地址。下面两条路由是指向私网网段的,为了后续通信正常,先做了。这个是关键 容易被忽略

Cisco-Inside.2
Cisco-Inside.2(config)#int f0/0
Cisco-Inside.2(config-if)#ip add 20.1.1.1 255.255.255.0
Cisco-Inside.2(config-if)#no shutdown
Cisco-Inside.2(config-if)#ip route 0.0.0.0 0.0.0.0 20.1.1.254

internet
Cisco-Intnet(config)#int lo 0
Cisco-Intnet(config-if)#ip add 1.1.1.1 255.255.255.255
Cisco-Intnet(config)#int f0/0
Cisco-Intnet(config-if)#ip add 12.1.1.1 255.255.255.0
Cisco-Intnet(config-if)#int f0/1
Cisco-Intnet(config-if)#ip add 13.1.1.1 255.255.255.0
Cisco-Intnet(config)#line vty 0 4
Cisco-Intnet(config-line)#pasCisco-SWord cisco

Cisco-SP1
Cisco-SP1(config)#int f0/0
Cisco-SP1(config-if)#ip add 12.1.1.2 255.255.255.0
Cisco-SP1(config-if)#no shut

Cisco-SP1(config-if)#ip add 192.168.2.1 255.255.255.0
Cisco-SP1(config-if)#no shutdown

Cisco-SP1(config)#ip route 0.0.0.0 0.0.0.0 12.1.1.1

Cisco-SP1(config)#access-list 1 permit 10.1.1.0 0.0.0.255
Cisco-SP1(config)#access-list 1 permit 20.1.1.0 0.0.0.255

Cisco-SP1(config)#ip nat inside source list 1 interface f0/0 overload

Cisco-SP1(config)#int f0/0
Cisco-SP1(config-if)#ip nat outside

Cisco-SP1(config-if)#int range f0/1 , f1/0
Cisco-SP1(config-if-range)#ip nat inside
这里没有在access-list 中运行 192.168.1.0这网段,所以无法进行测试了。

Cisco-SP2(config)#int f0/1
Cisco-SP2(config-if)#ip add 13.1.1.2 255.255.255.0

Cisco-SP2(config-if)#int f0/0
Cisco-SP2(config-if)#ip add 192.168.1.2 255.255.255.0
Cisco-SP2(config-if)#no shut

Cisco-SP2(config-if)#int f1/0
Cisco-SP2(config-if)#ip add 192.168.2.2 255.255.255.0
Cisco-SP2(config-if)#no shutdown

Cisco-SP2(config)#access-list 1 permit 10.1.1.0 0.0.0.255
Cisco-SP2(config)#access-list 1 permit 20.1.1.0 0.0.0.255
Cisco-SP2(config)#ip nat inside source list 1 interface f0/1 overload

Cisco-SP2(config)#int f0/1
Cisco-SP2(config-if)#ip nat outside

Cisco-SP2(config-if)#int range f0/0 , f1/0
Cisco-SP2(config-if-range)#ip nat inside

Cisco-SP1(config)#ip route 10.1.1.0 255.255.255.0 192.168.1.3
Cisco-SP1(config)#ip route 20.1.1.0 255.255.255.0 192.168.2.3

Cisco-SP2(config)#ip route 10.1.1.0 255.255.255.0 192.168.1.3
Cisco-SP2(config)#ip route 20.1.1.0 255.255.255.0 192.168.2.3

HSRP_1的设置。
Cisco-SP1最为作为Cisco-SP1的Active,Cisco-SP2作为Standby
Cisco-SP1(config-if)#int f0/1
Cisco-SP1(config-if)#standby 1 ip 192.168.1.254
Cisco-SP1(config-if)#standby 1 priority 110
Cisco-SP1(config-if)#standby 1 preempt
Cisco-SP1(config-if)#standby 1 track f0/0 20

Cisco-SP2
Cisco-SP2(config)#int f0/0
Cisco-SP2(config-if)#standby 1 ip 192.168.1.254
Cisco-SP2(config-if)#standby 1 preempt
Cisco-SP2(config-if)#standby track f0/1

这样HSRP_1的Active为Cisco-SP1,Standby为Cisco-SP2,当Cisco-SP1的上行和下行链路出现故障,都会自动切换,因为track了上行链路。

HSRP_2的设置。
Cisco-SP2最为Active,Cisco-SP1作为Standby
Cisco-SP1(config-if)#int f1/0
Cisco-SP1(config-if)#standby 2 ip 192.168.2.254
Cisco-SP1(config-if)#standby 2 preempt
Cisco-SP1(config-if)#standby 2 track f0/0

Cisco-SP2(config-if)#int f1/0
Cisco-SP2(config-if)#standby 2 ip 192.168.2.254
Cisco-SP2(config-if)#standby 2 preempt
Cisco-SP2(config-if)#standby 2 priority 110
Cisco-SP2(config-if)#standby 2 track f0/1 20

HSRP_2的Active为Cisco-SP2,Standby为Cisco-SP1。都tackle了上行链路,能执行自动切换。

image004.jpg

这样 HSRP与基本路由器的配置完毕了。下面开始failover的配置,它还是简单点的,因为只需要配置一边,另外一边可以通过failover自动复制过去。

Cisco-primary(config)# mode multiple 第一件事,肯定是变成multiple mode了,然后重启

Cisco-primary(config-subif)# int e0/2
Cisco-primary(config-if)# no shutdown

Cisco-primary(config)# int e0/2.3
Cisco-primary(config-subif)# vlan 2
Cisco-primary(config-if)# int e0/2.4
Cisco-primary(config-subif)# vlan 3

Cisco-primary(config)# int e0/1
Cisco-primary(config-if)# no shutdown
Cisco-primary(config-if)# int e0/1.3
Cisco-primary(config-subif)# vlan 5
Cisco-primary(config-subif)# int e0/1.4
Cisco-primary(config-subif)# vlan 6

划分子接口,e0/2.3是作为连接Cisco-SP1的outside接口,e0/2.4作为Cisco-SP2的outside接口。e0/1.3作为Cisco-Inside.1的网关 e0/1.4作为Cisco-Inside.2的网关。

配置context

这里我是用ASA做的,所以就不需要用admin作为测试了,创建两个。

Cisco-primary(config)# context Cisco-SP1
Creating context ‘Cisco-SP1’… Done. (2)
Cisco-primary(config-ctx)# allocate-interface e0/2.3
Cisco-primary(config-ctx)# allocate-interface e0/1.3

Cisco-primary(config-ctx)# config-url flash:Cisco-SP1.cfg

Cisco-primary(config-ctx)# context Cisco-SP2
Creating context ‘Cisco-SP2’… Done. (3)
Cisco-primary(config-ctx)# allocate-interface e0/2.4
Cisco-primary(config-ctx)# allocate-interface e0/1.4

Cisco-primary(config-ctx)# config-url flash:Cisco-SP2.cfg

context创建完毕了,接口也划分进来了。开始配置context

FW:Cisco-SP1
Cisco-primary(config-ctx)# changeto context Cisco-SP1
Cisco-primary/Cisco-SP1(config)# int e0/2.3
Cisco-primary/Cisco-SP1(config-if)# nameif outside
INFO: Security level for “outside” set to 0 by default.
Cisco-primary/Cisco-SP1(config-if)# ip add 192.168.1.3 255.255.255.0 standby 192.168.1.4
Cisco-primary/Cisco-SP1(config-if)# route outside 0 0 192.168.1.254

image005.jpg

把默认路由设置为Cisco-SP1的VIP,然后测试能够通信。

Cisco-primary/Cisco-SP1(config)# int e0/1.3
Cisco-primary/Cisco-SP1(config-if)# nameif inside
INFO: Security level for “inside” set to 100 by default.
Cisco-primary/Cisco-SP1(config-if)# ip add 10.1.1.254 255.255.255.0 standby 10.1.1.253

image006.jpg

测试Cisco-Inside.1的连通性没问题。

FW:Cisco-SP2

Cisco-primary/Cisco-SP1(config-if)# changeto context Cisco-SP2
Cisco-primary/Cisco-SP2(config)# int e0/2.4
Cisco-primary/Cisco-SP2(config-if)# nameif outside
INFO: Security level for “outside” set to 0 by default.
Cisco-primary/Cisco-SP2(config-if)# ip add 192.168.2.3 255.255.255.0 standby 192.168.2.4
Cisco-primary/Cisco-SP2(config-if)# route outside 0 0 192.168.2.254

Cisco-primary/Cisco-SP2(config)# int e0/1.4
Cisco-primary/Cisco-SP2(config-if)# namei
Cisco-primary/Cisco-SP2(config-if)# nameif insiINFO: Security level for “inside” set to 100 by default.
Cisco-primary/Cisco-SP2(config-if)# ip add 20.1.1.254 255.255.255.0 standby 20.1.1.253

image007.jpg

关于context配置最重要的就是Standby的地址 别忘记配置了,剩下的就是failover了。

Failover

Cisco-primary这边。
Cisco-primary(config)# failover group 1
Cisco-primary(config-fover-group)# Cisco-primary

Cisco-primary(config)# failover group 2
Cisco-primary(config-fover-group)# secondary

在context中配置有点特别,需定义两个组,然后让这些context加入这个组中,规定谁是context,谁是secondary。也许会奇怪那到了Standby那边它怎么来区分,这个后面会提到。

Cisco-primary(config)# context Cisco-SP1
Cisco-primary(config-ctx)# join-failover-group 1
Cisco-primary(config-ctx)# context Cisco-SP2
Cisco-primary(config-ctx)# join-failover-group 2

Cisco-primary(config)# int e0/0 这里用e0/0来做failover的,只需要no shut
Cisco-primary(config-if)# no shutdown

Cisco-primary(config)# failover lan interface lan e0/0
Cisco-primary(config)# failover interface ip lan 30.1.1.1 255.255.255.0 standby 30.1.1.2
Cisco-primary(config)# failover lan unit Cisco-primary
Cisco-primary(config)# failover link lan 开启状态备份,这里与failover使用同一个接口
Cisco-primary(config)# failover
会发现这里没用 failover lan enable ,因为之前提到过 ASA只允许使用LAN-Based,所以不需要选择。我感觉failover lan unit Cisco-primary不需要申明,因为在group中已经申明了。但是测试结果必须Cisco-primary这边申明它是Cisco-primary才能进行failover

Standby这边就容易很多了,配置都是复制过来的,只需要配置failover。
standby(config)# int e0/0
standby(config-if)# no shutdown
standby(config)# failover lan interface lan e0/0
standby(config)# failover interface ip lan 30.1.1.1 255.255.255.0 standby 30.1.1.2
standby(config)# failover lan unit secondary
standby(config)# failover link lan
standby(config)# failover

image008.jpg

在开始复制Cisco-primary这一端的配置了。

image009.jpg

状态都已经过来了,但是会有几个小问题。会发现 group 1 和group 2都为active,这跟我们需求是不同的,肯定group2为standby。

image010.jpg

这里Cisco-SP2在主这一边,必须是Standby,而不是Active,需要改动下。把Active让过去。

Cisco-primary(config)# no failover active group 2 这个在Cisco-primary这边敲
或者在Standby这边敲 failover active group 2

image011.jpg

这下正常了,在这边group 1 为Active,group2为Standby, 在那一边的话,就是group1为Standby group 2为Active。

这里说一个问题,如果你的IP address是做了failover以后在配置的话,那么你的group1的配置是在Cisco-primary这边配置,group2就因该到Standby那边配置了,因为group2在Standby那边是Active状态,Standby的状态是不允许配置的。

1测试下telnet。

image012.jpg
image013.jpg
image014.jpg
image015.jpg

Cisco-SP1和Cisco-SP2都有转换项,开始测试下 HSRP Down的情况。

Cisco-SP1(config)#int f0/1
Cisco-SP1(config-if)#shutdown

image016.jpg

这样走Cisco-SP2了,测试下 firewll出现了故障,切换是否正常。

Cisco-SP1(config)#int f0/1
Cisco-SP1(config-if)#no shutdown

pixfirewall(config)# reload

image017.jpg
image018.jpg

Cisco-Inside.1的转换项还存在。 Cisco-Inside.2 telnet出去telnet 1.1.1.1也没问题。 实现了无论是双HSRP和 failover 故障都能自动切换。如果需要收敛时间快点,那就需要考虑到OSPF的收敛 HSRP 和failover的helodtime时间,合理的时间能让整个网络的性能更加收敛快速。
双HSRP 的模型 由于是第一次做,这次实验花了6个小时 才搞定,中间主要是接口太多,一下不清晰 就被绕进去了,排错就弄了好久。 不过最后总算是搞定了。 这里的双ISP肯定是根据内部用户来区分的,如果要做到电信走电信,网通走网通,这个估计要流量负载分担的设备才能做到,毕竟需要知道电信网通所有的网段才行。 如果是第一次做这个模型,强烈建议做第一个提供没有HSRP的,不然你很容易奔溃的。

如果大家有任何疑问或者文中有错误跟疏忽的地方,欢迎大家留言指出,博主看到后会第一时间修改,谢谢大家的支持,更多技术文章尽在网络之路Blog(其他平台同名),版权归网络之路Blog所有,原创不易,侵权必究,觉得有帮助的,关注、转发、点赞支持下!~。

猜你喜欢

转载自blog.csdn.net/weixin_46948473/article/details/114801012