このチュートリアルでは、Cisco IOS XE と Cloudflare の間に、耐量子暗号 (PQC: Post-Quantum Cryptography) を使った安全な Internet Protocol Security (IPsec) トンネルを構築する設定例を一通り説明します。
Cisco IOS XE のインフラを Cloudflare の Anycast IPsec トンネルで接続すると、耐障害性の高い接続を実現できます。主な利点は次の 2 つです。
- 耐量子暗号: 接続は ML-KEM の耐量子暗号で保護されます。通信中のデータは「いま収集して後で復号する」(harvest-now, decrypt-later)攻撃から守られ、量子コンピューターによる将来の脅威に対しても長期的な機密性を確保できます。
- Anycast による耐障害性とグローバルリーチ: Cloudflare の分散 Anycast IP ネットワークにより、物理的に同じ場所にない、または直接接続されていないルーター同士も接続できます。トラフィックは最も近い最適な Cloudflare データセンターへ自動的にルーティングされます。アクティブ/アクティブのパス冗長、自動フェイルオーバー、高可用性を標準で備えています。
このガイドでは、このアーキテクチャの導入に必要な内容をすべて扱います。仮想トンネルインターフェイス (VTI)、耐量子パラメーターを使った IKEv2 プロファイル、診断による検証も含みます。
| 項目 | 値 |
|---|---|
| ベンダー | Cisco |
| モデル | Cisco Series 8000 Router |
| リリース | IOS-XE 26.1.1 |
| 検証日 | 2026年5月 |
| 項目 | 値 |
|---|---|
| トラフィック選択基準 | Route-Based VPN |
| ルーティング | 静的 |
| 冗長トンネル | はい |
| トンネルの負荷分散 | Active/Active |
| IKE バージョン | IKEv2 |
| 認証 | Pre-Shared Key |
| アンチリプレイ保護 | 無効 |
| NAT トラバーサル (NAT-T) | 検証済み |
| NAT-T ポート | 4500/udp |
| フェーズ 1 - DH-Group | Group 20 |
| フェーズ 1 - 暗号化 | AES-256-CBC |
| フェーズ 1 - 認証 / 完全性 | SHA-256 |
| フェーズ 2 - DH-Group | Group 20 |
| フェーズ 2 - トランスポート | ESP |
| フェーズ 2 - 暗号化 | AES-256-CBC |
| 耐量子暗号 | ML-KEM 768 |
ML-KEM は Cisco 8000 Series Secure Routers ↗ で利用できます。
手順を進めるときは、オブジェクト名と IP アドレスを実際の環境に合わせて更新してください。命名規則とネットワーク構成を揃えると、本番環境へそのまま組み込めます。次の例では 検索と置換 を使い、名前とアドレスを一括で更新して、全体の一貫性を保ってください。
| 属性 | 値 / アドレス |
|---|---|
| 名前(必須) | CF_WAN_TUN_01 |
| 説明 | --- |
| IPv4 インターフェイスアドレス(必須) | 169.254.250.0/31 |
| IPv6 インターフェイスアドレス | --- |
| カスタマーエンドポイント | 203.0.113.100 |
| Cloudflare エンドポイント | 162.159.135.1 |
| トンネルヘルスチェック | True |
| レート | Medium |
| Type | Request |
| Direction | Bidirectional |
| ターゲット | Default |
| リプレイ保護を有効にする | False |
| Automatic return routing | True |
IKE Identity と事前共有キー(トンネル作成後に取得):
| 属性 | 値 / アドレス |
|---|---|
| FQDN ID | bf6c493d03REDACTED.ipsec.cloudflare.com |
| 事前共有キー | Cloudflare-WAN-T1-PSK-1234! |
| 属性 | 値 / アドレス |
|---|---|
| 名前(必須) | CF_WAN_TUN_02 |
| 説明 | --- |
| IPv4 インターフェイスアドレス(必須) | 169.254.250.2/31 |
| IPv6 インターフェイスアドレス | --- |
| カスタマーエンドポイント | 203.0.113.100 |
| Cloudflare エンドポイント | 172.64.135.1 |
| トンネルヘルスチェック | True |
| レート | Medium |
| Type | Request |
| Direction | Bidirectional |
| ターゲット | Default |
| リプレイ保護を有効にする | False |
| Automatic return routing | True |
IKE Identity と事前共有キー(トンネル作成後に取得):
| 属性 | 値 / アドレス |
|---|---|
| FQDN ID | 0287844e9dREDACTED.ipsec.cloudflare.com |
| 事前共有キー | Cloudflare-WAN-T2-PSK-1234! |
| WAN インターフェイス | トンネル 01 / 02 | トンネル 02 / 02 |
|---|---|---|
| WAN インターフェイス | GigabitEthernet2 |
GigabitEthernet2 |
| IP アドレス | 203.0.113.100/24 |
203.0.113.100/24 |
| 仮想トンネルインターフェイス (VTI) | トンネル 01 / 02 | トンネル 02 / 02 |
|---|---|---|
| トンネルインターフェイス | Tunnel01 |
Tunnel02 |
| IP アドレス | 169.254.250.1/31 |
169.254.250.3/31 |
| LAN インターフェイス | トンネル 01 / 02 | トンネル 02 / 02 |
|---|---|---|
| LAN インターフェイス | ge-0/0/1.0 |
ge-0/0/1.0 |
| IP アドレス | 192.168.125.1/24 |
192.168.125.1/24 |
| セキュリティゾーン | trust | trust |
Cisco IOS XE で IPsec トンネルを確立する手順は次のとおりです。
- 仮想トンネルインターフェイス(トンネルごとに 1 つ)
- IKEv2 Proposal
- IKEv2 Policy
- IKEv2 Keyring(トンネルごとに 1 つ)
- IKEv2 Profile(トンネルごとに 1 つ)
- NAT-T 対応の IKEv2 Profile(任意)
- IPsec Profile(トンネルごとに 1 つ)
- IPsec Profile を仮想トンネルインターフェイスにバインドする
- ポリシーベースルーティング(推奨)
- ヘルス追跡 - IP SLA(推奨)
Cloudflare へのルーティング用に、IPsec トンネルごとに仮想トンネルインターフェイスを 1 つ追加します。
interface Tunnel1
ip address 169.254.250.1 255.255.255.254
ip proxy-arp
ip mtu 1450
ip tcp adjust-mss 1350
tunnel source 203.0.113.100
tunnel mode ipsec ipv4
tunnel destination 162.159.135.1
tunnel path-mtu-discoveryinterface Tunnel2
ip address 169.254.250.3 255.255.255.254
ip proxy-arp
ip mtu 1450
ip tcp adjust-mss 1350
tunnel source 203.0.113.100
tunnel mode ipsec ipv4
tunnel destination 172.64.135.1
tunnel path-mtu-discoveryIKEv2 フェーズ 1 のネゴシエーションのために、次を設定します。
- IKEv2 Proposal
- IKEv2 Policy
- IKEv2 Keyring(Cloudflare WAN IPsec トンネルごとに 1 つ必要)
- IKEv2 Profile(Cloudflare WAN IPsec トンネルごとに 1 つ必要)
IKEv2 Proposal を次のように定義します。
crypto ikev2 proposal CF_WAN_IKEV2_PROP
pqc mlkem768
encryption aes-cbc-256
prf sha512 sha384 sha256
group 20
exitトンネルごとに IKEv2 Policy を 1 つ設定します。
crypto ikev2 policy CF_WAN_IKEV2_POL
match fvrf any
proposal CF_WAN_IKEV2_PROP
exitトンネルごとにキーリングを 1 つ追加します。
crypto ikev2 keyring CF_WAN_TUN_01_IKEV2_KEYRING
peer CF_WAN_TUN_01_IKEV2_PEER
address 162.159.135.1
pre-shared-key 0 Cloudflare-WAN-T1-PSK-1234!
exitcrypto ikev2 keyring CF_WAN_TUN_02_IKEV2_KEYRING
peer CF_WAN_TUN_02_IKEV2_PEER
address 172.64.135.1
pre-shared-key 0 Cloudflare-WAN-T2-PSK-1234!
exitトンネルごとに IKEv2 Profile を 1 つ設定します。
crypto ikev2 profile CF_WAN_TUN_01_IKEV2_PROF
match identity remote address 162.159.135.1 255.255.255.255
identity local fqdn bf6c493d03REDACTED.ipsec.cloudflare.com
authentication remote pre-share
authentication local pre-share
keyring local CF_WAN_TUN_01_IKEV2_KEYRING
no config-exchange request
exitcrypto ikev2 profile CF_WAN_TUN_02_IKEV2_PROF
match identity remote address 172.64.135.1 255.255.255.255
identity local fqdn 0287844e9dREDACTED.ipsec.cloudflare.com
authentication remote pre-share
authentication local pre-share
keyring local CF_WAN_TUN_02_IKEV2_KEYRING
no config-exchange request
exitCisco IOS XE デバイスの WAN インターフェイスが、ネットワークアドレス変換 (NAT) を行う機器の背後にある場合は、crypto ikev2 profile の下に nat force-encap を追加すると、IKE フェーズ 1 で UDP ポート 4500 を強制できます。
標準の NAT-T フロー(UDP ポート 500 から開始し、NAT 検出後に UDP ポート 4500 へ切り替える)ではなく、カプセル化を強制したい場合にのみ必要です。
crypto ikev2 profile CF_WAN_TUN_01_IKEV2_PROF
match identity remote address 162.159.135.1 255.255.255.255
identity local fqdn bf6c493d03REDACTED.ipsec.cloudflare.com
authentication remote pre-share
authentication local pre-share
keyring local CF_WAN_TUN_01_IKEV2_KEYRING
no config-exchange request
nat force-encap
exitcrypto ikev2 profile CF_WAN_TUN_02_IKEV2_PROF
match identity remote address 172.64.135.1 255.255.255.255
identity local fqdn 0287844e9dREDACTED.ipsec.cloudflare.com
authentication remote pre-share
authentication local pre-share
keyring local CF_WAN_TUN_02_IKEV2_KEYRING
no config-exchange request
nat force-encap
exitトンネルごとに IPsec Profile を 1 つ追加します。
crypto ipsec profile CF_WAN_TUN_01_IPSEC_PROF
set security-association lifetime kilobytes disable
set security-association replay disable
set pfs group20
set ikev2-profile CF_WAN_TUN_01_IKEV2_PROF
exitcrypto ipsec profile CF_WAN_TUN_02_IPSEC_PROF
set security-association lifetime kilobytes disable
set security-association replay disable
set pfs group20
set ikev2-profile CF_WAN_TUN_02_IKEV2_PROF
exitIPsec プロファイルを対応する仮想トンネルインターフェイスにバインドして、IPsec トンネルを確立します。
interface Tunnel1
tunnel protection ipsec profile CF_WAN_TUN_01_IPSEC_PROF
exitinterface Tunnel2
tunnel protection ipsec profile CF_WAN_TUN_02_IPSEC_PROF
exitルーターがグローバルルーティングテーブル上の既存のデフォルトルートを維持する必要がある場合に、この節を使います。たとえば、IPsec アンダーレイの到達性を保つ場合や、LAN 以外のトラフィックを扱う場合です。この方法では、グローバルのデフォルトルートはそのままに、特定の送信元サブネットだけを 2 本の Cloudflare WAN トンネルへ送れます。
Cloudflare をグローバルのデフォルトルートにできる構成なら、グローバルテーブルに等コストの静的デフォルトルートを 2 本置く、より単純な設計にできます。その場合、この節は不要です。
この例では、ルーターはすでにグローバルテーブルのデフォルトルートを、IPsec アンダーレイの到達性と LAN 以外のトラフィックに使っています。192.168.125.0/24 を送信元とするトラフィックだけを Tunnel1 と Tunnel2 へ送るには、ポリシーベースルーティング (PBR) でその送信元サブネットを照合し、一致したトラフィックを専用 VRF へ転送します。その VRF 内に、各トンネル向けの等コスト静的デフォルトルートを 2 本設定します。その後、CEF がフロー単位で両トンネルに負荷分散します。
ip vrf CF_WAN_PBR_VRF
exitip route vrf CF_WAN_PBR_VRF 0.0.0.0 0.0.0.0 169.254.250.0 global track 1
ip route vrf CF_WAN_PBR_VRF 0.0.0.0 0.0.0.0 169.254.250.2 global track 2ip access-list extended CF_WAN_PBR_ALL
permit ip 192.168.125.0 0.0.0.255 anyroute-map CF_WAN_PBR_RM permit 10
match ip address CF_WAN_PBR_ALL
set vrf CF_WAN_PBR_VRF
exitLAN インターフェイスに割り当てた IP アドレスが 192.168.125.1/24 の場合:
interface GigabitEthernet1
description LAN interface
ip address 192.168.125.1 255.255.255.0
ip policy route-map CF_WAN_PBR_RM負荷分散アルゴリズムを universal に設定します。
ip cef load-sharing algorithm universal前述の PBR と VRF ベースの ECMP 設計では、対応するトンネルインターフェイスのラインプロトコルが up である限り、両方の静的デフォルトルートが CF_WAN_PBR_VRF にインストールされます。
Cisco IOS XE では、仮想トンネルインターフェイス (VTI) の up/up は、配下の IKE / IPsec セキュリティアソシエーションの状態ではなく、トンネルの送信元と宛先の設定に基づきます。そのため、IKE / IPsec の SA が失敗していても、ルーティングテーブル上ではトンネルが利用可能に見えることがあります。この状態では、CEF が障害トンネルへトラフィックをハッシュし続け、一部のフローが静かに破棄されることがあります。
これを防ぐには、トンネルごとに IP SLA の icmp-echo プローブを設定します。送信元はローカル VTI アドレス、宛先は対向のトンネル IP アドレスです。プローブが応答を受け取れなくなると、関連する track オブジェクトが down になり、対応する静的ルートが VRF 転送テーブルから削除されます。
その後、CEF はそのパスを ECMP セットから外し、照合されたトラフィックはすべて残りの健全なトンネルへ移ります。障害トンネルが復旧するとプローブが成功し、track オブジェクトが up に戻り、ルートが再インストールされ、トラフィックは再び両トンネルに自動で分散されます。
Tunnel1 の送信元 IP 169.254.250.1、宛先 IP 169.254.250.0 で IP SLA プローブ(タイプ icmp-echo)を作成し、5 秒ごとにプローブを送信します。
ip sla 1
icmp-echo 169.254.250.0 source-interface Tunnel1
frequency 5
ip sla schedule 1 life forever start-time nowTunnel2 の送信元 IP 169.254.250.3、宛先 IP 169.254.250.2 で IP SLA プローブ(タイプ icmp-echo)を作成し、5 秒ごとにプローブを送信します。
ip sla 2
icmp-echo 169.254.250.2 source-interface Tunnel2
frequency 5
ip sla schedule 2 life forever start-time now次の track オブジェクトは、短時間のパケット損失を吸収し、一時的な事象でのルートフラップを防ぎます。
track 1 ip sla 1 reachability
delay down 3 up 3track 2 ip sla 2 reachability
delay down 3 up 3- IKE(フェーズ 1)セキュリティアソシエーションの詳細を表示します。
show crypto ikev2 sa detailed IPv4 Crypto IKEv2 SA
Tunnel-id Local Remote fvrf/ivrf Status
1 203.0.113.100/500 162.159.135.1/500 none/none READY
Encr: AES-GCM, keysize: 256, PRF: SHA512, Hash: None, DH Grp:20, Auth sign: PSK, Auth verify: PSK
PQC Key Exchange: ML-KEM-768
Life/Active Time: 86400/501 sec
CE id: 0, Session-id: 3
Local spi: 9BEA9E397377D9BB Remote spi: 0830302A3CD0A874
Status Description: Negotiation done
Local id: bf6c493d03REDACTED.ipsec.cloudflare.com
Remote id: 162.159.135.1
Local req msg id: 3 Remote req msg id: 0
Local next msg id: 3 Remote next msg id: 0
Local req queued: 3 Remote req queued: 0
Local window: 20 Remote window: 1
DPD configured for 0 seconds, retry 0
IETF Std Fragmentation enabled.
Quantum-safe Encryption using PQC: ML-KEM-768
Dynamic Route Update: disabled
IETF Std Fragmentation MTU in use: 1372 bytes.
Extended Authentication not configured.
NAT-T is detected inside
Cisco Trust Security SGT is disabled
Initiator of SA : Yes
PEER TYPE: Other- セキュリティアソシエーションをクリアします。
clear crypto session remote <peer-ip-address>IPsec トンネルを再起動する別の方法は、shutdown と no shutdown でトンネルインターフェイスを管理上の無効化と再有効化することです。
int Tunnel1
shutdown
no shutdownint Tunnel2
shutdown
no shutdown- ルートマップの詳細を表示します。カウンターが増えていることを確認し、トラフィックがポリシー(
CF_WAN_PBR_ALL)に一致しているかを判断します。
show route-map CF_WAN_PBR_RMroute-map CF_WAN_PBR_RM, permit, sequence 10
Match clauses:
ip address (access-lists): CF_WAN_PBR_ALL
Set clauses:
vrf CF_WAN_PBR_VRF
Policy routing matches: 12077 packets, 4639582 bytes- VRF(
CF_WAN_PBR_VRF)内のルートを一覧表示します。
show ip route vrf CF_WAN_PBR_VRF
Routing Table: CF_WAN_PBR_VRF
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, m - OMP
n - NAT, Ni - NAT inside, No - NAT outside, Nd - NAT DIA
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
H - NHRP, G - NHRP registered, g - NHRP registration summary
o - ODR, P - periodic downloaded static route, l - LISP
a - application route
+ - replicated route, % - next hop override, p - overrides from PfR
& - replicated local route overrides by connected
Gateway of last resort is 169.254.244.6 to network 0.0.0.0
S* 0.0.0.0/0 [1/0] via 169.254.250.0
[1/0] via 169.254.250.2- CEF テーブルで
0.0.0.0/0に一致するルートを一覧表示します。
show ip cef vrf CF_WAN_PBR_VRF 0.0.0.0/00.0.0.0/0
nexthop 169.254.250.0 Tunnel1
nexthop 169.254.250.2 Tunnel2trackオブジェクトの状態を表示します。
show track briefTrack Type Instance Parameter State Last Change
1 ip sla 1 reachability Up 00:15:13
2 ip sla 2 reachability Up 01:16:08- IP SLA の統計を表示します。
show ip sla statisticsIPSLAs Latest Operation Statistics
IPSLA operation id: 1
Latest RTT: 6 milliseconds
Latest operation start time: 15:23:03 CDT Mon Jun 1 2026
Latest operation return code: OK
Number of successes: 380
Number of failures: 1
Operation time to live: Forever
IPSLA operation id: 2
Latest RTT: 6 milliseconds
Latest operation start time: 15:23:00 CDT Mon Jun 1 2026
Latest operation return code: OK
Number of successes: 376
Number of failures: 0
Operation time to live: Foreverフェイルオーバーを検証するには、一方のトンネルインターフェイスを管理上シャットダウンするか、一方のトンネルパスで ICMP をブロックします。数秒以内に対象の track が Down に遷移し、対応するルートが CF_WAN_PBR_VRF から削除され、残りのトンネルがすべての LAN トラフィックを運びます。トンネルを復旧すると、変更は自動で元に戻ります。
- Release Notes for Cisco 8000 Series Secure Routers, Release 26.1.x ↗
- Understanding Quantum-Safe Encryption on Cisco IOS XE Platforms ↗
- Configuring Quantum-Safe Encryption Using Postquantum Keys - Cisco IOS XE 17.x ↗
- Security and VPN Configuration Guide - Cisco IOS XE 17.x ↗
- IPsec Virtual Tunnel Interfaces - Cisco IOS XE 17.x ↗
- Configuring Security for VPNs with IPsec - Cisco IOS XE 17.x ↗