Cisco ASAでIKEv2 IPsec VPNを設定する
二台の Cisco ASA で、IKEv2、PSK、static crypto map を使った policy-based site-to-site IPsec VPN を設定する。
ASA のインターフェース、security level、ACL、NAT は Cisco ASAの全体像、crypto ACL、crypto map、tunnel-group、identity NAT の関係は Cisco ASAのIPsec設定要素 を参照する。
flowchart LR
hosta["Host-A<br/>192.168.1.10"] --> lana["LAN-A<br/>192.168.1.0/24"]
lana --> asaa["ASA-A<br/>inside: 192.168.1.1<br/>outside: 203.0.113.1"]
asaa ==>|IKEv2 / ESP| asab["ASA-B<br/>outside: 203.0.113.2<br/>inside: 192.168.2.1"]
asab --> lanb["LAN-B<br/>192.168.2.0/24"]
lanb --> hostb["Host-B<br/>192.168.2.10"]
| 項目 | ASA-A | ASA-B |
|---|---|---|
| outside interface | GigabitEthernet0/0 |
GigabitEthernet0/0 |
| outside address | 203.0.113.1/24 |
203.0.113.2/24 |
| inside interface | GigabitEthernet0/1 |
GigabitEthernet0/1 |
| inside address | 192.168.1.1/24 |
192.168.2.1/24 |
| local LAN | 192.168.1.0/24 |
192.168.2.0/24 |
| remote LAN | 192.168.2.0/24 |
192.168.1.0/24 |
| peer address | 203.0.113.2 |
203.0.113.1 |
| PSK | ChangeMe-StrongKey |
ChangeMe-StrongKey |
Host-A の default gateway は 192.168.1.1、Host-B の default gateway は 192.168.2.1 とする。203.0.113.0/24 はドキュメント用の例示アドレスである。実機では、インターフェースID、アドレス、ネットワーク、PSKを実際の値へ置き換える。
この構成では二台の outside が同じセグメントにあり、peer への経路は connected route になる。peer がルータの先にある場合は、outside 側に peer まで到達できる経路が必要である。
1. インターフェースと経路を設定する
Section titled “1. インターフェースと経路を設定する”ASA-A の設定。
enableconfigure terminal
interface GigabitEthernet0/0 nameif outside security-level 0 ip address 203.0.113.1 255.255.255.0 no shutdownexit
interface GigabitEthernet0/1 nameif inside security-level 100 ip address 192.168.1.1 255.255.255.0 no shutdownexitASA-B の設定。
enableconfigure terminal
interface GigabitEthernet0/0 nameif outside security-level 0 ip address 203.0.113.2 255.255.255.0 no shutdownexit
interface GigabitEthernet0/1 nameif inside security-level 100 ip address 192.168.2.1 255.255.255.0 no shutdownexitnameif で付けた inside と outside は、後続の NAT、IKEv2、crypto map から参照される。no shutdown がないインターフェースは有効にならず、IPアドレスだけを設定しても通信できない。
このnameifでは、insideのsecurity levelは省略時に100、outsideは既定の0になる。security-level 100とsecurity-level 0は、意図する値を設定へ明示するための任意コマンドである。
設定後、両方の ASA でインターフェース状態と outside 間の疎通を確認する。
show interface ip briefping 203.0.113.2ASA-B では ping 203.0.113.1 を実行する。outside 同士で疎通できない状態では、IKEv2 の設定を進めても SA は確立しない。
ASA-Aからremote LANをoutsideへ転送する静的経路を設定する。
route outside 192.168.2.0 255.255.255.0 203.0.113.2ASA-Bでは送信元と宛先の拠点を反転する。
route outside 192.168.1.0 255.255.255.0 203.0.113.1crypto mapは保護する通信とpeerを定義するが、remote LANへのルーティング経路を作成しない。各ASAがremote LANをoutsideへ転送できる経路が必要である。この構成では対向ASAのoutsideアドレスをnext hopにしている。ISPルータを経由する構成では、そのルータをnext hopにしたremote LANへの経路またはdefault routeを使用する。
経路を確認する。
show routeremote LANへの経路がoutsideを指していることを確認する。
2. local LANとremote LANのオブジェクトを作成する
Section titled “2. local LANとremote LANのオブジェクトを作成する”ASA-A の設定。
object network LOCAL-LAN subnet 192.168.1.0 255.255.255.0exit
object network REMOTE-LAN subnet 192.168.2.0 255.255.255.0exitASA-B の設定。
object network LOCAL-LAN subnet 192.168.2.0 255.255.255.0exit
object network REMOTE-LAN subnet 192.168.1.0 255.255.255.0exit同じオブジェクト名を使用しているが、LOCAL-LAN は各 ASA から見た自拠点、REMOTE-LAN は対向拠点を表す。そのため、両端で subnet の値は反対になる。
3. VPN通信へidentity NATを設定する
Section titled “3. VPN通信へidentity NATを設定する”ASA-A と ASA-B の両方で設定する。
nat (inside,outside) 1 source static LOCAL-LAN LOCAL-LAN destination static REMOTE-LAN REMOTE-LAN no-proxy-arp route-lookupこの規則は、LOCAL-LANからREMOTE-LANへの通信について、送信元と宛先を同じアドレスのまま維持する。提示した新規構成には他のNAT規則がないため、identity NATを省略してもアドレスは変換されない。insideからoutsideへのdynamic PATなどが存在し、その規則がVPN通信にも一致する構成では、crypto ACLと同じアドレスを維持するためにidentity NATが必要である。
送信元だけでなく宛先のREMOTE-LANも条件にするため、通常のインターネット宛通信までidentity NATされない。コマンド中の1はSection 1の先頭へ挿入するline番号であり、既存のmanual NATより先に評価させる。
no-proxy-arpとroute-lookupは任意オプションである。no-proxy-arpは、このidentity NATに基づいてoutsideでproxy ARPへ応答することを防ぐ。route-lookupはNAT規則のoutsideだけで出力先を決めず、手順1で作成したremote LANへの静的経路を使ってegressを決める。
評価順序を確認する。
show nat detailVPN用identity NATが、同じ通信に一致する可能性のあるPATやmanual NATより前に表示されることを確認する。
4. crypto ACLを作成する
Section titled “4. crypto ACLを作成する”ASA-A と ASA-B の両方で設定する。
access-list VPN-TRAFFIC extended permit ip object LOCAL-LAN object REMOTE-LANこのACLは access-group でインターフェースへ適用しない。後でcrypto mapの match address から参照し、IPsecで保護する通信を選ぶ。
両端ともコマンドの見た目は同じだが、手順2で LOCAL-LAN と REMOTE-LAN の値を反転している。このため、ASA-Aでは 192.168.1.0/24 → 192.168.2.0/24、ASA-Bでは 192.168.2.0/24 → 192.168.1.0/24 が選択される。
5. IKEv2 policyを作成する
Section titled “5. IKEv2 policyを作成する”ASA-A と ASA-B の両方で設定する。
crypto ikev2 policy 10 encryption aes-256 integrity sha256 group 14 prf sha256 lifetime seconds 86400exitcrypto ikev2 policy 10 は、IKEv2 SA の暗号化、完全性確認、PRF、DH groupを一つにまとめる。10 はローカルでの優先順位であり、対向と同じ番号にする必要はない。両端で共通のアルゴリズムがなければ IKEv2 SA は確立しない。
lifetime seconds 86400 は既定値と同じであるため省略できる。この設定では、使用する値を明示するため記載している。
続けて、両方のASAでoutside interfaceのIKEv2を有効にする。
crypto ikev2 enable outsideIKEv2 policyを作成しただけでは、outsideでIKEv2を受け付けない。crypto ikev2 enable outside は、VPNを終端するインターフェースでIKEv2を動作させるために必要である。
ASA自身が終端するIKE、NAT-T、ESPのパケットは、既定ではoutsideのinterface ACLへUDP 500、UDP 4500、ESPのpermitを追加しなくても受け付けられる。復号後にASAを通過する通信の扱いは手順9で確認する。
6. IKEv2 IPsec proposalを作成する
Section titled “6. IKEv2 IPsec proposalを作成する”ASA-A と ASA-B の両方で設定する。
crypto ipsec ikev2 ipsec-proposal IPSEC-PROPOSAL protocol esp encryption aes-256 protocol esp integrity sha-256exitこのproposalは、VPNを通る実データをESPで保護するときの方式を定義する。aes-256 が機密性、sha-256 が完全性確認とデータ送信元認証を担当する。手順5のIKEv2 policyと同じ種類のアルゴリズム名が現れるが、保護するSAが異なる。
7. crypto mapを作成してoutsideへ適用する
Section titled “7. crypto mapを作成してoutsideへ適用する”ASA-A の設定。
crypto map OUTSIDE-MAP 10 match address VPN-TRAFFICcrypto map OUTSIDE-MAP 10 set peer 203.0.113.2crypto map OUTSIDE-MAP 10 set ikev2 ipsec-proposal IPSEC-PROPOSALcrypto map OUTSIDE-MAP 10 set pfs group14crypto map OUTSIDE-MAP interface outsideASA-B の設定。
crypto map OUTSIDE-MAP 10 match address VPN-TRAFFICcrypto map OUTSIDE-MAP 10 set peer 203.0.113.1crypto map OUTSIDE-MAP 10 set ikev2 ipsec-proposal IPSEC-PROPOSALcrypto map OUTSIDE-MAP 10 set pfs group14crypto map OUTSIDE-MAP interface outsidematch address は保護する通信、set peer は送信先となる対向ASA、set ikev2 ipsec-proposal はESPの方式をcrypto map entryへ結びつける。この三つがなければ、ASAは「どの通信を、どの対向へ、どの方式で保護するか」を決定できない。
set pfs group14 は一般には任意である。この構成ではChild SAを作り直すときにも新しいDH鍵交換を行うため設定し、両端を同じgroupにする。
crypto map OUTSIDE-MAP interface outside は、同じ名前を持つcrypto map set全体をoutsideへ適用する。entryを作成しただけではインターフェース上で処理されないため、この適用が必要である。
8. tunnel-groupへPSKを設定する
Section titled “8. tunnel-groupへPSKを設定する”ASA-A の設定。
tunnel-group 203.0.113.2 type ipsec-l2ltunnel-group 203.0.113.2 ipsec-attributes ikev2 remote-authentication pre-shared-key ChangeMe-StrongKey ikev2 local-authentication pre-shared-key ChangeMe-StrongKeyexitASA-B の設定。
tunnel-group 203.0.113.1 type ipsec-l2ltunnel-group 203.0.113.1 ipsec-attributes ikev2 remote-authentication pre-shared-key ChangeMe-StrongKey ikev2 local-authentication pre-shared-key ChangeMe-StrongKeyexittunnel-group名をpeerのoutsideアドレスにすることで、到着したIKEv2通信をpeer固有の認証設定へ対応づける。type ipsec-l2l は拠点間VPNとして作成するために必要である。
remote-authentication は相手が示した認証情報を検証し、local-authentication は自分が相手へ示す認証情報を生成する。この構成では同じPSKを双方向に使うが、IKEv2のlocalとremoteは別々に設定する。
9. 復号後のVPN通信を許可する
Section titled “9. 復号後のVPN通信を許可する”ASA 7.0(1)以降ではsysopt connection permit-vpnが既定で有効である。既定動作を設定へ明示する場合は、ASA-AとASA-Bの両方で任意に設定する。
sysopt connection permit-vpnこの構成では、復号後のVPN通信がoutsideのinterface ACLと転送先インターフェースのegress ACLを迂回する。コマンドを省略しても、既定値が変更されていなければ同じ動作になる。
VPN経由で到達できるプロトコルやホストをASAのinterface ACLでさらに制限する構成では、この動作を前提にせず、復号後の通信とACLに沿ってアクセス制御を設計する。
inside interfaceへingress ACLが適用されている場合、local LANからremote LANへの通信はそのACLでも許可する必要がある。
10. 設定を保存する
Section titled “10. 設定を保存する”ASA-A と ASA-B の両方で実行する。
endwrite memory設定要素を確認する
Section titled “設定要素を確認する”両方のASAで実行する。
show running-config crypto ikev2show running-config crypto ipsecshow running-config crypto mapshow running-config tunnel-groupshow access-list VPN-TRAFFICshow nat detailshow running-config all sysopt確認する内容は次のとおり。
- IKEv2 policyとIPsec proposalに意図したアルゴリズムが表示される
- crypto mapのpeerが対向ASAのoutsideアドレスになっている
- crypto mapがoutsideへ適用されている
- tunnel-group名がpeerアドレスになっている
- identity NATがdynamic PATより先に評価される位置にある
sysopt connection permit-vpnが有効である
パケットの処理経路を確認する
Section titled “パケットの処理経路を確認する”ASA-AでHost-AからHost-BへのICMPを模擬する。
packet-tracer input inside icmp 192.168.1.10 8 0 192.168.2.10 detailedASA-Bでは送信元と宛先を反転する。
packet-tracer input inside icmp 192.168.2.10 8 0 192.168.1.10 detailedNATで送信元アドレスが変わらず、VPN phaseでcrypto mapに一致することを確認する。実通信を流す前の静的な設定確認であり、SAの確立そのものは次の手順で確認する。
VPNを開始する
Section titled “VPNを開始する”Host-AからHost-Bへpingを送信する。
ping 192.168.2.10最初のパケットを契機にIKEv2 SAとChild SAが作成されるため、最初の数パケットはタイムアウトする場合がある。Host-BからHost-Aへの通信も確認する。
IKEv2 SAを確認する
Section titled “IKEv2 SAを確認する”両方のASAで実行する。
show crypto ikev2 sashow crypto ikev2 sa detailStatus が READY または UP-ACTIVE となり、localとremoteに両ASAのoutsideアドレス、認証方式にPSK、暗号方式にAES-256、DH groupに14が表示されることを確認する。
IPsec SAを確認する
Section titled “IPsec SAを確認する”show crypto ipsec sashow vpn-sessiondb detail l2l確認する内容は次のとおり。
- local selectorとremote selectorが両拠点LANになっている
- ESPの暗号化方式がAES-256、完全性確認方式がSHA-256になっている
- Host-AとHost-Bの通信に応じてencaps、decaps、encrypt、decryptのカウンタが増える
- 片側だけでなく両方向のパケットカウンタが増える
よくある失敗
Section titled “よくある失敗”| 症状 | 確認する場所 |
|---|---|
| IKEv2 SAが作成されない | outside間の到達性、crypto ikev2 enable outside、IKEv2 policy、peerアドレス、tunnel-group名、PSK |
| IKEv2 SAはあるがIPsec SAがない | crypto ACLの反転、IPsec proposal、crypto mapの関連づけ、PFS group |
| IPsec SAはあるが通信できない | Hostのdefault gateway、identity NAT、inside ACL、戻り経路、selector、sysopt connection permit-vpn |
| encapsだけ増えてdecapsが増えない | 対向側crypto ACL、対向側NAT、戻り経路、途中でのESPまたはUDP 4500の遮断 |
| VPN通信がoutsideアドレスへPATされる | identity NATの内容とNAT tableでの評価順序 |
SAを作り直して確認する場合、次のコマンドを任意で使用できる。通信中のセッションを切断するため、影響を確認してから実行する。
clear crypto ikev2 saclear crypto ipsec sa- LAN-to-LAN IPsec VPNs - Cisco Secure Firewall ASA VPN CLI Configuration Guide, 9.20
- IPsec and ISAKMP - Cisco Secure Firewall ASA VPN CLI Configuration Guide, 9.20
- Configure a Site-to-Site IKEv2 Tunnel Between 2 ASAs Using IKEv2 Multiple Key Exchanges
- Network Address Translation - Cisco Secure Firewall ASA Firewall CLI Configuration Guide, 9.20
- General VPN Parameters - Cisco Secure Firewall ASA VPN CLI Configuration Guide, 9.20