【感谢波总投搞】
Failover Active/Acitive是ASA学习中不可绕过的环节,网络上现有的大量案例都是在路由模式下完成的,鲜有透明模式下的Failover Active/Acitve,所以在GNS3仿真器上,借助于asa8.02多模防火墙qemu镜像,完成了下面的实验。
一、拓扑
图-1 GNS3上的逻辑拓扑
其中上面交换机sw1和sw2中的接口及vlan关系如表-1所示,设备接口和IP地址如表-2所示,
表-1 vlan和接口关系
表-2 设备及IP地址配置
由于Failover配置中要用到虚拟防火墙的概念,所以必须在fw1和fw2上创建虚拟防火墙vfw1和vfw2,划分至各虚拟防火墙中的物理接口如表-3所示:
表-3 虚拟防火墙vfw1和vfw2的接口划分
由于透明模式的防火墙,必须在建立桥接关系的接口之间配置全局管理地址,防火墙才能正常工作,现划分全局管理地址如表-4所示:
表-4 虚拟防火墙及管理地址划分
由于Failover Active/Active运行时,各虚拟防火墙要通过Lan-Base和Stateful连线进行状态监控和状态化列表传递,故必须配置Lan-Base地址和Stateful地址,现划分如表-5所示:
表-5 Lan-Base和Stateful接口划分
二、配置过程
Failover配置时,划分为两个部分,即fw1配置和fw2配置,其中fw2配置很少,主要在fw1上配置。
1.物理防火墙fw1配置:
⑴开启物理接口:
此步特别重要,一定要将所有的物理接口开启,这里就不展示具体开启过程。
⑵配置FO和Stateful链路,用于Failover组互相监控
代码语言:javascript复制fw1(config)#failover lan unit primary //注意此外为primary
fw1(config)#failover lan interface FO Ethernet0/4
fw1(config)#failover link Stateful Ethernet0/5
fw1(config)#failover interface ip FO 10.10.30.1 255.255.255.0 standby 10.10.30.2
fw1(config)#failover interface ip Stateful 10.10.40.1 255.255.255.0 standby 10.10.40.2
⑶调整failover组监控时间
代码语言:javascript复制此步可做可不做,但建议做一下,便于后面测试看的效果更清
fw1(config)#failover polltime unit msec 200 holdtime msec 800
⑷配置failover组
代码语言:javascript复制Failover组中的primary是一个物理概念,不会因为网络的运行而发生变化。
fw1(config)#failover group 1
fw1(config-fover-group)#primary
fw1(config-fover-group)#preempt
fw1(config)#failover group 2
fw1(config-fover-group)#secondary
fw1(config-fover-group)#preempt
⑸配置管理虚拟墙admin
Admin防火墙用于对物理墙(包括所有虚拟墙)进行管理,必须提前配置,否则后面的虚拟墙无法配置。
代码语言:javascript复制fw1(config)#context admin
fw1(config-ctx)#config-url flash:/admin.cfg
⑹定义虚拟防火墙
定义虚拟防火墙时,包括分配接口、加入failover组等操作,必须在配置虚拟墙之间完成。
代码语言:javascript复制fw1(config)#context vfw1
fw1(config-ctx)#allocate-interface e0/0
fw1(config-ctx)#allocate-interface e0/1
fw1(config-ctx)#join-failover-group 1
fw1(config-ctx)#config-url flash:/vfw1.cfg
fw2(config)#context vfw1
fw2(config-ctx)#allocate-interface e0/2
fw2(config-ctx)#allocate-interface e0/3
fw2(config-ctx)#join-failover-group 2
fw2(config-ctx)#config-url flash:/vfw2.cfg
⑺配置虚拟防火墙
前面一步完成了对虚拟墙的定义,但并未配置虚拟墙的功能,这里完成配置。
①配置虚拟防火墙vfw1
代码语言:javascript复制fw1(config)#changeto context vfw1
vfw1(config-if)#interface e0/0
vfw1(config-if)#nameif outside
vfw1(config-if)#security-level 0
vfw1(config-if)#mac-address 1.a.1 standby 1.a.2 #可以不配,但建议配上,可避免意外问题。
vfw1(config-if)#interface e0/1
vfw1(config-if)#nameif inside
vfw1(config-if)#security-level 100
vfw1(config-if)#mac-address 1.b.1 standby 1.b.2 #可以不配,但建议配上,可避免意外问题。
vfw1(config)#ip address 10.10.10.100 255.255.255.0 standby 10.10.10.110
vfw1(config-if)#access-list OUT permit icmp any any echo-reply
vfw1(config-if)#access-list OUT permit icmp any any time-exceeded
vfw1(config-if)#access-list OUT permit icmp any any unreachable
vfw1(config-if)#access-group OUT in interface outside
vfw1(config-if)#policy-map global_policy
vfw1(config-pmap)#class inspection_default
vfw1(config-pmap-c)#inspect icmp
②配置虚拟防火墙vfw2
代码语言:javascript复制fw1(config)#changeto context vfw2
vfw2(config-if)#interface e0/2
vfw2(config-if)#nameif outside
vfw2(config-if)#security-level 0
vfw2(config-if)#mac-address 2.a.1 standby 2.a.2 #可以不配,但建议配上,可避免意外问题。
vfw2(config-if)#interface e0/3
vfw2(config-if)#nameif inside
vfw2(config-if)#security-level 100
vfw2(config-if)#mac-address 1.b.1 standby 1.b.2 #可以不配,但建议配上,可避免意外问题。
Vfw2(config)#ip address 10.10.20.100 255.255.255.0 standby 10.10.20.110
vfw2(config-if)#access-list OUT permit icmp any any echo-reply
vfw2(config-if)#access-list OUT permit icmp any any time-exceeded
vfw2(config-if)#access-list OUT permit icmp any any unreachable
vfw2(config-if)#access-group OUT in interface outside
vfw2(config-if)#policy-map global_policy
vfw2(config-pmap)#class inspection_default
vfw2(config-pmap-c)#inspect icmp
此时物理防火墙fw1配置完成,只剩下启动failover,但由于物理防火墙上的配置尚未进行,故暂时不启用。
⒉物理防火墙fw2配置:
⑴开启物理接口
此步物别重要,一定要将所有的物理接口开启,这里就不展示具体开启过程。
⑵配置FO和Stateful链路,用于Failover组互相监控
代码语言:javascript复制fw1(config)#failover lan unit secondary //注意此处为secondary
fw1(config)#failover lan interface FO Ethernet0/4
fw1(config)#failover link Stateful Ethernet0/5
fw1(config)#failover interface ip FO 10.10.30.1 255.255.255.0 standby 10.10.30.2
fw1(config)#failover interface ip Stateful 10.10.40.1 255.255.255.0 standby 10.10.40.2
由于物理防火墙会自动从failover lan 中的主设备自动传递配置,故仅只配上面两步即可,其它的不用去配置,不要画蛇添足。
⒊开启failover功能
⑴物理防火墙fw1上开启failover
代码语言:javascript复制fw1(config)#failover
⑵物理防火墙fw2上开启failover
代码语言:javascript复制fw2(config)#failover
4.修改提示符
由于failover active/active配置后,两台物理防火墙会自动同步配置,会导致物理防火墙fw2上的提示符和物理防火墙fw1是一模一样的,不便于查看,故必须在fw1上修改提示符。
代码语言:javascript复制fw1(config)#prompt hostname priority state
fw1/pri/stby(config)#
其中上面的hostname代表物理防火墙的名称,priority代表物理墙在failover组中是primary设备还是secondary设备,而state代表墙是active状态,还是standby状态,从上面的提示符中可看到此时,物理防火墙fw1此时primary设备,并处于stby状态。
三、查看和测试:
⒈初次启动后调整状态:
当在两台物理防火墙fw1和fw2上启动failover后,利用命令show failover看到的状态是不正常的,笔者曾在gns3上完成多次实现,都发现这个现象,还以为是没有配置成功,其实是初次启动后存在的问题,必须进行调整。
图-2 fw1上显示的failover组状态
在初次启动failover后,常常发现从物理防火墙fw1上看到的failover组状态,出现两个active,而正常时,常如图-2所示的一个active和一个standby状态,许多初学者会以为自己配置不正确引发的,处理方法是在物理防火墙fw1和fw2上保存配置,然后关闭并重启fw1和fw2,等再次启动后,常会正常,如果还不正常,则采用关闭监控链路的方法调整。
⒉正常状态下测试:
当fw1和fw2上的failover active/active配置成功后,无论是在fw1还是fw2上查看到的正常信息如图-3、图-4所示:
图-3 fw1上看到的正常的failover信息
图-4 fw2上看到的正常的failover信息
分别从PC10、PC20上通过无状态方式和有状态方式访问r1上的1.1.1.1/24,可看到正常的信息如图-5、图-6所示:
图-5 fw1上通过无状态和有状态方式访问r1
图-6 fw2上通过无状态和有状态方式访问r1
正常时PC10通过fw1上的vfw1访问r1,而PC20通过fw2上的vfw2访问r1。
⒊模拟上行链路故障的切换
在实际中,有可能sw1(e0/0)和vfw1(e0/0)之间的链路发生故障,而failover active/active会发生切换,并且PC10上的有状态连接不会中断,现人为关闭sw1上的接口e0/0,模拟链路故障的现象,特别注意,一定不能从fw1的e0/0上进行关闭。
图-7 人为关掉sw1上的e0/0
稍等一会,则fw1上的vfw1会发生切换,即fw1上的状态全为standby/standby,而fw2上的状态为active/active,
图-8 fw1上的failover状态
图-9 fw2上的failover状态
接着查看PC10上的状态化连接和无状态化连接的情况
图-10 PC10上出现的切换影响
可以看到PC10上的状态连接,根本不会出现断开的现象,而无状态连接,出现丢包5个,又自动连接,说明切换非常好,对客户来说,根本不会因为切换,导致状态化连接的断开,满足会话要求。
4.模拟上行链路故障排除的切换
可以开启sw1的e0/0接口,模拟vfw1和sw1之间的链路故障排除的现象,
图-11 sw1上排除故障,开启接口
接着查看fw1和fw2上的failover状态,
图-12 fw1上查看到的failover状态信息
图-13 fw2上看到的failover状态信息
可以看到,fw1处于active/standby状态,而fw2处于standby/active状态,即处于负载均衡的状态。
5.模拟下行链路故障的切换
在fw2上将sw2和vfw2之间的链路断开,即关闭fw2上的e1/3接口,查看failover的切换,
图-14 人为关闭sw2上的e1/3接口
查看fw1和fw2上的failover状态信息,
图-15 fw1上的failover信息
图-16 fw2上的failover信息
可以看到fw1处于active/active状态,而fw2处于standby/failed状态,即完成了自动切换。
接着查看PC20上的状态化连接和无状态化连接,
图-17 PC20上的状态化连接和无状态化连接
可以看到PC20上的状态化会话一直处于连接状态,满足了需要。
6.模拟下行链路故障恢复
打开sw2的e1/3接口,模拟故障排除,链路恢复,
图-18 sw2上打开e1/3接口
查看fw1和fw2上的failover状态信息,
图-19 fw1上的failover信息
图-20 fw2上的failover信息
可以看到此时fw1处于active/standby状态,而fw2处于standby/active状态,即failover状态切换正常。
最后强调一点,为什么采用asa8.02的qemu镜像来做该实验,由于asa8.02的镜像占用内存很小,仅需256mb,6个物理接口可以同时使用,启动快的优点,在物理机内存不是很充足的情况下,用来完成实验,是比较好的选择。