らくがきちょう

なんとなく

Cisco ASA の Failover 設定例と Tips

Cisco ASA の Failover 設定についてメモしておきます。OS は 9.4(2) で検証しました。

前提条件

2 台の Cisco ASA を Failover 構成とするには、以下の条件を満たしている必要があるそうです。

  1. ハードウェア要件
    1. 同じモデルであること (インターフェイス数/種類も全く同じであること)
    2. 同じ大きさの RAM が搭載されていること (Flash の容量が異なっているのは問題無し)
  2. ソフトウェア要件
    1. Routed または Transparent Mode で統一されていること
    2. Single または Multiple Mode で統一されていること

初期状態

初期状態での Failover 関連は以下の通りでした。

ciscoasa# show running-config all failover
no failover
failover lan unit secondary
failover polltime unit 1 holdtime 15
failover polltime interface 5 holdtime 25
failover interface-policy 1
no failover standby config-lock
failover replication rate 20000

状態は以下のように表示されます。有効化していないので「Failover Off」表示になっています。

ciscoasa# show failover
Failover Off
Failover unit Secondary
Failover LAN Interface: not Configured
Reconnect timeout 0:00:00
Unit Poll frequency 1 seconds, holdtime 15 seconds
Interface Poll frequency 5 seconds, holdtime 25 seconds
Interface Policy 1
Monitored Interfaces 0 of 114 maximum
MAC Address Move Notification Interval not set
ciscoasa# show failover state

               State          Last Failure Reason      Date/Time
This host  -   Secondary
               Disabled       None
Other host -   Primary
               Not Detected   None

====Configuration State===
====Communication State===

最小 Failover 設定

最小の Failover 設定は以下の通りです。Primary / Secondary 機の Gi0/0 同士を Failover Link として接続しています。

ASA-1

interface GigabitEthernet0/0
 no shutdown
!
failover
failover lan unit primary
failover lan interface FAILOVER GigabitEthernet0/0
failover interface ip FAILOVER 10.0.0.1 255.255.255.252 standby 10.0.0.2
!
prompt hostname state priority

ASA-2

interface GigabitEthernet0/0
 no shutdown
!
failover
failover lan unit secondary
failover lan interface FAILOVER GigabitEthernet0/0
failover interface ip FAILOVER 10.0.0.1 255.255.255.252 standby 10.0.0.2

最小 Failover 設定での状態確認

Primary / Secondary 機間で同期が開始されると以下のように表示されます。

ciscoasa/act/pri# .

	      No Active mate detected
Beginning configuration replication: Sending to mate.
End Configuration Replication to mate

同期中に状態確認すると、例えば以下のように Secondary 側の状態 (State) は「Sync Config」等の表示になります。

ciscoasa/act/pri# show failover state

               State          Last Failure Reason      Date/Time
This host  -   Primary
               Active         None
Other host -   Secondary
               Sync Config    None

====Configuration State===
	Sync Done
====Communication State===

同期が完了し、正常に Failover が構成されると以下のように表示されます。Primary 側は「Active」、Secondary 側は「Standby Ready」と表示されます。

ciscoasa/act/pri# show failover state

               State          Last Failure Reason      Date/Time
This host  -   Primary
               Active         None
Other host -   Secondary
               Standby Ready  None

====Configuration State===
	Sync Done
====Communication State===

Failover Link 冗長化構成

ASA-1

interface GigabitEthernet0/0
 channel-group 1 mode active
 no shutdown
!
interface GigabitEthernet0/1
 channel-group 1 mode active
 no shutdown
!
interface Port-channel1
!
failover
failover lan unit primary
failover lan interface FAILOVER Port-channel1
failover interface ip FAILOVER 10.0.0.1 255.255.255.252 standby 10.0.0.2
!
prompt hostname state priority

ASA-2

interface GigabitEthernet0/0
 channel-group 1 mode active
 no shutdown
!
interface GigabitEthernet0/1
 channel-group 1 mode active
 no shutdown
!
interface Port-channel1
!
failover
failover lan unit secondary
failover lan interface FAILOVER Port-channel1
failover interface ip FAILOVER 10.0.0.1 255.255.255.252 standby 10.0.0.2

Failover リンク冗長化構成での状態確認

最小 Failover 設定時と基本的には変わりません。唯一、Failover LAN Interface 設定が Port-Channel1 になっている部分だけ、異なります。

ciscoasa/act/pri# show failover
Failover On
Failover unit Primary
Failover LAN Interface: FAILOVER Port-channel1 (up)
Reconnect timeout 0:00:00
Unit Poll frequency 1 seconds, holdtime 15 seconds
Interface Poll frequency 5 seconds, holdtime 25 seconds
Interface Policy 1
Monitored Interfaces 0 of 114 maximum
MAC Address Move Notification Interval not set
Version: Ours 9.4(2), Mate 9.4(2)
Last Failover at: 06:33:18 UTC Apr 27 2016
	This host: Primary - Active
		Active time: 61 (sec)
		slot 0: ASA5515 hw/sw rev (1.0/9.4(2)) status (Up Sys)
		slot 1: SFR5515 hw/sw rev (N/A/5.3.1-152) status (Up/Up)
		  ASA FirePOWER, 5.3.1-152, Up
	Other host: Secondary - Standby Ready
		Active time: 0 (sec)
		slot 0: ASA5515 hw/sw rev (1.0/9.4(2)) status (Up Sys)
		slot 1: SFR5515 hw/sw rev (N/A/5.3.1-152) status (Up/Up)
		  ASA FirePOWER, 5.3.1-152, Up

Stateful Failover Logical Update Statistics
	Link : Unconfigured.
ciscoasa/act/pri# show failover state

               State          Last Failure Reason      Date/Time
This host  -   Primary
               Active         None
Other host -   Secondary
               Standby Ready  None

====Configuration State===
	Sync Done
====Communication State===

Stateful Failover Link 追加構成

Stateful Failover Link の設定を追加します。failover link の設定を追加するだけです。

ASA-1

interface GigabitEthernet0/0
 channel-group 1 mode active
 no shutdown
!
interface GigabitEthernet0/1
 channel-group 1 mode active
 no shutdown
!
interface Port-channel1
!
failover
failover lan unit primary
failover lan interface FAILOVER Port-channel1
failover link FAILOVER Port-channel1
failover interface ip FAILOVER 10.0.0.1 255.255.255.252 standby 10.0.0.2
!
prompt hostname state priority

ASA-2

interface GigabitEthernet0/0
 channel-group 1 mode active
 no shutdown
!
interface GigabitEthernet0/1
 channel-group 1 mode active
 no shutdown
!
interface Port-channel1
!
failover
failover lan unit secondary
failover lan interface FAILOVER Port-channel1
failover link FAILOVER Port-channel1
failover interface ip FAILOVER 10.0.0.1 255.255.255.252 standby 10.0.0.2

実際の設定例

サービス側インターフェイスの設定を含め、実際の設定例は以下の通りです。

interface GigabitEthernet0/0
 channel-group 1 mode active
 no shutdown
!
interface GigabitEthernet0/1
 channel-group 1 mode active
 no shutdown
!
interface GigabitEthernet0/2
 nameif outside
 security-level 0
 ip address 172.16.1.1 255.255.255.0 standby 172.16.1.2
 no shutdown
!
interface GigabitEthernet0/3
 nameif inside
 security-level 100
 ip address 172.17.1.1 255.255.255.0 standby 172.17.1.2
 no shutdown
!
interface Port-channel1
 description LAN/STATE Failover Interface
 lacp max-bundle 8
!
failover
failover lan unit primary
failover lan interface FAILOVER Port-channel1
failover polltime unit 1 holdtime 15
failover polltime interface 5 holdtime 25
failover interface-policy 1
no failover standby config-lock
failover replication rate 20000
failover link FAILOVER Port-channel1
failover interface ip FAILOVER 10.0.0.1 255.255.255.252 standby 10.0.0.2
monitor-interface outside
monitor-interface inside
no monitor-interface management
no monitor-interface service-module
!
prompt hostname state priority

Tips

手動で failover 実行するには

手動で failover を実行するには以下のコマンドを実行します。

コマンド 説明
failover active Standby 機を Active に昇格させる
no failover active Active 機を Standby に降格させる

例えば、Active 機で failover active を実行しても何も起こりません。最後に failover した原因は show failover state で確認出来るのですが、手動での failover は履歴が残らないようです??

ログインしていないの筐体でコマンドを実行するには

failover exec でログインしていない筐体でコマンドを実行させることが可能です。

コマンド 説明
failover exec active [COMMAND] Active 機でコマンドを実行する
failover exec standby [COMMAND] Standby 機でコマンドを実行する
failover exec mate [COMMAND] ログインしていない側の機器でコマンドを実行する

プロンプトに現在の状態 (Active/Standby) 等を表示するには

デフォルトのプロンプトではログインしている筐体が Active 機なのか、Standby 機なのかが分かりません。以下のコマンドを設定することでプロンプトに状態 (Active または Standby) や優先度 (Primary または Secondary) を表示することが出来ます。

prompt hostname state priority

プロンプトの表示例は以下の通りです。

状態 プロンプト表示
Active ciscoasa/act/pri#
Standby ciscoasa/stby/pri#

プロンプトには他にも以下等を設定することが出来ます。

ciscoasa(config)# prompt ?

configure mode commands/options:
  cluster-unit     Display the cluster unit name in the session prompt
  context          Display the context in the session prompt (multimode only)
  domain           Display the domain in the session prompt
  hostname         Display the hostname in the session prompt
  management-mode  Display management mode
  priority         Display the priority in the session prompt
  state            Display the traffic passing state in the session prompt

(必要が無い限り) management は監視しない

サービス側のインターフェイスが LinkDown した際は当然、Failover すべきです。しかし、管理用の management インターフェイスが LinkDown しただけで Failover が発生してしまうとサービストラフィックに影響が出る可能性があります。よって、特別な理由が無い限りは no monitor-interface management を設定し、management を監視しないようにします。management の LinkDown は Syslog や SNMP Trap で監視し、必要であれば手動で Failover させれば殆どのケースで十分かと思われます。

(必要が無い限り) サービスモジュールは監視しない

FirePower 等のサービスモジュールを利用していない場合は明示的に no monitor-interface service-module を設定し、サービスモジュールの監視を停止しておきます。利用していないサービスモジュールの不具合で failover が発生してサービストラフィックに影響が出てしまうのは好ましく有りません。

Multipule Context Mode では admin context で集中的に監視を行う

Multiple Context Mode で以下のようにインターフェイスを割り当てられ、monitor 設定された ASA があるとします (説明のし易さを優先していますので、下記設定が現実的か否かは考慮外です)。

Context Interface monitor 設定 SNMP 設定 Syslog 設定
system - - - -
admin Ma0/0 - - -
context-1 Gi0/1
context-2 Gi0/1
context-3 Gi0/2
context-4 Gi0/2
context-5 Gi0/3
context-6 Gi0/3

context-1 と 2、context-3 と 4、context-5 と 6 が各々同じインターフェイスを monitor しています。例えば Gi0/0 が LinkDown すれば context-1 の設定だけで検知出来るので、context-2 の monitor 設定は不要です。

また、SNMP や Syslog 等でアクセス出来るのは、その Context に割り当てられたインターフェイスのみです。例え admin context であってもインターフェイスが割り当てられていなければ SNMP や Syslog 経由で状態や値を取得することは出来ません。ですので、Context 毎に SNMP や Syslog 設定を行うと各 Context 毎に SNMP / Syslog の設定が必要になってしまいます。

これらの点を踏まえると、例えば以下のような設定方針も "アリ" だと思います。

この方針に従って設定例を表にすると以下のようになります。先の表より、かなり簡素化されました。

Context Interface monitor 設定 SNMP 設定 Syslog 設定
system - - - -
admin Ma0/0, Gi0/1, Gi0/2, Gi0/3
context-1 Gi0/1 - - -
context-2 Gi0/1 - - -
context-3 Gi0/2 - - -
context-4 Gi0/2 - - -
context-5 Gi0/3 - - -
context-6 Gi0/3 - - -

failover をデバッグする

failover のデバッグには debug fover 〜 を使います。