コンテンツにスキップ

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 で定義する。


R1 と R2 の両方で設定する。

conf t
crypto isakmp policy 10
encr aes 256
hash sha256
authentication pre-share
group 14
lifetime 86400
exit
設定 意味
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 address

R1 では、対向の R2 に対する事前共有鍵を設定する。

crypto isakmp key ChangeMe-StrongKey address 203.0.113.2

R2 では、対向の R1 に対する事前共有鍵を設定する。

crypto isakmp key ChangeMe-StrongKey address 203.0.113.1

R1 と R2 の両方で設定する。

crypto isakmp keepalive 10 3 periodic

DPD により、対向が応答しない状態を検出しやすくする。


R1 と R2 の両方で設定する。

crypto ipsec transform-set IPSEC-TS esp-aes 256 esp-sha256-hmac
mode tunnel
exit
設定 意味
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 側の方式を定義する。


R1 と R2 の両方で設定する。

crypto ipsec profile IPSEC-PROFILE
set transform-set IPSEC-TS
set pfs group14
exit

この 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 shutdown
exit

R2 の設定。

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 shutdown
exit

R1 では、拠点B LAN を Tunnel0 へ向ける。

ip route 192.168.2.0 255.255.255.0 Tunnel0

R2 では、拠点A LAN を Tunnel0 へ向ける。

ip route 192.168.1.0 255.255.255.0 Tunnel0

R1 と R2 の両方で設定を保存する。

end
write memory

show interface Tunnel0
show ip interface brief | include Tunnel0

Tunnel0 が up/up になることを確認する。

show crypto isakmp sa

期待する状態は、対向ルータとの ISAKMP SA が QM_IDLE になることである。

show crypto ipsec sa

対向 LAN 宛通信を流したときに、encaps / decaps のカウンタが増えることを確認する。

R1 で確認する。

show ip route 192.168.2.0
ping 192.168.2.1 source 192.168.1.1

R2 で確認する。

show ip route 192.168.1.0
ping 192.168.1.1 source 192.168.2.1

症状 確認する場所
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

新規構成では IKEv2 の手順を使う。対応機器では AES-GCM、明示した PRF、十分な強度の DH / ECDH グループを検討し、管理された環境では事前共有鍵だけでなく証明書認証も候補にする。利用できる方式は IOS / IOS XE のバージョンと対向機器に依存するため、実機の ? 出力で対応状況を確認する。