Cisco機器でIKEv1 IPsec VPNを設定する
Cisco IOS / IOS XE ルータで、IKEv1 と IPsec VTI を使った拠点間 VPN を設定する。
IKEv1 では、IKEv2 の proposal、policy、keyring、profile とは違い、主に crypto isakmp policy と crypto isakmp key で Phase 1 を設定する。対応関係は Cisco IOSのIPsec設定要素 を参照する。
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: IKEv1 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側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バージョン | IKEv1 | IKEv1 |
| 認証方式 | 事前共有鍵 | 事前共有鍵 |
| 事前共有鍵 | ChangeMe-StrongKey |
ChangeMe-StrongKey |
事前に、R1 と R2 の WAN IP 同士で疎通できることを確認する。既存の NAT overload がある場合、対向 LAN 宛通信を NAT 対象から除外する。
flowchart TD
subgraph ikev1["IKEv1 Phase 1"]
policy["ISAKMP policy: encryption, hash, authentication, DH"]
key["ISAKMP key: peer pre-shared key"]
isakmpsa["ISAKMP SA"]
end
subgraph ipsec["IPsec Phase 2"]
transform["IPsec transform set"]
ipsecprofile["IPsec profile"]
tunnelif["Tunnel0 with mode ipsec ipv4"]
route["Route to remote LAN"]
end
policy --> isakmpsa
key --> isakmpsa
isakmpsa --> ipsecprofile
transform --> ipsecprofile --> tunnelif
route --> tunnelif
IKEv1 の crypto isakmp policy は Phase 1 用であり、実データを守る IPsec 側の方式は crypto ipsec transform-set で定義する。
1. ISAKMP policyを作成する
Section titled “1. ISAKMP policyを作成する”R1 と R2 の両方で設定する。
conf tcrypto isakmp policy 10 encr aes 256 hash sha256 authentication pre-share group 14 lifetime 86400exit| 設定 | 意味 |
|---|---|
crypto isakmp policy 10 |
優先度 10 の ISAKMP policy を作成し、IKEv1 Phase 1 の設定モードへ入る。数値が小さい policy から順に評価される。policy 番号はローカルな優先度なので、両端で同じ番号にする必要はない。 |
encr aes 256 |
ISAKMP SA の暗号化方式として、256 bit 鍵の AES-CBC を指定する。保護するのは IKEv1 の制御通信であり、VPN を通る実データではない。 |
hash sha256 |
IKEv1 メッセージの完全性確認や鍵生成で使うハッシュ方式として SHA-256 を指定する。対向ルータの認証方法は次の authentication で別に指定する。 |
authentication pre-share |
対向ルータの認証に事前共有鍵を使う。実際の鍵と対向アドレスは crypto isakmp key で設定する。 |
group 14 |
ISAKMP SA の鍵素材を作る Diffie-Hellman 鍵交換に、2048 bit MODP group 14 を使う。 |
lifetime 86400 |
ISAKMP SA の有効時間を 86400 秒にする。有効時間が終わると、新しい鍵で SA を再確立する。 |
この設定は IKEv1 Phase 1 の条件である。両端では policy 番号ではなく、暗号化方式、ハッシュ方式、認証方式、DH グループに互換性が必要になる。
2. ISAKMP identityと事前共有鍵を設定する
Section titled “2. ISAKMP identityと事前共有鍵を設定する”R1 と R2 の両方で、ISAKMP の識別子に IP アドレスを使う。
crypto isakmp identity addressR1 では、対向の R2 に対する事前共有鍵を設定する。
crypto isakmp key ChangeMe-StrongKey address 203.0.113.2R2 では、対向の R1 に対する事前共有鍵を設定する。
crypto isakmp key ChangeMe-StrongKey address 203.0.113.13. DPDを設定する
Section titled “3. DPDを設定する”R1 と R2 の両方で設定する。
crypto isakmp keepalive 10 3 periodicDPD により、対向が応答しない状態を検出しやすくする。
4. IPsec transform setを作成する
Section titled “4. 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 というローカル名で、IKEv1 Phase 2 で確立する IPsec SA の ESP アルゴリズムを定義する。名前は両端で同じでなくてもよいが、選ばれるアルゴリズムとモードには互換性が必要である。 |
esp-aes 256 |
ESP の暗号化方式として、256 bit 鍵の AES-CBC を使い、実データの機密性を提供する。 |
esp-sha256-hmac |
ESP の完全性確認とデータ送信元認証に HMAC-SHA-256 を使う。改ざんを検出するための設定であり、データを暗号化する設定ではない。 |
mode tunnel |
元の IP パケット全体を ESP で保護し、その外側に新しい IP ヘッダーを付ける。外側の IP ヘッダーは暗号化されず、転送に使われる。 |
ISAKMP policy 内の AES / SHA-256 は ISAKMP SA を保護し、transform set 内の esp-aes / esp-sha256-hmac は IPsec SA を通る実データを保護する。transform set は IKEv1 Phase 2 側の方式を定義する。
5. IPsec profileを作成する
Section titled “5. IPsec profileを作成する”R1 と R2 の両方で設定する。
crypto ipsec profile IPSEC-PROFILE set transform-set IPSEC-TS set pfs group14exitこの IPsec profile を Tunnel インターフェースへ適用する。
6. Tunnelインターフェースを作成する
Section titled “6. Tunnelインターフェースを作成する”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 shutdownexit7. VPNへ向ける経路を設定する
Section titled “7. VPNへ向ける経路を設定する”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 Tunnel08. 設定を保存する
Section titled “8. 設定を保存する”R1 と R2 の両方で設定を保存する。
endwrite memoryTunnelインターフェース
Section titled “Tunnelインターフェース”show interface Tunnel0show ip interface brief | include Tunnel0Tunnel0 が up/up になることを確認する。
IKEv1 Phase 1
Section titled “IKEv1 Phase 1”show crypto isakmp sa期待する状態は、対向ルータとの ISAKMP SA が QM_IDLE になることである。
IPsec SA
Section titled “IPsec SA”show crypto ipsec sa対向 LAN 宛通信を流したときに、encaps / decaps のカウンタが増えることを確認する。
R1 で確認する。
show ip route 192.168.2.0ping 192.168.2.1 source 192.168.1.1R2 で確認する。
show ip route 192.168.1.0ping 192.168.1.1 source 192.168.2.1よくある失敗
Section titled “よくある失敗”| 症状 | 確認する場所 |
|---|---|
| ISAKMP SA ができない | WAN 到達性、UDP 500、ISAKMP policy、事前共有鍵、identity |
MM_NO_STATE で止まる |
対向到達性、フィルタ、peer address、NAT |
MM_KEY_EXCH 付近で止まる |
DH グループ、事前共有鍵、認証方式 |
| ISAKMP SA はできるが IPsec SA ができない | transform set、PFS、IPsec profile、Tunnel への適用 |
| encaps だけ増えて decaps が増えない | 戻り経路、対向側 IPsec 設定、NAT 除外、ACL |
通常推奨される構成
Section titled “通常推奨される構成”新規構成では IKEv2 の手順を使う。対応機器では AES-GCM、明示した PRF、十分な強度の DH / ECDH グループを検討し、管理された環境では事前共有鍵だけでなく証明書認証も候補にする。利用できる方式は IOS / IOS XE のバージョンと対向機器に依存するため、実機の ? 出力で対応状況を確認する。