Cisco機器でIKEv2 IPsec VPNを設定する
Cisco IOS / IOS XE ルータで、IKEv2 と IPsec VTI を使った拠点間 VPN を設定する。
crypto map ではなく VTI(Virtual Tunnel Interface)を使う。VTI 構成では、暗号化対象の通信を ACL で直接指定するのではなく、Tunnel インターフェースへ向く経路によって VPN へ流す通信を決める。
Cisco IOS / IOS XE の proposal、policy、keyring、profile、transform-set の関係は、 Cisco IOSのIPsec設定要素 を参照する。
crypto map やトラブルシュートで出てくる ACL の基本は、標準ACLと拡張ACL を参照する。
flowchart LR
subgraph site_a["Site A"]
lan_a["LAN 192.168.1.0/24"] --> r1["R1 WAN 203.0.113.1"]
r1 --> tun_a["Tunnel0 10.255.0.1/30"]
end
tunnel["IPsec VTI: IKEv2 creates SA and ESP protects data"]
subgraph site_b["Site B"]
tun_b["Tunnel0 10.255.0.2/30"] --> r2["R2 WAN 203.0.113.2"]
r2 --> lan_b["LAN 192.168.2.0/24"]
end
tun_a --> tunnel --> tun_b
| 項目 | R1 | R2 |
|---|---|---|
| 機器 | Cisco IOS / IOS XE ルータ | Cisco IOS / IOS XE ルータ |
| WANインターフェース | GigabitEthernet0/0 |
GigabitEthernet0/0 |
| WAN IPアドレス | 203.0.113.1 |
203.0.113.2 |
| LANインターフェース | GigabitEthernet0/1 |
GigabitEthernet0/1 |
| LAN側IPアドレス | 192.168.1.1 |
192.168.2.1 |
| LANネットワーク | 192.168.1.0/24 |
192.168.2.0/24 |
| Tunnelインターフェース | Tunnel0 |
Tunnel0 |
| Tunnel IPアドレス | 10.255.0.1/30 |
10.255.0.2/30 |
| IKEバージョン | IKEv2 | IKEv2 |
| 認証方式 | 事前共有鍵 | 事前共有鍵 |
| 事前共有鍵 | ChangeMe-StrongKey |
ChangeMe-StrongKey |
事前に確認しておくこと。
- R1 と R2 の WAN IP 同士で疎通できる
- 途中の機器で UDP 500、UDP 4500、ESP が必要に応じて通る
- LAN 側インターフェースと基本的なルーティングは設定済みである
- 既存の NAT overload がある場合、対向 LAN 宛通信を NAT 対象から除外する
flowchart TD
subgraph ike["IKEv2 configuration"]
proposal["IKEv2 proposal"]
policy["IKEv2 policy"]
keyring["IKEv2 keyring"]
ikeprofile["IKEv2 profile"]
ikesa["IKEv2 SA"]
end
subgraph ipsec["IPsec VTI configuration"]
transform["IPsec transform set"]
ipsecprofile["IPsec profile"]
tunnelif["Tunnel0 with mode ipsec ipv4"]
route["Route to remote LAN"]
end
proposal --> policy --> ikesa
keyring --> ikeprofile --> ikesa
ikeprofile --> ipsecprofile
transform --> ipsecprofile --> tunnelif
route --> tunnelif
| 要素 | 役割 |
|---|---|
| IKEv2 proposal | IKEv2 の制御通信で使う暗号方式などの候補 |
| IKEv2 policy | IKEv2 proposal を採用する設定 |
| IKEv2 keyring | 対向ルータと事前共有鍵を対応づける設定 |
| IKEv2 profile | 相手識別、認証方式、keyring をまとめる設定 |
| IPsec transform set | ESP で実データを保護する方式 |
| IPsec profile | transform set と IKEv2 profile を Tunnel に適用するためのまとまり |
1. IKEv2 proposalを作成する
Section titled “1. IKEv2 proposalを作成する”IKE で使う暗号方式、完全性確認方式、DH グループを IKEv2 proposal として定義する。
R1 と R2 の両方で設定する。
conf tcrypto ikev2 proposal IKEV2-PROP encryption aes-cbc-256 integrity sha256 group 14exit| 設定 | 意味 |
|---|---|
crypto ikev2 proposal IKEV2-PROP |
IKEV2-PROP というローカル名で IKEv2 proposal を作成し、proposal の設定モードへ入る。名前自体は対向へ送られないため、両端で同じ名前にする必要はない。 |
encryption aes-cbc-256 |
IKEv2 SA の暗号化方式として、256 bit 鍵の AES-CBC を指定する。保護するのは IKEv2 の制御通信であり、VPN を通る実データではない。 |
integrity sha256 |
IKEv2 メッセージの改ざんを検出する完全性確認方式として、SHA-256 ベースの HMAC を指定する。対向ルータの認証方式は IKEv2 profile で別に指定する。 |
group 14 |
IKEv2 SA の鍵素材を作る Diffie-Hellman 鍵交換に、2048 bit MODP group 14 を使う。これは暗号化方式ではなく、共有秘密を合意する方式である。 |
この例は AES-CBC を使うため、prf を省略すると Cisco IOS / IOS XE は integrity と同じ SHA-256 を PRF に使う。PRF は IKEv2 の鍵素材や認証処理に必要な値を生成する。両端では proposal 名ではなく、暗号化方式、完全性確認方式、PRF、DH グループに共通の組み合わせが必要になる。
この proposal は、IKEv2 の制御通信を保護するための候補である。IPsec で実データを保護する方式は、後で作成する transform set で指定する。
2. IKEv2 policyを作成する
Section titled “2. IKEv2 policyを作成する”IKEv2 proposal を IKEv2 policy に紐づける。
R1 と R2 の両方で設定する。
crypto ikev2 policy IKEV2-POLICY proposal IKEV2-PROPexitIKEv2 ネゴシエーションでは、両端で一致する proposal が選ばれる。暗号方式、完全性確認方式、DH グループが合わないと IKEv2 SA は確立しない。
3. IKEv2 keyringを作成する
Section titled “3. IKEv2 keyringを作成する”対向ルータと事前共有鍵を IKEv2 keyring に定義する。
R1 では、対向の R2 を peer として登録する。
crypto ikev2 keyring IKEV2-KEYRING peer R2 address 203.0.113.2 pre-shared-key ChangeMe-StrongKey exitexitR2 では、対向の R1 を peer として登録する。
crypto ikev2 keyring IKEV2-KEYRING peer R1 address 203.0.113.1 pre-shared-key ChangeMe-StrongKey exitexitpre-shared-key ChangeMe-StrongKey は、自分の認証情報の生成と、相手から受け取った認証情報の検証に同じ PSK を使う設定である。方向ごとに異なる PSK を使う場合は、pre-shared-key local と pre-shared-key remote を分けて設定する。
4. IKEv2 profileを作成する
Section titled “4. IKEv2 profileを作成する”相手の識別条件、認証方式、keyring を IKEv2 profile にまとめる。
R1 の設定。
crypto ikev2 profile IKEV2-PROFILE match identity remote address 203.0.113.2 255.255.255.255 identity local address 203.0.113.1 authentication remote pre-share authentication local pre-share keyring local IKEV2-KEYRING dpd 10 3 on-demandexitR2 の設定。
crypto ikev2 profile IKEV2-PROFILE match identity remote address 203.0.113.1 255.255.255.255 identity local address 203.0.113.2 authentication remote pre-share authentication local pre-share keyring local IKEV2-KEYRING dpd 10 3 on-demandexitmatch identity remote address は、対向ルータを識別する条件である。ここが実際の対向 WAN IP と合っていないと、正しい profile が選ばれない。
identity local address は任意であり、local IKE identity を指定した WAN IP アドレスに固定する。PSK 認証では既定でも IKE パケットの送信元 IP アドレスが local identity になるため、この構成では省略しても同じ identity が使われる。
dpd 10 3 on-demand は任意である。peer から 10 秒間 IKEv2 / IPsec traffic を受信していない状態で送信が必要になると生存確認を行い、応答がなければ 3 秒間隔で再送する。省略しても SA は確立するが、応答しない peer の検出と SA の削除が遅れる場合がある。
5. IPsec transform setを作成する
Section titled “5. IPsec transform setを作成する”ESP で実データを保護する方式を IPsec transform set として定義する。
R1 と R2 の両方で設定する。
crypto ipsec transform-set IPSEC-TS esp-aes 256 esp-sha256-hmac mode tunnelexit| 設定 | 意味 |
|---|---|
crypto ipsec transform-set IPSEC-TS ... |
IPSEC-TS というローカル名で、IPsec SA が実データを保護するときの ESP アルゴリズムの組み合わせを定義する。名前は両端で同じでなくてもよいが、選ばれるアルゴリズムとモードには互換性が必要である。 |
esp-aes 256 |
ESP の暗号化方式として、256 bit 鍵の AES-CBC を使う。実データの機密性を提供する設定であり、256 は AES の鍵長を表す。 |
esp-sha256-hmac |
ESP の完全性確認とデータ送信元認証に HMAC-SHA-256 を使う。改ざんを検出するための設定であり、データを暗号化する設定ではない。 |
mode tunnel |
元の IP パケット全体を ESP で保護し、その外側に新しい IP ヘッダーを付ける。外側の IP ヘッダーは暗号化されず、転送に使われる。 |
IKEv2 proposal 内の AES / SHA-256 は IKEv2 SA を保護し、transform set 内の esp-aes / esp-sha256-hmac は IPsec SA を通る実データを保護する。同じ種類のアルゴリズム名が現れても、対象となる SA が異なる。
6. IPsec profileを作成する
Section titled “6. IPsec profileを作成する”transform set と IKEv2 profile を IPsec profile にまとめる。
R1 と R2 の両方で設定する。
crypto ipsec profile IPSEC-PROFILE set transform-set IPSEC-TS set ikev2-profile IKEV2-PROFILE set pfs group14exitIPsec profile は、後で Tunnel インターフェースへ適用する。PFS を有効にする場合は、両端で同じ DH グループを指定する。
7. Tunnelインターフェースを作成する
Section titled “7. Tunnelインターフェースを作成する”IPsec VTI を作成し、IPsec profile を適用する。
R1 の設定。
interface Tunnel0 ip address 10.255.0.1 255.255.255.252 tunnel source GigabitEthernet0/0 tunnel destination 203.0.113.2 tunnel mode ipsec ipv4 tunnel protection ipsec profile IPSEC-PROFILE no shutdownexitR2 の設定。
interface Tunnel0 ip address 10.255.0.2 255.255.255.252 tunnel source GigabitEthernet0/0 tunnel destination 203.0.113.1 tunnel mode ipsec ipv4 tunnel protection ipsec profile IPSEC-PROFILE no shutdownexittunnel source は自分側の WAN インターフェース、 tunnel destination は対向ルータの WAN IP である。
8. VPNへ向ける経路を設定する
Section titled “8. VPNへ向ける経路を設定する”対向拠点の LAN 宛通信を Tunnel インターフェースへ流す。
R1 では、拠点B LAN を Tunnel0 へ向ける。
ip route 192.168.2.0 255.255.255.0 Tunnel0R2 では、拠点A LAN を Tunnel0 へ向ける。
ip route 192.168.1.0 255.255.255.0 Tunnel0VTI 構成では、この経路制御が暗号化対象の通信を決める。crypto map 構成のような interesting traffic 用 ACL は使わない。
9. 設定を保存する
Section titled “9. 設定を保存する”R1 と R2 の両方で設定を保存する。
endwrite memoryTunnelインターフェース
Section titled “Tunnelインターフェース”show interface Tunnel0show ip interface brief | include Tunnel0期待する状態は、Tunnel0 が up/up になることである。
IKEv2 SA
Section titled “IKEv2 SA”show crypto ikev2 sa期待する状態は、対向ルータとの IKEv2 SA が READY になることである。
IPsec SA
Section titled “IPsec SA”show crypto ipsec sa確認する主な点は次のとおり。
- local crypto endpoint が自分の WAN IP になっている
- remote crypto endpoint が対向の WAN IP になっている
- encaps / decaps のカウンタが増える
- 暗号化対象の通信を流したときにパケット数が増える
R1 で確認する。
show ip route 192.168.2.0R2 で確認する。
show ip route 192.168.1.0対向 LAN 宛の経路が Tunnel0 へ向いていることを確認する。
R1 側 LAN から R2 側 LAN へ ping する。
ping 192.168.2.1 source 192.168.1.1R2 側からも逆方向を確認する。
ping 192.168.1.1 source 192.168.2.1ルータ自身から ping する場合、実際に存在する LAN 側インターフェースの IP アドレスを source に指定する。
よくある失敗
Section titled “よくある失敗”| 症状 | 確認する場所 |
|---|---|
| IKEv2 SA ができない | WAN 到達性、UDP 500 / 4500、IKEv2 proposal、profile の match identity、事前共有鍵 |
| IKEv2 SA はできるが IPsec SA ができない | transform set、IPsec profile、PFS、Tunnel インターフェースへの profile 適用 |
| SA はあるが通信できない | 対向 LAN への経路、戻り経路、ACL、NAT 除外、LAN 側のデフォルトゲートウェイ |
| encaps だけ増えて decaps が増えない | 相手側の戻り経路、相手側 IPsec 設定、途中経路のフィルタ |
| NAT 配下でつながらない | NAT-T、UDP 4500、対向の識別条件、NAT 機器のポート変換 |
通常推奨される構成
Section titled “通常推奨される構成”IOSv で再現しやすい AES-CBC-256、SHA-256、group 14、事前共有鍵を使用する。対応機器で新規構成を作る場合は、AES-GCM、明示した PRF、group 19 / 20 などの ECDH を検討する。AES-GCM では独立した integrity algorithm や ESP HMAC を組み合わせない。多数の対向を管理する環境では証明書認証も候補になる。詳細は PRFとAEAD を参照する。
- IPsecの全体像
- ESPとAH
- トランスポートモードとトンネルモード
- IKEとSA
- NAT-T
- IPsec VPN
- Cisco IOSのIPsec設定要素
- 標準ACLと拡張ACL
- Cisco機器でGRE over IPsecを設定する
- Cisco機器でIKEv1 IPsec VPNを設定する