本教程提供了一个全面的配置示例,用于在 Cisco IOS XE 与 Cloudflare 之间使用后量子密码学 (PQC) 建立安全 Internet Protocol Security (IPsec) 隧道。
将您的 Cisco IOS XE 基础设施与 Cloudflare Anycast IPsec 隧道互联,可提供具有两大核心优势的高弹性连接解决方案:
- 后量子加密:您的连接受到 ML-KEM 后量子加密的保护,可防范“先收集、后解密”的在途数据攻击,针对新兴的量子计算威胁提供长期机密性。
- 基于 Anycast 的弹性和全球覆盖:Cloudflare 分布式 Anycast IP 网络允许您互联物理上未同处一地或未直接链接的路由器,从而简化了您的架构。流量会自动路由到最近且最优的 Cloudflare 数据中心,提供内置的主动/主动路径冗余、自动故障转移和高可用性。
本指南涵盖了部署该架构所需的一切内容,包括虚拟隧道接口 (VTI)、利用量子安全参数的 IKEv2 配置集 (Profiles) 以及诊断验证。
| 字段 | 值 |
|---|---|
| 厂商 | Cisco |
| 型号 | Cisco Series 8000 Router |
| 版本 | IOS-XE 26.1.1 |
| 测试日期 | 2026 年 5 月 |
| 字段 | 值 |
|---|---|
| 流量选择标准 | 基于路由的 VPN |
| 路由 | 静态 |
| 冗余隧道 | 是 |
| 隧道负载均衡 | 主动/主动 |
| IKE 版本 | IKEv2 |
| 身份验证 | 预共享密钥 |
| 防重放保护 | 已禁用 |
| NAT 穿越 (NAT-T) | 已验证 |
| NAT-T 端口 | 4500/udp |
| 阶段 1 - DH 组 | 组 20 |
| 阶段 1 - 加密 | AES-256-CBC |
| 阶段 1 - 身份验证/完整性 | SHA-256 |
| 阶段 2 - DH 组 | 组 20 |
| 阶段 2 - 传输 | ESP |
| 阶段 2 - 加密 | AES-256-CBC |
| 后量子密码学 | ML-KEM 768 |
Cisco 8000 系列安全路由器 ↗支持 ML-KEM。
在执行这些步骤时,请确保更新任何对象名称和 IP 地址以匹配您的环境。使这些元素与您的实际命名规范和网络方案保持一致,可确保配置与您的生产设置无缝集成。在下面的示例中使用查找和替换来更新名称和地址,从而在整个过程中保持一致性。
| 属性 | 值/地址 |
|---|---|
| 名称(必填) | CF_WAN_TUN_01 |
| 描述 | --- |
| IPv4 接口地址(必填) | 169.254.250.0/31 |
| IPv6 接口地址 | --- |
| 客户方端点 | 203.0.113.100 |
| Cloudflare 端点 | 162.159.135.1 |
| 隧道健康检查 | 是 |
| 速率 | Medium |
| 类型 | Request(请求) |
| 方向 | Bidirectional(双向) |
| 目标 | 默认 |
| 开启重放保护 | 否 |
| 自动回程路由 | 是 |
IKE 身份和预共享密钥(创建隧道后获取):
| 属性 | 值/地址 |
|---|---|
| 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 |
| 隧道健康检查 | 是 |
| 速率 | Medium |
| 类型 | Request(请求) |
| 方向 | Bidirectional(双向) |
| 目标 | 默认 |
| 开启重放保护 | 否 |
| 自动回程路由 | 是 |
IKE 身份和预共享密钥(创建隧道后获取):
| 属性 | 值/地址 |
|---|---|
| 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 |
| Virtual Tunnel Interface (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 隧道的流程包含以下步骤:
- 虚拟隧道接口(每个隧道一个)
- IKEv2 提议 (IKEv2 Proposal)
- IKEv2 策略 (IKEv2 Policy)
- IKEv2 密钥环 (IKEv2 Keyring)(每个隧道一个)
- IKEv2 配置集 (IKEv2 Profile)(每个隧道一个)
- 支持 NAT-T 的 IKEv2 配置集(可选)
- IPsec 配置集 (IPsec Profile)(每个隧道一个)
- 将 IPsec 配置集绑定到虚拟隧道接口
- 基于策略的路由(推荐)
- 健康追踪 - IP SLA(推荐)
每个 IPsec 隧道添加一个虚拟隧道接口,以促进到 Cloudflare 的路由。
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-discovery配置以下内容以促进 IKEv2 阶段 1 协商:
- IKEv2 提议、策略、密钥环、配置集。
如下定义 IKEv2 提议:
crypto ikev2 proposal CF_WAN_IKEV2_PROP
pqc mlkem768
encryption aes-cbc-256
prf sha512 sha384 sha256
group 20
exit为每条隧道配置一个 IKEv2 策略:
crypto ikev2 policy CF_WAN_IKEV2_POL
match fvrf any
proposal CF_WAN_IKEV2_PROP
exit每个隧道添加一个密钥环:
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 配置集:
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
exit如果 Cisco 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 配置集:
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
exit将 IPsec 配置集绑定到相应的虚拟隧道接口,以实例化 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 底层(underlay)可达性或支持其他 non-LAN 流量),请使用本节配置。此方法允许您仅引导特定的源子网穿越两条 Cloudflare WAN 隧道,同时保持全局默认路由不变。
如果您的部署可以使用 Cloudflare 作为全局默认路由,您可以使用在全局表中使用两个等值静态默认路由的更简单设计。在这种情况下,不需要本节。
在此示例中,路由器已经使用全局表默认路由以进行 IPsec 底层可达性和其他非 LAN 流量。为了仅将源自 192.168.125.0/24 的流量发送到 Tunnel1 和 Tunnel2,请配置基于策略的路由 (PBR) 以匹配该源子网,并将匹配的流量转发到专用 VRF。在该 VRF 内,配置两个等值的静态默认路由——每个隧道各一个。然后,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
exit假设分配给 LAN 接口的 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只要在相应的隧道接口上线路线路协议为 up,上述 PBR 和基于 VRF 的 ECMP 设计就会在 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,路由重新安装,流量将再次自动平衡穿越两条隧道。
实例化一个 IP SLA 探测(类型为 icmp-echo),其 Tunnel1 源 IP 为 169.254.250.1,目的 IP 为 169.254.250.0——每五秒发送一次探测:
ip sla 1
icmp-echo 169.254.250.0 source-interface Tunnel1
frequency 5
ip sla schedule 1 life forever start-time now实例化一个 IP SLA 探测(类型为 icmp-echo),其 Tunnel2 源 IP 为 169.254.250.3,目的 IP 为 169.254.250.2——每五秒发送一次探测:
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- 显示 Route Map 详情。确保计数器递增,以确认流量是否匹配策略 (
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 Tunnel2- 显示
track对象状态:
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要验证故障转移,对一条隧道接口执行管理性 shut,或者阻断其中一条隧道路径的 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 ↗