Cisco防火墙Failover技术(思科防火墙触发failover)

网友投稿 577 2022-10-03


Cisco防火墙Failover技术(思科防火墙触发failover)

Failover介绍

Failover特性是Cisco安全产品高可用性的一个解决方案,目的是为了提供不间断的服务,当主设备down掉的时候,备用设备能够马上接管主设备的工作,进而保持通信的连通性

A/S_Failover技术

一对ASA能够配对成为一个A/S_Failover组,提供设备级冗余,设备的健康状况式通过LAN-F0接口来监控的

一个Failover组,存在两组角色:

1)关于Primary/Secondary一个物理设备被指定为primary设备一个物理设备被指定为secondary设备Primary和Secondary是物理概念,不会被切换2)关于Active/Standby一个物理设备被选择成为Active(转发流量)一个物理设备被选择成为Standby(热备用状态,等待)Active和Standby是逻辑概念,可以互相切换

A/A_Failover技术

安全设备可以成对搭配成A/A的F0来提供设备及冗余和负载分担,设备彼此互为备份也能同时转发流量。使用虚拟子防火墙,被归为两个F0组,​一个物理防火墙指挥再一个F0组中成为active​

Fai lover管理

Failover的部署方式

无状态化的FO

1)只提供硬件冗余2)当切换发生时,所有已经建立的状态话跟踪的连接都将被丢弃3)用户必须重新建立连接

状态化的F0

1)扩展了无状态化F0的功能2)提供了硬件和状态话装项的冗余3)故障切换期间,连接依旧保持4)用户没必要重新建立连接5)在两个设备之间需要一个状态化链路(是LAN・F0链路之外的另外一条链路)

Failover的接口类型

LAN FO接口

用来确定每一个单元的运行状态并复制和同步配置(心跳线)

Link F0接口 (状态化接口)

1)用于传递状态信息到Standby单元2)可以是一个独立的接口,或者和其他接口共享,包括F0接口(不推荐,最好是独立接口)3)可以考虑将两个功能置于一根线上,不推荐。

Failover的健康监控

1、单元健康监控

1)ASA通过监控F0链路来确认其他单元的健康状况2)设备通过F0接口来交换helo消息3)当收不到来自于Active设备的响应时,切换发生

2、接口健康监控

1)每一个网络接口都可以被监控2)设备通过监控接口交换helo消息3)当Active设备上一个被指定为监控的接口出现故障时,切换发生

FaiIover部署方针

部署FO时,考虑如下的部署方针:

1)可以使用密钥来保护F0通讯2)如果状态化链路和F0链路共享接口,需要使用一个可用的高速率的接口3)调整F0的各项参数来实现快速切换4)在active和standby设备上手动指定MAC地址,来阻止一些可能阻断网络流量的偶然事件5)在所有连接防火墙设备的交换机接口上,考虑配置端口快速(PortFast)

如果发现备用配置与主用有区分,可通过“write standby”命令,实现现有主用配置完全覆盖备用设备配置在有需求的情况下,可通过“logging standbyw命令同时输出备用设备日志信息,但这会同时输出两份日志备用设备永远不参与路由进程

Failover实验拓扑

Python脚本化,配置完毕后通过​show failove 、show failove statu​查看效果

#需要先配置SSH# ********************************************************************# Author: LinWeiWei# Date: 2022-03-06# Description: paramiko SSH module and provides Cisco ASA configuration services# ********************************************************************# The standard libraryimport paramikoimport time# Create input infodef input_select(): print("""------------Life is short,use python------------1、failove config 2、pass3、pass4、pass5、pass6、pass7、pass8、pass9、pass 10、quit """) temp = input('Hello world!Please enter 1-10 numbers choice effect : ') global guess guess = int(temp)# Create an SSH classclass MySSH(object): # Create an SSH info def __init__(self, ip, username, password): self._ip = ip self._username = username self._password = password # Create an SSH connection def connect(self): global ssh ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # Trusting SSH Connections ssh.connect(hostname=self._ip, port=22, username=self._username, password=self._password, timeout=3) print("Successful connection", self._ip) # Exective command def exec_command(object, cd1='', cd2='', cd3='', cd4='', cd5='', cd6='', cd7='', cd8='', cd9='', cd10='', cd11='', cd12='', cd13='', cd14='', cd15='', cd16='', cd17='', cd18='', cd19='', cd20='', cd21='', cd22='', cd23='', cd24='', cd25='', cd26='', cd27='', cd28='', cd29='', cd30='', cd31='', cd32='', cd33='', cd34='', cd35='', cd36='', cd37='', cd38='', cd39='', cd40='', cd41='', cd42='', cd43='', cd44='', cd45='', cd46='', cd47='', cd48='', cd49='', cd50='', cd51='', cd52='', cd53='', cd54='', cd55='', cd56='', cd57='', cd58='', cd59='', cd60=''): cli = ssh.invoke_shell() cli.send(cd1 + "\n") cli.send(cd2 + "\n") cli.send(cd3 + "\n") cli.send(cd1 + "\n") cli.send(cd2 + "\n") cli.send(cd3 + "\n") cli.send(cd4 + "\n") cli.send(cd5 + "\n") cli.send(cd6 + "\n") cli.send(cd7 + "\n") cli.send(cd8 + "\n") cli.send(cd9 + "\n") cli.send(cd10 + "\n") cli.send(cd11 + "\n") cli.send(cd12 + "\n") cli.send(cd13 + "\n") cli.send(cd14 + "\n") cli.send(cd15 + "\n") cli.send(cd16 + "\n") cli.send(cd17 + "\n") cli.send(cd18 + "\n") cli.send(cd19 + "\n") cli.send(cd20 + "\n") cli.send(cd21 + "\n") cli.send(cd22 + "\n") cli.send(cd23 + "\n") cli.send(cd24 + "\n") cli.send(cd25 + "\n") cli.send(cd26 + "\n") cli.send(cd27 + "\n") cli.send(cd28 + "\n") cli.send(cd29 + "\n") cli.send(cd30 + "\n") cli.send(cd31 + "\n") cli.send(cd32 + "\n") cli.send(cd33 + "\n") cli.send(cd34 + "\n") cli.send(cd35 + "\n") cli.send(cd36 + "\n") cli.send(cd37 + "\n") cli.send(cd38 + "\n") cli.send(cd39 + "\n") cli.send(cd40 + "\n") cli.send(cd41 + "\n") cli.send(cd42 + "\n") cli.send(cd43 + "\n") cli.send(cd44 + "\n") cli.send(cd45 + "\n") cli.send(cd46 + "\n") cli.send(cd47 + "\n") cli.send(cd48 + "\n") cli.send(cd49 + "\n") cli.send(cd50 + "\n") cli.send(cd51 + "\n") cli.send(cd52 + "\n") cli.send(cd53 + "\n") cli.send(cd54 + "\n") cli.send(cd55 + "\n") cli.send(cd56 + "\n") cli.send(cd57 + "\n") cli.send(cd58 + "\n") cli.send(cd59 + "\n") cli.send(cd60 + "\n") time.sleep(3) output = cli.recv(65535).decode('utf-8').replace('\r', '') print(output) ssh.close()# Modify configuration commands based on scenariosinput_select()a = MySSH(ip="10.88.1.26", username="admin", password="P@ssw0rd!@#")a.connect()a.exec_command() #键入代码#ASA1配置int g0/2no shutfai lan unit primaryfai lan int F0 g0/2fai link F0 g0/2fai int ip F0 5.2.9.1 255.255.255.0 s 5.2.9.2fa#ASA2配置int g0/2no shutfai lan unit secondaryfai lan int F0 g0/2fai link F0 g0/2fai int ip F0 5.2.9.1 255.255.255.0 s 5.2.9.2fashow failove


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:全球黑客卷入乌俄乱局!数字网络战的背后值得深思(为什么俄罗斯黑客)
下一篇:Day12基础不牢地动山摇
相关文章

 发表评论

暂时没有评论,来抢沙发吧~