コンテンツにスキップ

Cisco機器でGRE over IPsecを設定する

Cisco IOS / IOS XE ルータで、GRE トンネルを作成し、その GRE パケットを IKEv2 と IPsec で保護する。

GRE over IPsec では、GRE が仮想的なトンネルを作り、IPsec は GRE パケットの保護を担当する。VTI 構成との違いは 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

    gre["GRE tunnel carries routed traffic"]
    ipsec["IPsec transport mode protects GRE packets with ESP"]

    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 --> gre --> ipsec --> 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
GRE 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 同士で疎通できることを確認する。既存の NAT overload がある場合、対向 LAN 宛通信や GRE / IPsec 関連通信を NAT 対象から除外する。


flowchart TD
    subgraph grecfg["GRE configuration"]
        route["Route to remote LAN"]
        greif["Tunnel0 with mode gre ip"]
        grepacket["GRE packet"]
    end

    subgraph ike["IKEv2 configuration"]
        proposal["IKEv2 proposal / policy"]
        keyring["IKEv2 keyring / profile"]
        ikesa["IKEv2 SA"]
    end

    subgraph ipsec["IPsec protection"]
        transform["transform set with transport mode"]
        ipsecprofile["IPsec profile"]
        protection["tunnel protection"]
        esp["ESP protects GRE packet"]
    end

    route --> greif --> grepacket
    proposal --> ikesa
    keyring --> ikesa
    ikesa --> ipsecprofile
    transform --> ipsecprofile --> protection
    grepacket --> protection --> esp

GRE over IPsec では、GRE が内側の通信をカプセル化する。そのため IPsec transform set は mode transport にし、GRE パケットを ESP で保護する構成にする。


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

conf t
crypto ikev2 proposal IKEV2-PROP
encryption aes-cbc-256
integrity sha256
group 14
exit
設定 意味
crypto ikev2 proposal IKEV2-PROP IKEV2-PROP というローカル名で IKEv2 proposal を作成し、proposal の設定モードへ入る。名前自体は対向へ送られないため、両端で同じ名前にする必要はない。
encryption aes-cbc-256 IKEv2 SA の暗号化方式として、256 bit 鍵の AES-CBC を指定する。GRE パケットを暗号化する設定ではなく、IKEv2 の制御通信を保護する設定である。
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 に使う。両端では proposal 名ではなく、暗号化方式、完全性確認方式、PRF、DH グループに共通の組み合わせが必要になる。


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

crypto ikev2 policy IKEV2-POLICY
proposal IKEV2-PROP
exit

R1 では、対向の R2 を peer として登録する。

crypto ikev2 keyring IKEV2-KEYRING
peer R2
address 203.0.113.2
pre-shared-key ChangeMe-StrongKey
exit
exit

R2 では、対向の R1 を peer として登録する。

crypto ikev2 keyring IKEV2-KEYRING
peer R1
address 203.0.113.1
pre-shared-key ChangeMe-StrongKey
exit
exit

pre-shared-key ChangeMe-StrongKey は、自分の認証情報の生成と、相手から受け取った認証情報の検証に同じ PSK を使う設定である。方向ごとに異なる PSK を使う場合は、pre-shared-key local と pre-shared-key remote を分けて設定する。


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

R2 の設定。

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

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 の削除が遅れる場合がある。


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

crypto ipsec transform-set IPSEC-TS esp-aes 256 esp-sha256-hmac
mode transport
exit
設定 意味
crypto ipsec transform-set IPSEC-TS ... IPSEC-TS というローカル名で、IPsec SA が GRE パケットを保護するときの ESP アルゴリズムの組み合わせを定義する。名前は両端で同じでなくてもよいが、選ばれるアルゴリズムとモードには互換性が必要である。
esp-aes 256 ESP の暗号化方式として、256 bit 鍵の AES-CBC を使う。GRE ヘッダーと GRE が運ぶ内側のパケットを暗号化し、機密性を提供する。
esp-sha256-hmac ESP の完全性確認とデータ送信元認証に HMAC-SHA-256 を使う。改ざんを検出するための設定であり、データを暗号化する設定ではない。
mode transport GRE が作成した外側の IP ヘッダーはそのまま転送に使い、その後ろの GRE ヘッダーと内側のパケットを ESP で保護する。IPsec 自身は新しい外側 IP ヘッダーを追加しない。

GRE ですでにトンネル化しているため、IPsec は transport mode にする。IKEv2 proposal は IKEv2 SA の制御通信を保護し、この transform set は GRE パケットを運ぶ IPsec SA の実データを保護する。


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

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

7. GRE Tunnelインターフェースを作成する

Section titled “7. GRE 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 gre ip
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 gre ip
tunnel protection ipsec profile IPSEC-PROFILE
no shutdown
exit

tunnel protection ipsec profile により、GRE Tunnel に流れるパケットが IPsec profile に基づいて保護される。


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 ikev2 sa

IKEv2 SA が READY になることを確認する。

show crypto ipsec sa

GRE トンネル経由で通信を流したときに、encaps / decaps のカウンタが増えることを確認する。

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

症状 確認する場所
Tunnel0 が up にならない tunnel source / destination、WAN 疎通、GRE 到達性
IKEv2 SA ができない IKEv2 proposal、profile、keyring、UDP 500 / 4500
IPsec SA ができない transform set、transport mode、IPsec profile、tunnel protection
GRE は up だが暗号化されない Tunnel0 に IPsec profile が適用されているか、show crypto ipsec sa のカウンタ
通信が片方向になる 戻り経路、NAT 除外、ACL、対向 LAN 側のデフォルトゲートウェイ

GRE が必要ない要件なら、カプセル化の追加分が少ない VTI を優先する。GRE が必要な場合も、対応機器では IKEv2 に AES-GCM、明示した PRF、group 19 / 20 などの ECDH、IPsec に ESP AES-GCM を検討する。AES-GCM では独立した integrity algorithm や ESP HMAC を組み合わせない。詳細は PRFとAEAD を参照する。