本指南帮助您诊断 IPsec 隧道问题(在 Cloudflare 仪表板中也称为连接器),从初始建立到持续运行全程覆盖。请使用以下各节来识别您的症状并找到相应的解决方案。
- 隧道状态显示为
Down且始终无法正常运行 - 无流量通过隧道
- 隧道端点日志显示 IKE 协商错误或重传
您的边缘防火墙可能阻止了 IPsec 隧道建立所需的流量。请验证防火墙是否允许以下流量:
- UDP 端口
500(IKE) - UDP 端口
4500(IKE NAT-T) - IP 协议
50(ESP)
当第一阶段(IKE)或第二阶段(IPsec)参数在您的隧道端点与 Cloudflare 之间不匹配时,IKE 协商会失败。常见症状是设备日志中出现"no proposal chosen"错误。
请验证您的参数与 Cloudflare 支持的值是否匹配。完整列表请参阅支持的配置参数。
第一阶段的身份验证失败表明 PSK 不匹配。解决方法:
-
前往 Connectors(连接器) 并选择您的隧道。
Go to Connectors ↗ -
选择 Generate new PSK(生成新 PSK)。
-
精确复制新 PSK,不要添加额外的空格或字符。
-
使用新 PSK 更新您的隧道端点。
Cloudflare 使用 FQDN 格式作为 IKE ID。如果您的隧道端点期望不同的对等标识格式(例如 IP 地址),即使 PSK 正确,身份验证也会失败。
请确保您的隧道端点配置为接受 FQDN 对等标识。要查找隧道的 FQDN,请前往 Connectors(连接器),选择您的隧道,然后查看隧道详情。
- IKE 协商成功完成
- 仪表板中隧道显示为
Down或Degraded - 用户流量可能仍然通过隧道
这是最常见的 IPsec 问题。防重放保护期望数据包按顺序从单个发送方到达。Cloudflare 的 anycast 架构意味着隧道流量来自数千台服务器,每台服务器都有各自的序列计数器。这会导致您的隧道端点将数据包视为乱序丢弃。
请在您的隧道端点禁用防重放保护,或将重放窗口设置为 0。详细说明请参阅防重放保护。
有状态防火墙(如 Palo Alto Networks、Check Point、Cisco 和 Fortinet)会丢弃默认的回复健康检查数据包,因为其会话表中不存在匹配的 ICMP 请求。
请将健康检查类型从回复更改为请求。详细步骤请参阅排查隧道健康问题。
对于单向健康检查,Cloudflare 通过隧道发送探测,但响应通过公共互联网返回(直接服务器返回)。如果您的 ISP 阻止了发往 Cloudflare 的 ICMP 回复数据包,即使隧道流量正常,健康检查也会失败。
如果您已启用出口流量,请考虑切换为双向健康检查,以便探测和响应都通过隧道传输。配置详情请参阅排查隧道健康问题。
如果您使用基于策略的 VPN(流量选择器定义了特定前缀而非 0.0.0.0/0),回复型健康检查将无法工作。回复型健康检查自寻址到 Cloudflare IP 地址,这些地址不在您的隧道流量选择器范围内。
请改用请求型健康检查。在您的隧道端点上配置回环地址作为健康检查目标。该目标必须可路由,并且必须在隧道的流量选择器(加密域)范围内。更多详情请参阅排查隧道健康问题。
- 隧道在健康和不健康状态之间交替切换
- 隧道上出现间歇性丢包
- 流量工作一段时间后在无任何配置变更的情况下中断
Cloudflare 的 anycast 架构意味着数据包来自许多具有不同序列计数器的服务器。防重放保护将此解读为重放攻击并间歇性丢弃数据包。
请在您的隧道端点禁用防重放保护,或将重放窗口设置为 0。详细说明请参阅防重放保护。
当您的隧道端点发起 IPsec 重协商时,新的安全关联(SA)必须在 Cloudflare 的网络中传播。重协商传播延迟已大幅减少,在大多数部署中不常见。但在某些配置中,重协商期间仍可能出现短暂的隧道降级。
Cloudflare 从不主动发起重协商,只响应重协商请求。所有重协商尝试都必须来自您的隧道端点。如果您的设备在重协商时收到 TEMPORARY_FAILURE 响应,请配置死亡对等体检测(DPD),并将其操作设置为"重启",以便设备自动重新建立 IKE 会话。若没有 DPD 重启功能,设备可能陷入重协商失败的死循环。
为将重协商的影响降至最低,请增加隧道端点上的 SA 生存时间以减少重协商频率。IKE SA 常见值为 8-24 小时,IPsec SA 为 1-8 小时。更多详情请参阅排查隧道健康问题。
超出隧道 MTU 的数据包会被分片或丢弃,导致间歇性连接问题。请验证 MTU 是否设置正确——GRE 隧道通常为 1476,IPsec 隧道为 1400-1450。详细指导请参阅MTU 和 MSS。
使用 IPsec 日志监控 IPsec 协商的密钥交换阶段期间的隧道活动。配置 Logpush 作业,将这些日志转发至您首选的存储服务进行分析。
-
前往 Logpush(日志推送) 页面。
Go to Logpush ↗ -
选择 Create a Logpush job(创建 Logpush 作业)。
-
选择 **IPsec logs(IPsec 日志)**作为您的数据集。
有关功能的更多信息(包括数据集中的可用字段),请参阅 Logpush 文档。
一些客户路由器无法完全禁用 IPsec 抗重放保护,而这是 Magic Transit 最佳运行所必需的(否则 Cloudflare 边缘的数据包重新排序可能会触发错误丢弃)。
如果您的路由器不支持禁用抗重放:
- 检查您的路由器是否支持配置 replay window size(重放窗口大小)。将其设置为
0等效于禁用抗重放保护。 - 如果既不支持禁用抗重放,也不支持将窗口大小设置为
0,则该路由器无法用作 Magic Transit IPsec 接入点。请考虑改用 GRE 隧道或 Cloudflare Network Interconnect (CNI)。
在默认的单向(DSR)配置中,Magic Transit 健康检查响应通过公共互联网传回 Cloudflare,而不是通过 IPsec 隧道。这意味着您的 ISP 或上游网络必须允许来自您前缀的健康检查响应数据包到达 Cloudflare 的 IP 范围 ↗。
如果您的 ISP 拦截了这些响应数据包,即使 IPsec 隧道和数据平面正常工作,健康检查也会失败。
症状: 健康检查失败,但应用程序流量在隧道中正常流动。
解决方法: 切换到双向健康检查,该检查通过隧道发送探测和响应。双向健康检查要求为您的 Magic Transit 配置开启出站流量。有关更多信息,请参阅 隧道健康检查。