跳转到内容
搜索文档

解决 IPsec 隧道问题

最后更新 查看 MarkdownAgent 设置

本指南帮助您诊断 IPsec 隧道问题(在 Cloudflare 仪表板中也称为连接器),从初始建立到持续运行全程覆盖。请使用以下各节来识别您的症状并找到相应的解决方案。

隧道从未建立(IKE 协商失败)

症状

  • 隧道状态显示为 Down 且始终无法正常运行
  • 无流量通过隧道
  • 隧道端点日志显示 IKE 协商错误或重传

可能的原因与解决方案

防火墙阻止 IKE 流量

您的边缘防火墙可能阻止了 IPsec 隧道建立所需的流量。请验证防火墙是否允许以下流量:

  • UDP 端口 500(IKE)
  • UDP 端口 4500(IKE NAT-T)
  • IP 协议 50(ESP)

加密参数不匹配

当第一阶段(IKE)或第二阶段(IPsec)参数在您的隧道端点与 Cloudflare 之间不匹配时,IKE 协商会失败。常见症状是设备日志中出现"no proposal chosen"错误。

请验证您的参数与 Cloudflare 支持的值是否匹配。完整列表请参阅支持的配置参数

预共享密钥(PSK)不匹配

第一阶段的身份验证失败表明 PSK 不匹配。解决方法:

  1. 前往 Connectors(连接器) 并选择您的隧道。

    Go to Connectors ↗
  2. 选择 Generate new PSK(生成新 PSK)

  3. 精确复制新 PSK,不要添加额外的空格或字符。

  4. 使用新 PSK 更新您的隧道端点。

IKE ID 格式不匹配

Cloudflare 使用 FQDN 格式作为 IKE ID。如果您的隧道端点期望不同的对等标识格式(例如 IP 地址),即使 PSK 正确,身份验证也会失败。

请确保您的隧道端点配置为接受 FQDN 对等标识。要查找隧道的 FQDN,请前往 Connectors(连接器),选择您的隧道,然后查看隧道详情。


隧道已建立但健康检查失败

症状

  • IKE 协商成功完成
  • 仪表板中隧道显示为 DownDegraded
  • 用户流量可能仍然通过隧道

可能的原因与解决方案

隧道端点启用了防重放保护

这是最常见的 IPsec 问题。防重放保护期望数据包按顺序从单个发送方到达。Cloudflare 的 anycast 架构意味着隧道流量来自数千台服务器,每台服务器都有各自的序列计数器。这会导致您的隧道端点将数据包视为乱序丢弃。

请在您的隧道端点禁用防重放保护,或将重放窗口设置为 0。详细说明请参阅防重放保护

健康检查类型与状态防火墙不兼容

有状态防火墙(如 Palo Alto Networks、Check Point、Cisco 和 Fortinet)会丢弃默认的回复健康检查数据包,因为其会话表中不存在匹配的 ICMP 请求。

请将健康检查类型从回复更改为请求。详细步骤请参阅排查隧道健康问题

ISP 阻止健康检查返回路径

对于单向健康检查,Cloudflare 通过隧道发送探测,但响应通过公共互联网返回(直接服务器返回)。如果您的 ISP 阻止了发往 Cloudflare 的 ICMP 回复数据包,即使隧道流量正常,健康检查也会失败。

如果您已启用出口流量,请考虑切换为双向健康检查,以便探测和响应都通过隧道传输。配置详情请参阅排查隧道健康问题

基于策略的 VPN 健康检查失败

如果您使用基于策略的 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 的数据包会被分片或丢弃,导致间歇性连接问题。请验证 MTU 是否设置正确——GRE 隧道通常为 1476,IPsec 隧道为 1400-1450。详细指导请参阅MTU 和 MSS


使用 IPsec 日志进行监控

使用 IPsec 日志监控 IPsec 协商的密钥交换阶段期间的隧道活动。配置 Logpush 作业,将这些日志转发至您首选的存储服务进行分析。

设置 IPsec Logpush 作业

  1. 前往 Logpush(日志推送) 页面。

    Go to Logpush ↗
  2. 选择 Create a Logpush job(创建 Logpush 作业)

  3. 选择 **IPsec logs(IPsec 日志)**作为您的数据集。

有关功能的更多信息(包括数据集中的可用字段),请参阅 Logpush 文档

抗重放保护 (Anti-replay protection)

一些客户路由器无法完全禁用 IPsec 抗重放保护,而这是 Magic Transit 最佳运行所必需的(否则 Cloudflare 边缘的数据包重新排序可能会触发错误丢弃)。

如果您的路由器不支持禁用抗重放:

  1. 检查您的路由器是否支持配置 replay window size(重放窗口大小)。将其设置为 0 等效于禁用抗重放保护。
  2. 如果既不支持禁用抗重放,也不支持将窗口大小设置为 0则该路由器无法用作 Magic Transit IPsec 接入点。请考虑改用 GRE 隧道或 Cloudflare Network Interconnect (CNI)。

使用 IPsec 时的健康检查失败

在默认的单向(DSR)配置中,Magic Transit 健康检查响应通过公共互联网传回 Cloudflare,而不是通过 IPsec 隧道。这意味着您的 ISP 或上游网络必须允许来自您前缀的健康检查响应数据包到达 Cloudflare 的 IP 范围

如果您的 ISP 拦截了这些响应数据包,即使 IPsec 隧道和数据平面正常工作,健康检查也会失败。

症状: 健康检查失败,但应用程序流量在隧道中正常流动。

解决方法: 切换到双向健康检查,该检查通过隧道发送探测和响应。双向健康检查要求为您的 Magic Transit 配置开启出站流量。有关更多信息,请参阅 隧道健康检查

这篇文档对您有帮助吗?