はじめに
ASA や FTD のVPN Load Balancing 機能を利用することで、ロードバランサ―を別途購入しなくても、複数のASAやFTDをクラスタ化し、ASA/FTDデバイス間で AnyConnect接続を自動分散することができます。デバイスは最大10台まで参加することができます。各デバイスがActiveになり、AnyConnect接続を終端可能となります。
なお、VPN Load Balancingを利用時は、「各デバイスのパブリックIPアドレス」と 「VPNクラスタ用のパブリックIPアドレス」が必要となることに注意してください。例えば、4台のASAで VPN Load Balancingを行う場合、5つのパブリックIPアドレスが必要となります。
本ドキュメントでは、主にASAを用いた VPN Load Balancing の設定と確認例を紹介します。なお、基本的な動作や確認方法は、ASA利用時も FTD利用時も同じです。
本ドキュメントは、ASA バージョン 9.14(3)18、ASDMバージョン 7.16(1)150、AnyConnectバージョン 4.10を利用して作成、確認しております。
VPNクラスタ 概要
AnyConnect Client は、VPN クラスタの Public (outside) 側の仮想 IP アドレス宛てに VPN 接続を開始しますが、その仮想 IP アドレス宛てに来た VPN 接続要求に対して、Master となる ASA が、クラスタメンバーの中でいちばん負荷が低い ASA の Public IP アドレスに対して再度 VPN 接続を出すように、Client に返します。Client は受け取ったその新しい IP アドレス宛てに、自動的に直接 VPN 接続を開始し、認証が通れば、その ASA と直接 VPN 接続が確立されます。

利用ケース例
例えば以下のような環境やシーンでの利用ケースが多いです。
- 大規模なリモートアクセスVPN環境
- 既存ASA/FTDのパフォーマンスが限界に近づきつつあり、手持ちの他ASA/FTDを利用し増強したい場合
また、稀な利用ケースとして、「リモートアクセスVPNの接続が集中する期間に、一時的に 既存ASA冗長構成を崩して VPN Load Balancing 構成に変更し、VPN接続容量を約2倍にする」というものもあります。
事前準備
VPNクラスタは、単独でも リモートアクセスVPNの終端が可能な、複数ASAやFTDを組み合わせて構成します。
本ドキュメントでは、リモートアクセスVPNサーバーとして既に事前設定済み・利用中の ASA 2台のクラスタ化の設定例を紹介します。

VPN Load Balancing の設定 (ASAの場合)
VPNクラスタで利用するパラメータを事前に設計しておきます。以下は本ドキュメントの構成で利用するパラメータ例です。
ASDM設定名
|
パラメータ例
|
説明
|
Group IP Address
|
170.72.0.79
|
VPNクラスタ IPアドレス。共通設定
|
IPsec Shared Secret
|
cisco123
|
VPNクラスタ キー。共通設定
|
1号機: Priority of This Device
|
10
|
1号機のプライオリティ (最大10で高いのが優先でMasterに)
|
1号機: Public Interface of This Device
|
dmz
|
1号機のWAN側Interface
|
1号機: Private Interface of This Device
|
inside
|
1号機のLAN側Interface
|
2号機: Priority of This Device
|
9
|
2号機のプライオリティ (最大10で高いのが優先でMasterに)
|
2号機: Public Interface of This Device
|
dmz
|
2号機のWAN側Interface
|
2号機: Private Interface of This Device
|
inside
|
2号機のLAN側Interface
|
Send FQDN to client instead of an IP address when redirecting
|
No
|
VPNクラスタIPから各ASAにリダイレクト時に、IPアドレスでなく FQDNで返してほしい時に有効化。共通設定
|
各ASAデバイスにASDMでアクセスし、「Wizards」 から 「High Availability and Scalability Wizard...」を選択します。

Wizardが起動するため、「VPN Group Load Balancing」をチェックします。

事前に定義したパラメータを、「VPN Group Load Balancing Configuration」で各ASAデバイスに設定します。
1号機側 設定例:

2号機側 設定例:

なお、以下はCLIで上記設定を行った時のサンプルとなります。
1号機側:
crypto ikev1 enable inside
vpn load-balancing
interface lbpublic dmz
cluster ip address 170.72.0.79
cluster key cisco123
cluster encryption
priority 10
participate
2号機側:
crypto ikev1 enable inside
vpn load-balancing
interface lbpublic dmz
cluster ip address 170.72.0.79
cluster key cisco123
cluster encryption
priority 9
participate
動作確認 (ASAの場合)
正常時
任意ASAにASDMで接続し、「Monitoring > VPN > VPN Statistics > VPN Group Loads」を確認し、設定したデバイス全てが Peersに表示され、クラスタに参加していることを確認します。

端末側でAnyConnectを起動し VPNクラスタIPアドレスに 接続します。

接続後、「Advanced Window」から「Statistics」を見ると、接続先Serverが 170.72.0.72 (=Backup)であることがわかります。

接続後 Backup機の Used が 1つ増え、Load が 2% あがっていることを確認できます。

Master障害時
VPNクラスタにAnyConnect 端末が2台接続し、各デバイスに接続が分散されている状態にします。

Master機の電源を落とします。
Backup機が Master機のダウンを検知し、Masterに昇格することを シスログから確認できます。
Jan 19 2022 03:18:05: %ASA-6-718039: Process dead peer[192.168.0.71]
Jan 19 2022 03:18:05: %ASA-6-718051: Deleted secure tunnel to peer[192.168.0.71]
Jan 19 2022 03:18:05: %ASA-5-718056: Deleted Master peer, IP 192.168.0.71
Jan 19 2022 03:18:05: %ASA-5-718044: Deleted peer[192.168.0.71]
Jan 19 2022 03:18:05: %ASA-5-718072: Becoming master of Load Balancing in context 0.
旧Master機に接続していた AnyConnect 端末側は リコネクトの状態となり通信不可となります。

旧Master機に接続していた AnyConnect 端末は リダイレクト先デバイスに再接続を自動で試みてしまうため、Master機の障害が長時間継続する場合は、一旦 手動でDisconnect し、再度 VPNクラスタのIPアドレス(もしくは VPNクラスタのFQDN)に AnyConnectでアクセスすることで、再接続が可能となります。
よくある質問
デバイス間でどのようにAnyConnect接続は分散されますか
クラスタ内でVPN接続数の少なく 接続数のLoad (負荷)が低い ASA/FTDデバイスに優先してリダイレクトされ、端末は接続されるようになります。各デバイスが同程度の負荷の場合は、Backup機に優先してリダイレクトされます。各デバイスのCPU負荷や通信量などは分散時に考慮されません。
100台と250台と250台を各終端可能なデバイスでクラスタを組むと最大接続数は幾つですか
全ての総和となるため、仮にAnyConnect接続可能数が100台+250台+250台の3デバイスでVPNクラスタを組むと、最大600台まで VPNクラスタでAnyConnect終端可能となります。なお、各デバイスやVPNクラスタの最大接続数(上限)近くまで接続すると、そのVPN接続や通信処理で ASA/FTDデバイス側のCPU高負荷や遅延の原因となり、AnyConnectユーザ側 1人あたりの通信速度や品質につながる恐れがあります。安定したパフォーマンスで運用するには、通常 多くとも最大接続数の半分くらいまでの接続数を抑えるのが目安となります。
「Send FQDN to client instead of an IP address when redirecting」設定はいつ使いますか
証明書にFQDNを利用している場合、デフォルトのIPアドレスによるリダイレクト方式の場合、Invalid となってしまうことがあるため、その回避のため当オプションを利用します。例えば、ワイルドカードSSLサーバー証明書を利用時などに利用します。
FTDで VPNロードバランシングは利用できますか
はい、バージョン 7.0から 利用可能です。なお、VPNロードバランシングを利用するには、Firepower Management Center (FMC) で FTDを管理している必要があります。以下はFMCの実際のVPN Load Balancing の設定画面例となりますが、Devices > Remote Access > Advanced > Load Balancing から、ASAと同様のパラメーターで設定可能です。

FTDの VPN Load Balancing についてより詳しくは、以下設定ガイドなどを参照してください。
https://www.cisco.com/c/en/us/td/docs/security/firepower/70/configuration/guide/fpmc-config-guide-v70/firepower_threat_defense_remote_access_vpns.html?bookSearch=true#concept_xbt_vz3_hpb
デバイスがダウン時に自動で再接続させる方法はありますか
VPNクラスタと Failoverは組み合わせて利用することができるため、VPNクラスタに参加する各デバイスを Active/StandbyのFailover構成にすることで、Active機がダウンしても自動で Standaby機にFailoverが可能となり、AnyConnect 接続を継続可能となります。ただし、各デバイスをFailover構成にすると、クラスタに参加できるデバイスが半分となってしまうため、クラスタの最大接続可能数や最大処理能力は低下してしまいます。
参考情報
Firepower System and FTDトラブルシューティング
https://community.cisco.com/t5/-/-/ta-p/3161733
Cisco Secure Firewall (FTD) - how to ※FTD情報 まとめサイト
https://community.cisco.com/t5/-/-/ta-p/5024782