はじめに
この記事は、Cisco Systems Japan Advent Calendar 2025 シリーズ1 の 22日目として投稿しています。
https://qiita.com/advent-calendar/2025/cisco
シスコ社員っぽいものから全く関係ないもの、テッキーなものから何だそりゃおもしれぇじゃねぇかみたいなものまでみんな好きなように書いていて楽しいです。
私も毎年何か書いています。私にとっては、相変わらず Cisco Secure Firewall が生業であり生き甲斐であり相棒なので、今年も静かに地味に Firewall で遊んでみます。
Firewall Clustering とは
Firewall Clustering とは、すべての Firewall を Active 機として利用する構成方法を指します。昔からロードバランサーを利用して複数の Firewall へトラフィックを分散する手法があり、よく使われてきました。Public Cloud 環境でも、この方法による Firewall Clustering が実現されています。
Cisco Secure Firewall の場合、仮想アプライアンスはもちろん、物理アプライアンスのミッドレンジからハイエンド機種まで、ネイティブに Firewall Clustering をサポートしています。
専用のロードバランサーは不要です。Basic Firewall の ASA ソフトウェアでも、Next Generation Firewall の FTD ソフトウェアでも、どちらでも同じアーキテクチャで Firewall Clustering が可能です。
これにより、すべての Firewall を Active な状態で利用できます。サイジングに注意すれば、1台を残してすべての Firewall に障害が発生しても、Firewall システムとして動作を継続できます。
Active / Standby の HA 構成は非常によく利用されており、個人的にも Active / Standby 構成の方がシンプルで好みですが、「やはり All Active 構成が良い」という声も多く聞かれます。
この Firewall Clustering は、ASA ソフトウェア 9.0 で初めてリリースされた、かなり以前から存在する機能です。Active / Standby に比べると利用例は少ないため、この機会に本記事にて Cisco Secure Firewall 3110 を使った ASA と FTD の両方での Firewall Clustering の構築について紹介してみたいと思います。
なお、大昔からある VPN Load Balancing とは異なる機能です。
VPN Load Balancingについては、2018年の Advent Calendar で記事にしています。
https://qiita.com/tatskoba27/items/7133fd9957106e97db8b
Firewall Clusteringを「簡単に説明せよ!」と言われた場合
私は
「すべての Firewall を Active にして、通信が Firewall に届く方法はルータやスイッチに任せ、行きと帰りの通信が異なる Firewall に届いた場合は、Firewall 同士をつなぐ裏ネットワークを介して、行きの通信を処理した Firewall に実トラフィックを転送する機能」
と説明します。さらに「もっと簡単に!」と言われたら、
「All Active で Firewall を組み、通信が非対称になっても Firewall がなんとかする機能」
とざっくり説明しています。
2つの方法
物理アプライアンスでの Firewall Clustering の構成には、以下の2つの方法があります。
-- Spanned EtherChannel
-- Individual Interface
前者は、Firewall をまたいだ大きな EtherChannel(LAG)をスイッチと接続し、Firewall へのトラフィック転送は対向スイッチ側の EtherChannel のトラフィック分散アルゴリズムに任せる方法です。
後者は、各 Firewall に独立したインターフェースを持たせ、Firewall へのトラフィック転送 ECMP や PBR に任せる方法です。
本記事では、前者の Spanned EtherChannel 方式を使って構築していきます。
Firewall Clustering の動作仕組み
Firewall はセッションテーブルを保持し、戻りの通信を判断して通信を許可しています。そのため、行きと帰りの通信が異なる Firewall に向かうと、戻りの通信を受け取った Firewall は「セッションテーブルに存在しない通信」と判断して破棄してしまいます。
Cluster Control Link(CCL)は、Firewall 同士を繋ぐ「裏ネットワーク」です。Active / Standby の HA 構成時の Failover Link や Stateful Link に相当しますが、決定的な違いは、この CCL にはハートビート以外の実トラフィックも流れる可能性がある点です。
Firewall Clustering を構築すると、セッションを処理した Firewall の情報を各 Firewall 間で共有します。つまり、「セッションのオーナー」がどの Firewall かを各 Firewall が把握しています。この仕組みにより、戻りの通信を受け取った Firewall は、行きの通信を処理した Owner Firewall を特定し、CCL 経由で実トラフィックを Owner Firewall に転送します。これによって、行きと帰りの通信が同じ Firewall を通過することになり、すべての Firewall を Active として利用できるのです。
Firewall Clustering を作ってみた - ネットワーク図
前提として、この検証はあくまでも動作確認の最低限の構成であるということを宣言しておきます。
今回の構成は、
・1台の L2 Switch
・2台の Firewall
で検証しています。
しかしながら、2台の Firewall で Active / Active の構成を作っても、メリットはほぼ皆無です。Firewall 2台を使って、そのうち 1台の Firewall がダウンしても支障が無く稼動できるような構成であれば、シンプルに Active / Standby にすべきです。
また、 Switch 側も論理的に1台に見せるような冗長化を組むべきです。このままだと Switch に障害が発生したら全断です。
…という前提を踏まえた上で、こんな感じでネットワークを構成してみました。
まずは物理配線図です。
論理的にはこのような構成になります。Firewall は routed firewall としています。
この構成は ASA でも FTD でも変わりません。
正直なところ、このデザインを作って、実際に配線まで完了できたら、Firewall Clustering で必要な工程の半分は完成したと言っても過言ではありません。いや、さすがにそれは過言かもしれませんが、それでもこの構成を理解できることが非常に重要です。
Cluster に参加する Firewall の間では、Cluster Control Link (CCL) の IP アドレスや Control Node という Cluster 全体の親分となる機器選定のプライオリティ設定等の Cluster そのものを構成する設定以外はほぼ同期されます。
Firewall の Data Interface となる inside や outside という名前の interface は筐体を跨いだ EtherChannel に VLAN を付与した Sub Interface を利用しました。もちろん、inside や outside をそれぞれ別の EtherChannel の interface を利用することも可能です。
Firewall へのトラフィックの転送は、Switch 側の EtherChannel のパケット転送バランスアルゴリズムに従います。今回は Switch 側でこのバランスアルゴリズムを Source & Destination の IP Address とポート番号の組み合わせで決定するようにしました。Firewall で NAT を実施しなければ、行きと帰りのパケットは、これらの数値の組み合わせが同じになるので、Switch 側から行きと帰りのパケットが同じ Interface にパケットが転送されます。行きと帰りの通信が同じ Firewall に着信することになり、CCL を介したパケット転送が行われずに Firewall Cluster 全体の効率がよくなります。
Firewall Clustering を作ってみた - Switch の設定抜粋
Switch 側で必要な設定を抜粋します。
!
! 各 Interface を設定
!
interface Port-channel11
switchport trunk allowed vlan 381,385
switchport mode trunk
!
interface Port-channel21
switchport access vlan 383
switchport mode access
!
interface Port-channel22
switchport access vlan 383
switchport mode access
!
interface GigabitEthernet1/0/33
switchport trunk allowed vlan 381,385
switchport mode trunk
channel-group 11 mode active
!
interface GigabitEthernet1/0/34
switchport trunk allowed vlan 381,385
switchport mode trunk
channel-group 11 mode active
!
interface GigabitEthernet1/0/35
switchport trunk allowed vlan 381,385
switchport mode trunk
channel-group 11 mode active
!
interface GigabitEthernet1/0/36
switchport trunk allowed vlan 381,385
switchport mode trunk
channel-group 11 mode active
!
interface GigabitEthernet1/0/39
switchport access vlan 383
switchport mode access
channel-group 21 mode on
!
interface GigabitEthernet1/0/40
switchport access vlan 383
switchport mode access
channel-group 21 mode on
!
interface GigabitEthernet1/0/41
switchport access vlan 383
switchport mode access
channel-group 22 mode on
!
interface GigabitEthernet1/0/42
switchport access vlan 383
switchport mode access
channel-group 22 mode on
!
interface GigabitEthernet1/0/45
switchport access vlan 389
switchport mode access
!
interface GigabitEthernet1/0/46
switchport access vlan 389
switchport mode access
!
! EtherChannel のロードバランスアルゴリズムを Src/Dst の IP address & Port Number の組み合わせに設定
!
port-channel load-balance src-dst-mixed-ip-port
!
! Switch 全体の MTU を最大に設定
!
system mtu 9198
Configuration Guide では Data Interface 側の EtherChannel は LACP active が推奨され、CCL 側の EtherChannel は On でスタティックに Channel を組むことが推奨されているのでそのようにしました。
実際に稼働すると、EtherChannel の状況このようになります。
tky1-c10-c9200-02#show etherchannel summary
Flags: D - down P - bundled in port-channel
I - stand-alone s - suspended
H - Hot-standby (LACP only)
R - Layer3 S - Layer2
U - in use f - failed to allocate aggregator
M - not in use, minimum links not met
u - unsuitable for bundling
w - waiting to be aggregated
d - default port
A - formed by Auto LAG
Number of channel-groups in use: 3
Number of aggregators: 3
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
11 Po11(SU) LACP Gi1/0/33(D) Gi1/0/34(D)
Gi1/0/35(D) Gi1/0/36(D)
21 Po21(SU) - Gi1/0/39(D) Gi1/0/40(D)
22 Po22(SU) - Gi1/0/41(D) Gi1/0/42(D)
tky1-c10-c9200-02#show etherchannel load-balance
EtherChannel Load-Balancing Configuration:
src-dst-mixed-ip-port
EtherChannel Load-Balancing Addresses Used Per-Protocol:
Non-IP: Source XOR Destination MAC address
IPv4: Source XOR Destination IP address and TCP/UDP (layer-4) port number
IPv6: Source XOR Destination IP address and TCP/UDP (layer-4) port number
CCL には data interface に追加で 100bytes のヘッダがつくことがあります。なので、とりあえず Switch 側ではジャンボフレームに対応させておきます。本当は必要なところだけ対応させておけばいいのですが、今回は基本動作の検証ということで雑に system で対応させておきました。
tky1-c10-c9200-02#show system mtu
Global Ethernet MTU is 9198 bytes.
Firewall Clustering を作ってみた - ASA の設定抜粋
まずは Firewall を ASA software 9.22(2)20 で稼働させて検証してみます。
基本の設定は完了している前提で、大まかな手順は以下の通りです。
1 それぞれの ASA Firewall で設定
1-1) Cluster Interface Mode を Spanned-EtherChannel に指定
1-2) Cluster Control Link (CCL) を設定
2 Control Node となる予定の ASA Firewall で設定
2-1) それぞれの Firewall の Management Interface に配布する Pool Address を作成
2-2) Management Interface を設定
2-3) Data Interface となる EtherChannel Interface を設定
2-4) Cluster の設定
3 残りの ASA Firewall で設定
3-1) Management Interface と Data Interface を有効化
3-2) Cluster の設定
4 それぞれの ASA Firewall で設定
4-1) Cluster の有効化
5 Control Node となった ASA Firewall で設定
5-1) Cluster Health Check の有効化と CCL の MTU の変更
6 それぞれの ASA Firewall で確認
6-1) Cluster の状態を確認
各項目について説明していきます。
-
それぞれの ASA Firewall で設定
1-1) Cluster Interface Mode を Spanned-EtherChannel に指定
1-2) Cluster Control Link (CCL) を設定
csf3110-1/NoCluster(config)# cluster interface-mode spanned force
Cluster interface-mode: spanned
The requested mode is the SAME as the current mode.
csf3110-1/NoCluster(config)# interface e1/3
csf3110-1/NoCluster(config-if)# channel-group 21 mode on
INFO: security-level, delay, IP address, cts manual, bfd and fail-open configuration are cleared on Ethernet1/3.
csf3110-1/NoCluster(config-if)# no shut
csf3110-1/NoCluster(config-if)# interface e1/4
csf3110-1/NoCluster(config-if)# channel-group 21 mode on
INFO: security-level, delay, IP address, cts manual, bfd and fail-open configuration are cleared on Ethernet1/4.
csf3110-1/NoCluster(config-if)# no shut
この時点で CCL となるインターフェイスの Switch 側の EtherChannel のステータスが P (bundled in port-channel) になるはずです。
2 Control Node となる予定の ASA Firewall で設定
2-1) それぞれの Firewall の Management Interface に配布する Pool Address を作成
2-2) Management Interface を設定
csf3110-1/NoCluster(config)# ip local pool MANAGEMENT-POOL 192.168.254.31-192.168.254.35
csf3110-1/NoCluster(config)# int m1/1
csf3110-1/NoCluster(config-if)# no management-only
csf3110-1/NoCluster(config-if)# management-only individual
csf3110-1/NoCluster(config-if)# nameif mgmt
csf3110-1/NoCluster(config-if)# security-level 100
csf3110-1/NoCluster(config-if)# ip address 192.168.254.30 255.255.255.0 cluster-pool MANAGEMENT-POOL
csf3110-1/NoCluster(config-if)# no shut
Control Node となる Management Interface に 192.168.254.30 が割り当てられ、各 Firewall (Control Node 自身を含む) の Management interface に 192.168.254.31-192.168.254.35 が割り当てられるように設定します。
Management Interface には management-only individual を設定する必要があります。
2-3) Data Interface となる EtherChannel Interface を設定
csf3110-1/NoCluster(config-if)# int e1/1
csf3110-1/NoCluster(config-if)# channel-group 11 mode active
INFO: security-level, delay, IP address, cts manual, bfd and fail-open configuration are cleared on Ethernet1/1.
csf3110-1/NoCluster(config-if)# no shut
csf3110-1/NoCluster(config-if)# int e1/2
csf3110-1/NoCluster(config-if)# channel-group 11 mode active
INFO: security-level, delay, IP address, cts manual, bfd and fail-open configuration are cleared on Ethernet1/2.
csf3110-1/NoCluster(config-if)# no shut
csf3110-1/NoCluster(config-if)# int po11.381
csf3110-1/NoCluster(config-subif)# vlan 381
csf3110-1/NoCluster(config-subif)# nameif outside
INFO: Security level for "outside" set to 0 by default.
csf3110-1/NoCluster(config-subif)# ip address 192.168.10.31 255.255.255.0
csf3110-1/NoCluster(config-subif)# mac-address aaaa.bbbb.381a
csf3110-1/NoCluster(config-subif)# int po11.385
csf3110-1/NoCluster(config-subif)# vlan 385
csf3110-1/NoCluster(config-subif)# nameif inside
INFO: Security level for "inside" set to 100 by default.
csf3110-1/NoCluster(config-subif)# ip address 192.168.150.31 255.255.255.0
csf3110-1/NoCluster(config-subif)# mac-address aaaa.bbbb.385a
ここは通常の Data Interface を Sub Interface で使う設定です。この時点で Data Interface が接続される Switch 側の EtherChannel のステータスも P になるはずです。仮想 Mac Address を設定すると、Control Node 切り替わりの際のバタつきを抑えることができます。
2-4) Cluster の設定
ここからがいよいよ Cluster そのものの設定です。
##Firewall Cluster Group の名前、これを設定すると対向の Switch が一度 EtherChannel の status が down になる
csf3110-1/NoCluster(config)# cluster group ASA-CLUSTER-1
##この Cluster Group に参加する key
csf3110-1(cfg-cluster)# key cluster-cisco-123
##この Firewall の単体のノード名
csf3110-1(cfg-cluster)# local-unit Node-1
##CCL の IP address
csf3110-1/Node-1(cfg-cluster)# cluster-interface port-channel 21 ip 192.168.253.31 255.255.255.0
INFO: Non-cluster interface config is cleared on Port-channel21
##この Firewall が Control Node になる優先度, 1 が最優先
csf3110-1/Node-1(cfg-cluster)# priority 1
##一時的に Cluster 間のヘルスチェックを無効化
csf3110-1/Node-1(cfg-cluster)# no health-check
WARNING: Cluster health monitoring is disabled. Unnecessary traffic loss may occur due to the delayed cluster member failure detection
3 残りの ASA Firewall で設定
3-1) Management Interface と Data Interface を有効化
3-2) Cluster の設定
もう1台の ASA Firewall まずは各 Interface を no shut して、かつ、必要な EtherChannel の設定を行います。その後、Cluster を設定します。この Firewall では Priority は 2、Local Unit は Node-2 とします。
csf3110-2/NoCluster(config-if)# int m1/1
csf3110-2/NoCluster(config-if)# no shut
csf3110-2/NoCluster(config-if)# int e1/1
csf3110-2/NoCluster(config-if)# channel-group 11 mode active
INFO: security-level, delay, IP address, cts manual, bfd and fail-open configuration are cleared on Ethernet1/1.
csf3110-2/NoCluster(config-if)# no shut
csf3110-2/NoCluster(config-if)# int e1/2
csf3110-2/NoCluster(config-if)# channel-group 11 mode active
INFO: security-level, delay, IP address, cts manual, bfd and fail-open configuration are cleared on Ethernet1/2.
csf3110-2/NoCluster(config-if)# no shut
csf3110-2/NoCluster(config-if)# cluster group ASA-CLUSTER-1
csf3110-2(cfg-cluster)# key cluster-cisco-123
csf3110-2(cfg-cluster)# local-unit Node-2
csf3110-2/Node-2(cfg-cluster)# cluster-interface port-channel 21 ip 192.168.253.32 255.255.255.0
INFO: Non-cluster interface config is cleared on Port-channel21
csf3110-2/Node-2(cfg-cluster)# priority 2
csf3110-2/Node-2(cfg-cluster)# no health-check
WARNING: Cluster health monitoring is disabled. Unnecessary traffic loss may occur due to the delayed cluster member failure detection
4 それぞれの ASA Firewall で設定
4-1) Cluster の有効化
いよいよ Cluster を有効化します。
ほぼ同時に cluster 設定内で enable とコマンドを打ち込むと、ここまでの設定が正しければ、不要な設定が消されて Firewall Cluster Group が構築され、Priority の高い Firewall が Control Node となり、その他の Firewall が Data Node となります。
FW-1
csf3110-1/Node-1(cfg-cluster)# enable
csf3110-1/Node-1(cfg-cluster)#
INFO: Clustering is not compatible with following commands:
policy-map global_policy
class inspection_default
inspect h323 h225
policy-map global_policy
class inspection_default
inspect h323 ras
policy-map global_policy
class inspection_default
inspect rtsp
policy-map global_policy
class inspection_default
inspect skinny
INFO: Removing incompatible commands from running configuration...
Cryptochecksum (changed): 2d398e64 0fd95536 c3d19b49 c92150a0
INFO: Done
WARNING: dynamic routing is not supported on management interface when cluster interface-mode is 'spanned'. If dynamic routing is configured on any management interface, please remove it.
Cluster unit Node-1 transitioned from DISABLED to CONTROL_NODE
Beginning configuration replication to Data Node Node-2
End Configuration Replication to data node.
csf3110-1/Node-1(cfg-cluster)#
FW-2
csf3110-2/Node-2(cfg-cluster)# enable
csf3110-2/Node-2(cfg-cluster)#
INFO: Clustering is not compatible with following commands:
policy-map global_policy
class inspection_default
inspect h323 h225
policy-map global_policy
class inspection_default
inspect h323 ras
policy-map global_policy
class inspection_default
inspect rtsp
policy-map global_policy
class inspection_default
inspect skinny
INFO: Removing incompatible commands from running configuration...
Cryptochecksum (changed): 2d398e64 0fd95536 c3d19b49 c92150a0
INFO: Done
Unable to cache per-unit entitlements in clustering configuration.
Removed all entitlements except per-unit entitlement configuration before joining cluster as data node.
Detected Cluster Control Node.
Beginning configuration replication from Control Node.
WARNING: Disabling auto import may affect Smart Licensing
livecore enabled
.WARNING: Cluster health monitoring is disabled. Unnecessary traffic loss may occur due to the delayed cluster member failure detection
*** Output from config line 153, " no health-check"
..... flow-offload is already disabled.
*** Output from config line 337, "no flow-offload enable"
Cryptochecksum (changed): a98b5a70 bf31063a 028e0a32 1ba7ca7c
End configuration replication from Control Node.
Data node unit attempting to release all its entitlements. Per-unit entitlements will not be released.
All entitlements acquired by the DATA NODE are released. Caching entitlement configuration.
Unable to cache per-unit entitlements in clustering configuration.
Cluster unit Node-2 transitioned from DISABLED to DATA_NODE
csf3110-1/Node-2(cfg-cluster)#
この構成では prompt を hostname と cluster-unit を出力するようにしていました。Cluster が有効になったあと、FW-2 側でも hostname が csf3110-1 に変わったこと、どちらの Firewall も Local Unit 名が prompt に表示されるようになったことに注目してください。
5 Control Node となった ASA Firewall で設定
5-1) Cluster Health Check の有効化と CCL の MTU の変更
csf3110-1/Node-1(cfg-cluster)# health-check holdtime 5
csf3110-1/Node-1(cfg-cluster)# mtu cluster 9128
任意のホールドタイムを指定してヘルスチェックを有効にします。CCL では Data Interface に追加ヘッダが入ることがあるので、CCL の MTU を変更します。ここでは雑に最大にします。Cluster が有効になっている Firewall の間では設定が同期されます。
6 それぞれの ASA Firewall で確認
6-1) Cluster の状態を確認
FW-1
csf3110-1/Node-1(cfg-cluster)# show cluster info
Cluster ASA-CLUSTER-1: On
Interface mode: spanned
Cluster Member Limit : 16
This is "Node-1" in state CONTROL_NODE
ID : 0
Version : 9.22(2)20
Serial No.: FJZ26381HBC
CCL IP : 192.168.253.31
CCL MAC : 8027.6c5b.8f40
Last join : 05:42:23 UTC Dec 14 2025
Last leave: N/A
Other members in the cluster:
Unit "Node-2" in state DATA_NODE
ID : 1
Version : 9.22(2)20
Serial No.: FJZ28190UWB
CCL IP : 192.168.253.32
CCL MAC : ec19.2e9b.3f40
Last join : 05:42:25 UTC Dec 14 2025
Last leave: N/A
csf3110-1/Node-1(cfg-cluster)#
FW-2
csf3110-1/Node-2(cfg-cluster)# show cluster info
Cluster ASA-CLUSTER-1: On
Interface mode: spanned
Cluster Member Limit : 16
This is "Node-2" in state DATA_NODE
ID : 1
Version : 9.22(2)20
Serial No.: FJZ28190UWB
CCL IP : 192.168.253.32
CCL MAC : ec19.2e9b.3f40
Last join : 05:42:25 UTC Dec 14 2025
Last leave: N/A
Other members in the cluster:
Unit "Node-1" in state CONTROL_NODE
ID : 0
Version : 9.22(2)20
Serial No.: FJZ26381HBC
CCL IP : 192.168.253.31
CCL MAC : 8027.6c5b.8f40
Last join : 05:42:23 UTC Dec 14 2025
Last leave: N/A
csf3110-1/Node-2(cfg-cluster)#
それぞれの Firewall で無事に Cluster が有効になり、FW-1 (Node-1) が Control Node で FW-2 (Node-2) が Data Node になっていることがわかります。
これで ASA Firewall Cluster が完成しました。
Firewall Clustering を作ってみた - ASA での動作確認
NAT や routing、ACL の設定を入れて (ここでは省略)、inside 側のホストから outside の先にあるノードへの通信を試してみましょう。無事に通信が確立するはずです。
ASDM で 192.168.254.30 にアクセスすると (この設定は省略)、Control Node に入れるはずです。Cluster の情報を見ることができます。
inside 側のホストからの通信を発生させたまま、テストとして、手っ取り早く FW-1 (Node-1, Control Node) を reload してみます。
inside 側からの通信は、自動的に復旧するはずです。
FW-1
csf3110-1/Node-1# reload
Proceed with reload? [confirm]
csf3110-1/Node-1#
***
*** --- START GRACEFUL SHUTDOWN ---
Shutting down Application Agent
Shutting down isakmp
Shutting down webvpn
Shutting down fover_reload
Shutting down Clustering Controller
Shutting down sw-module
Shutting down License Controller
Shutting down File system
***
*** --- SHUTDOWN NOW ---
Unit Node-1 is leaving the cluster due to a chassis health check failure
Process shutdown finished
Rebooting... (status 0x9)
..
(略)
FW-2
csf3110-1/Node-2#
Cluster unit Node-2 transitioned from DATA_NODE to CONTROL_NODE
csf3110-1/Node-2# show cluster info
Cluster ASA-CLUSTER-1: On
Interface mode: spanned
Cluster Member Limit : 16
This is "Node-2" in state CONTROL_NODE
ID : 1
Version : 9.22(2)20
Serial No.: FJZ28190UWB
CCL IP : 192.168.253.32
CCL MAC : ec19.2e9b.3f40
Last join : 14:42:25 JST Dec 14 2025
Last leave: N/A
Other members in the cluster:
There is no other unit in the cluster
この間、ほとんど inside 側から outside の先への通信断は発生しませんでした。
FW-1 (Node-1) 側から能動的に reload しているので、すぐに Cluster の Control Node 切り替えが発生したようです。
実際の障害では、Interface の Down や筐体のハングアップ等によって Cluster の Health Check がトリガーとなって発生するため、もう少し切り替わりには時間を要するはずです。この時間はチューニングが可能です。
復旧後、この場合 FW-1 (Node-1) は Cluster の Data Node として復帰します。Control Node は FW-2 (Node-2) が受け持ったっままであり、Node-1 固有の設定以外は Control Node である FW-2 (Node-2) から設定が同期されます。
FW-1
csf3110-1/Node-1>
Unable to cache per-unit entitlements in clustering configuration.
Removed all entitlements except per-unit entitlement configuration before joining cluster as data node.
Detected Cluster Control Node.
Beginning configuration replication from Control Node.
WARNING: Disabling auto import may affect Smart Licensing
*
ciscoasa/Node-1# livecore enabled
...... flow-offload is already disabled.
*** Output from config line 360, "no flow-offload enable"
Cryptochecksum (changed): 94afe81b 3863201e 1b4fc4ec 7d78f2c6
End configuration replication from Control Node.
Data node unit attempting to release all its entitlements. Per-unit entitlements will not be released.
All entitlements acquired by the DATA NODE are released. Caching entitlement configuration.
Unable to cache per-unit entitlements in clustering configuration.
Cluster unit Node-1 transitioned from DISABLED to DATA_NODE
csf3110-1/Node-1> ena
Password: (enable パスワード入力)
csf3110-1/Node-1# show cluster info
Cluster ASA-CLUSTER-1: On
Interface mode: spanned
Cluster Member Limit : 16
This is "Node-1" in state DATA_NODE
ID : 0
Version : 9.22(2)20
Serial No.: FJZ26381HBC
CCL IP : 192.168.253.31
CCL MAC : 8027.6c5b.8f40
Last join : 15:54:31 JST Dec 14 2025
Last leave: N/A
Other members in the cluster:
Unit "Node-2" in state CONTROL_NODE
ID : 1
Version : 9.22(2)20
Serial No.: FJZ28190UWB
CCL IP : 192.168.253.32
CCL MAC : ec19.2e9b.3f40
Last join : 14:42:25 JST Dec 14 2025
Last leave: N/A
csf3110-1/Node-1#
FW-2
csf3110-1/Node-2#
Beginning configuration replication to Data Node Node-1
End Configuration Replication to data node.
csf3110-1/Node-2# show cluster info
Cluster ASA-CLUSTER-1: On
Interface mode: spanned
Cluster Member Limit : 16
This is "Node-2" in state CONTROL_NODE
ID : 1
Version : 9.22(2)20
Serial No.: FJZ28190UWB
CCL IP : 192.168.253.32
CCL MAC : ec19.2e9b.3f40
Last join : 14:42:25 JST Dec 14 2025
Last leave: N/A
Other members in the cluster:
Unit "Node-1" in state DATA_NODE
ID : 0
Version : 9.22(2)20
Serial No.: FJZ26381HBC
CCL IP : 192.168.253.31
CCL MAC : 8027.6c5b.8f40
Last join : 15:54:31 JST Dec 14 2025
Last leave: 15:45:53 JST Dec 14 2025
csf3110-1/Node-2#
Firewall Clustering を作ってみた - ASA でのその他諸々
CLI で設定しましたが、実は ASDM からもっと簡単に設定ができます。Clustering の設定の Wizard が利用できます。

トラフィックのバランスが偏っているような場合、ASA Firewall 側で負荷の再計算を行う rebalance の設定がで可能です。通常は利用する必要はありませんが、モニタリングを行っていて負荷が偏るようであれば、rebalance を有効にすることも検討できます。
実際には、Auto Rejoin や Health Check のチューニング等、現場のニーズや運用に合わせて細かい設定が必要になります。
本記事では、ASA Firewall についてはここまでにしておきますが、以下のガイドも参考にしてください。
Cisco Secure Firewall ASA Series General Operations CLI Configuration Guide, 9.22
ASA Cluster for the Secure Firewall 3100/4200
https://www.cisco.com/c/en/us/td/docs/security/asa/asa922/configuration/general/asa-922-general-config/ha-cluster.html
Firewall Clustering を作ってみた - FTD の設定抜粋
FTD (Firewall Threat Defense) でも同じデザインで Firewall Clustering を組むことができます。
なので Switch の設定は ASA の前に書いた内容と同じです。
Firewall Clustering は FDM 管理の FTD では不可で、Firewall Management Center (FMC) での管理か、Cloud Delivered FMC (cdFMC) での管理が必要です。今回は On Premises の FMC を新たに Management Network に接続して Firewall Clustering を構築していきます。
FMC と FTD の Software Version は 7.6.2 で作成しています。
あらかじめ、以下のように FMC に Cluster に参加する FTD を Management Interface を使ってレジストしておいてください。Firewall Clustering の場合、sftunnel (FMC と FTD の管理コネクション) の確立には FTD の Management Interface が必要です。
作成の大まかな手順は以下の通りです。全て FMC からの実施です。
1 それぞれの FTD device 設定で CCL で利用する EtherChannel Interface を作成、deloy
2 Devices Management にある Add から Cluster をクリックしてガイドに従って必要な設定を実施
3 Data Interface を作成、deploy
4 Cluster の動作確認
コマンド設定に比べて、GUI が親切に設定すべき箇所を出してくれるので、とても楽です。
1 それぞれの FTD device 設定で CCL で利用する EtherChannel Interface を作成、deploy
各 FTD の Devices の画面から Interfaces --> Add Interfaces --> Ether Channel Interfaces をクリックして CCL で利用する予定の EtherChannel Interface を作成してください。Swtich 側では該当の Interface の Chanel 設定を On で作っているので、こちらも On にすることを忘れないでください。
ここで、一度、それぞれの FTD に対して設定を deploy します。deploy が終わると、CCL 相当の Interface が Link Up するはずです。
2 Devices Management にある Add から Cluster をクリックしてガイドに従って必要な設定を実施
FTD での Firewall Clustering は必要な基本設定がこの Wizard で完了できます。設定すべきパラメータは ASA のときと同じです。
Devices --> Device Management --> Add --> Cluster をクリックすると Wizard が起動します。このような感じで設定してください。コマンドで設定するよりもわかりやすいかと思います。CCL で設定したインターフェイスは自動的に MTU が 100bytes 追加されます。
Deploy を実施することなく Firewall Cluster の構築が始まります。私の検証環境では数分後に Firewall Cluster が完成しました。
3 Data Interface を作成、deploy
ここからは、個別の FTD への設定ではなく、Firewall Cluster に対しての設定になります。Data Interface を Cluster に対して作成します。
Devices --> Device Management に出来上がった Firewall Cluster を編集 (鉛筆マークをクリック) します。Interface から Add ボタンをクリックして Ether Channel Interface で Data Interface に使う EtherChannel を作成します。こちらは LACP Active のデフォルトのままで構いません。
同じ手順で今度は Sub Interface を作成してください。それぞれ inside や outside 等の Data Interface を通常の FTD と同じように作成します。仮想 Mac address を設定すると、Control Node 切り替わりの際のバタつきを抑えることができます。
Advanced から設定しますが、必要なのは Active Mac Address だけです。
その他、通常の FTD と同じように Routing、NAT、Access Control Policy を作成して deploy してください。
4 Cluster の動作確認
deploy が終わると無事に FTD の inside 側から outside 側の先への通信が確保できました。
ASA と同様に FTD でも CLI で show cluster info コマンドを確認できますが、FMC でも確認メニューが用意されています。
Devices --> Device Management --> Firewall Cluster を編集 (鉛筆マークをクリック) します。
Cluster タブの General ボックスの中にある「Cluster Live Status:」の View をクリックすると、Cluster の状態を確認できます。
ASA のときと同様に inside 側のホストからの通信を発生させたまま、テストとして、FW-1 (Node-1, Control Node) を reload してみました。
inside 側からの通信は、すぐに自動的に復旧しました。
こちらも実際には、Auto Rejoin や Health Check のチューニング等、現場のニーズや運用に合わせて細かい設定が必要になります。詳しくは設定ガイドをご確認ください。
Cisco Secure Firewall Management Center Device Configuration Guide, 7.6
Chapter: Clustering for the Secure Firewall 3100/4200
https://www.cisco.com/c/en/us/td/docs/security/secure-firewall/management-center/device-config/760/management-center-device-config-76/device-ops-cluster-sec-fw-3100.html
終わりに
全ての Firewall を Active 機として利用する Firewall Clustering は Cisco Secure Firewall の ASA と FTD のミッドレンジとハイエンドのモデル (と仮想アプライアンス) で実現可能です。専用のロードバランサを利用することなく、Switch や Router からのトラフィック転送を受けて、Firewall 同士が情報を交換しながら動作する方法であり、ネットワークデザインをしっかり決めれば、設定はそれほど難しくありません。
RAVPN の終端ができないとか、現状の FTD ラインナップにおいては Multi Instance との併用ができないなどの制限はありますが、シンプルな Firewall の用途で、かつ、3台以上の Firewall を全て Active 機として使いたいという場合には、一つの手段だと思います。機会と機械があれば試してみてください。
免責事項
本サイトおよび対応するコメントにおいて表明される意見は、投稿者本人の個人的意見であり、シスコの意見ではありません。本サイトの内容は、情報の提供のみを目的として掲載されており、シスコや他の関係者による推奨や表明を目的としたものではありません。各利用者は、本 Web サイトへの掲載により、投稿、リンクその他の方法でアップロードした全ての情報の内容に対して全責任を負い、本 Web サイトの利用に関するあらゆる責任からシスコを免責することに同意したものとします。














