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 で保護する構成にする。
1. IKEv2 proposalを作成する
Section titled “1. 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 を指定する。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 グループに共通の組み合わせが必要になる。
2. IKEv2 policyを作成する
Section titled “2. IKEv2 policyを作成する”R1 と R2 の両方で設定する。
crypto ikev2 policy IKEV2-POLICY proposal IKEV2-PROPexit3. IKEv2 keyringを作成する
Section titled “3. 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を作成する”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-demandexitidentity 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を作成する”R1 と R2 の両方で設定する。
crypto ipsec transform-set IPSEC-TS esp-aes 256 esp-sha256-hmac mode transportexit| 設定 | 意味 |
|---|---|
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 の実データを保護する。
6. IPsec profileを作成する
Section titled “6. IPsec profileを作成する”R1 と R2 の両方で設定する。
crypto ipsec profile IPSEC-PROFILE set transform-set IPSEC-TS set ikev2-profile IKEV2-PROFILE set pfs group14exit7. 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 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 gre ip tunnel protection ipsec profile IPSEC-PROFILE no shutdownexittunnel protection ipsec profile により、GRE Tunnel に流れるパケットが IPsec profile に基づいて保護される。
8. VPNへ向ける経路を設定する
Section titled “8. 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 Tunnel09. 設定を保存する
Section titled “9. 設定を保存する”R1 と R2 の両方で設定を保存する。
endwrite memoryGRE Tunnel
Section titled “GRE Tunnel”show interface Tunnel0show ip interface brief | include Tunnel0Tunnel0 が up/up になることを確認する。
IKEv2 SA
Section titled “IKEv2 SA”show crypto ikev2 saIKEv2 SA が READY になることを確認する。
IPsec SA
Section titled “IPsec SA”show crypto ipsec saGRE トンネル経由で通信を流したときに、encaps / decaps のカウンタが増えることを確認する。
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 “よくある失敗”| 症状 | 確認する場所 |
|---|---|
| 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 側のデフォルトゲートウェイ |
通常推奨される構成
Section titled “通常推奨される構成”GRE が必要ない要件なら、カプセル化の追加分が少ない VTI を優先する。GRE が必要な場合も、対応機器では IKEv2 に AES-GCM、明示した PRF、group 19 / 20 などの ECDH、IPsec に ESP AES-GCM を検討する。AES-GCM では独立した integrity algorithm や ESP HMAC を組み合わせない。詳細は PRFとAEAD を参照する。