一、Failover概述

Failover由两台ASA组成不间断安全防护的架构。Active负责创建状态表和转换表、传输数据、监控Standby,Active和Standby采用专用网络连接(Failover控制链路/LAN Link),向其发送故障倒换相关消息。如果Active发生故障,Standby会接管Active原有的IP和MAC,并转发数据。故障恢复后原Standby会重新成为Standby。

二、Failover原理

1、Failover角色&状态

Failover提供的是设备级冗余。前面提到Failover由两台ASA构成一组。Failover组将会存在角色和状态:

  • 物理角色:人为规定某台SN的ASA为Primary,另一台为Secondary。物理角色不会因为故障切换而发生切换。

  • 主备状态:主备状态则是随着故障切换而切换,例如Active故障切换后成为Standby,Standby故障切换后成为Active。当首次配置设备为Primary时,Failover构建后将会作为主墙,状态Active,Secondary为备墙,状态为Standby。

2、Failover链路

Failover链路分为故障倒换链路 LAN Link状态化同步链路 State Link。LAN Link用于Failover的建立以及维持、配置同步、链路状态、故障倒换后的MAC交换。State Link用于执行状态化表项同步,以确保主备切换后状态化表项无需重新建立,应用已有的连接不会中断。针对Failover链路的一个建议:LAN Link和State Link建议采用不同的物理链路,以避免影响State Link的延迟

  • LAN Link用于交换主备角色信息、网络链路状态、Hello、Keepalive、交换MAC地址、配置文件同步。

  • 状态化表项包括TCP连接、UDP连接、IKE/IPsec SA、ARP表、透明模式二层表、SSL VPN会话、Xlate、SIP Session等。

Failover链路的主备IP配置位于failover配置下,而非接口配置中。业务链路的主备IP则位于对应接口下。同时Failover链路接口配置下无需设置Nameif,业务链路则相反。初始化配置时,仅需要配置Secondary设备中有关LAN Link的配置即可,其他配置在使能failover后全部自动同步。

3、Failover配置

Failover基础配置包括主备设备角色指定、LAN Link接口指定、State Link接口指定、LAN Link主备IP配置、State Link主备IP配置。

1)主设备配置

SL-ASA-01(config)# show run failover
failover lan unit primary
failover lan interface LAN GigabitEthernet0/7
failover link STATE GigabitEthernet0/8
failover interface ip LAN 1.1.1.1 255.255.255.252 standby 1.1.1.2
failover interface ip STATE 2.2.2.1 255.255.255.252 standby 2.2.2.2

2)备设备配置

SL-ASA-02(config)# show run failover
failover lan unit secondary
failover lan interface LAN GigabitEthernet0/7
failover link STATE GigabitEthernet0/8
failover interface ip LAN 1.1.1.1 255.255.255.252 standby 1.1.1.2
failover interface ip STATE 2.2.2.1 255.255.255.252 standby 2.2.2.2

主备设备开启failover,等待主备配置同步完成:

SL-ASA-01(config)#failover
SL-ASA-02(config)#failover

3)接口监控

SL-ASA-01(config)#monitor-interface inside
SL-ASA-01(config)#monitor-interface outside
SL-ASA-01(config)#no monitor-interface MGMT

无论是Failover A/S还是Failover A/A,只要接口配置了nameif和IP地址,ASA就会监控所有主要物理接口的状态。如果不希望监控某个特定接口,例如测试接口则可以通过no monitor-interface命令将其禁用。

默认情况下物理接口禁用接口监控的话,所有子接口的监控也会被禁用,除非启用了对该子接口的监控。对于Port-channel,除非成员接口全部shutdown,否则不会触发故障倒换。

4)检查failover状态

当备机状态频繁出现Failed配置同步出错时,即使关闭failover重新打开failover也无法恢复,则建议重启备机。

通过show failover可以查看详细的主备状态。包括failover使能状态、failover主备角色、LAN链路工作状态、本机状态、对等体状态、本机以及对等体的接口监控状态。

通过show failover interface查看failover链路IP地址。

通过主机查询备机的状态,相关命令为failover exec { mate | standby } LINE。

通过failover reload-standby重启备机。

5)优化配置

提示词

提示词开启后格式为:设备名/角色/主备状态

SL-ASA-01(config)# prompt hostname priority state
SL-ASA-01/pri/act(config)#

failover A/S状态正常后,Primary和Secondary的Hostname变为Primary’s Hostname,同时Primary上做的任何操作都会被同步至Secondary。通过prompt hostname priority state命令自动更改为便于区分的主机名。

HTTP连接

默认状态化故障倒换不会复制HTTP连接,因为HTTP连接的生存时间比较短。如果HTTP流量显著大于其他流量,复制HTTP连接会大大增加设备的负载。如果希望将HTTP连接复制给Standby设备,需要配置failover replication http

故障倒换日志记录

推荐将故障倒换的日志记录到内部缓冲区/日志服务器中,这样可以避免Console会话被过多消息淹没。

logging enable
logging list fo_logging level debugging class ha
logging buffer-size 20000
logging buffered fo_logging
logging class ha bufferd debugging
show logging

4、Failover故障倒换

Failover具备手动切换和自动切换两种故障倒换方式。

1)手动故障倒换

手动故障倒换是指通过命令直接切换两台防火墙的主备状态。通过在备机上输入failover active以进行手动故障倒换。

SL-ASA-01/pri/act# Switching to Standby
…

SL-ASA-01/sec/stby# Switching to Active
…

通过show int ip b查看IP地址进行了切换,Secondary接管所有Active设备的IP地址,包括管理地址。实际上MAC地址也进行了切换。

2)自动故障倒换

自动故障倒换是指当监控的业务接口状态发生变化时自动切换两台防火墙的主备状态,全程无需人工干预。自动切换需要依赖两个条件:LAN LinkMonitor-interface。可能存在的故障场景:

故障场景一:Active设备宕机

Standby在LAN Link上超时3个hello数据包的时间仍然没有收到hello,此时会向其他数据传输接口发送测试数据包,如果仍然没有响应则认为Active故障,并开始接管流量。

故障场景二:LAN Link故障

通过向其他数据传输接口发送测试数据包判断Active LAN Link是否也Admin down。

  • Admin down:不触发故障倒换,LAN Link标记Failed。

  • Non-admin down:触发故障倒换。

故障场景三:业务接口故障

执行一系列接口测试。

  • 链路up/down测试:通过链路up/down判断NIC状态;

    • 测试为down则标记Failed,并开始故障倒换。

    • 测试为up,则下一轮测试。

  • 网络活跃测试:5s内等待接收各类数据包;

    • 测试收到了数据包,则停止测试,将接口标记为正常。

    • 测试没有收到数据包,则下一轮测试。

  • ARP测试:测试ARP表中最后10个MAC,发送ARP请求,每次发送一条,等待5s超时。

    • 测试收到了数据包,则停止测试,将接口标记为正常。

    • 测试直到最后一个MAC,ARP请求超时后仍然没有收到响应,则进入下一轮测试。

  • Ping测试:测试发送广播ping请求,5s超时。

    • 测试收到了任何数据包,将接口标记为正常。

    • 测试没有收到任何数据包,开始故障倒换。

检测到故障并启动故障倒换后的切换过程。Primary的状态从Active转换为Standby,相反Secondary的状态从Standby转换为Active。Secondary接收Primary所有接口的MAC和IP(包括管理IP),并向网络发送免费ARP(源目IP为主用IP地址;目的MAC为ffff.ffff.ffff),所处以太网的所有设备都会处理该数据帧,交换机会更新自己的CAM表

  

通常防火墙监控接口出现故障、整机故障或升级时才会自动执行故障倒换。故障倒换通常会丢包1~3个左右。以下是故障倒换时ASA产生的日志:

SL-ASA-01/pri/act#
%ASA-1-105007: (Primary) Link status 'Down' on interface Outside
        Switching to Standby
SL-ASA-01/pri/act#
%ASA-1-104002: (Primary) Switching to STANDBY - Interface check

SL-ASA-01/pri/act# show failover state

               State          Last Failure Reason      Date/Time
This host  -   Primary
               Failed         Ifc Failure              07:58:01 UTC Dec 3 2023
                              Outside: No Link
Other host -   Secondary
               Active         None

====Configuration State===
        Sync Done
====Communication State===
        Mac set

SL-ASA-01/sec/act#
Switching to Active
SL-ASA-01/sec/act# 
%ASA-1-104001: (Secondary) Switching to ACTIVE - Other unit wants me Active. Primary unit switch reason: Interface check.

SL-ASA-01/sec/act# show failover state

               State          Last Failure Reason      Date/Time
This host  -   Secondary
               Active         None
Other host -   Primary
               Failed         Ifc Failure              07:58:00 UTC Dec 3 2023
                              Outside: No Link

====Configuration State===
        Sync Done - STANDBY
====Communication State===
        Mac set

当接口从故障中恢复后,ASA不会发生抢占行为。

SL-ASA-01/pri/stby# 
%ASA-1-105006: (Primary) Link status 'Up' on interface Outside
Primary: Switching to Ok for reason Interface check.
%ASA-1-104004: (Primary) Switching to OK.

SL-ASA-01/pri/stby# 
%ASA-1-105003: (Primary) Monitoring on interface Outside waiting

SL-ASA-01/pri/stby#  show failover state
%ASA-1-105004: (Primary) Monitoring on interface Outside normal

               State          Last Failure Reason      Date/Time
This host  -   Primary
               Standby Ready  Ifc Failure              07:58:01 UTC Dec 3 2023
Other host -   Secondary
               Active         None

====Configuration State===
        Sync Done
====Communication State===
        Mac set

至此,Failover A/S常用的所有操作完结。

参考:

https://www.cisco.com/c/en/us/td/docs/security/asa/asa917/configuration/general/asa-917-general-config/ha-failover.html