潜在解决方案:
- 从 Magic Transit 前缀运行 traceroute 到 Internet 上的目标 IP。
- 在你的 CPE 上验证没有会丢弃此流量的 uRPF 严格模式或防欺骗机制。
- 确认你的 CPE 没有强制执行可能丢弃此流量的 uRPF 严格模式或其他防欺骗机制。如果是这样,要求他们将其更改为松散模式 (loose mode)。
- 其他变通方法:
- 如果你有一个不太具体的 IP 前缀,那么可以继续将其通告给你的 ISP,同时 Cloudflare 通告更具体的 IP 前缀。例如,Cloudflare 向 Internet 通告一个
/24前缀;你向你的 ISP 通告其父级/23前缀。 - 你可以继续向你的 ISP 通告
/24前缀,但不建议这样做,因为来自 ISP 的入站流量会绕过 Cloudflare,从而无法从 Magic Transit DDoS 防护中受益。
- 如果你有一个不太具体的 IP 前缀,那么可以继续将其通告给你的 ISP,同时 Cloudflare 通告更具体的 IP 前缀。例如,Cloudflare 向 Internet 通告一个
潜在解决方案:
- 在配置了 Magic Transit 前缀的位置的所有 CPE 出口端口上配置 MSS 强制约束 (MSS clamp)。
- 通过在流量流的两端捕获数据包来确认 TCP SYN-ACK 中通告的 MSS 值——例如,在远程 Internet IP 和你的 Magic Transit 设备上。
- 要快速测试问题是否与 MTU 或 MSS 设置相关,你可以临时降低 Magic Transit 前缀内测试设备 LAN 接口上的 MSS 强制约束。如果这解决了问题,则证实需要针对你的前缀微调 MSS 强制约束设置。务必验证边缘 CPE 的所有出口接口上均应用了正确的 MSS 强制约束。
例如,设备无法浏览托管在 Magic Transit 前缀上的服务器。
潜在解决方案:
- 在配置了 Magic Transit 前缀的位置的所有 CPE 出口端口上配置 MSS 强制约束。
- 通过在流量流的两端捕获数据包来确认 TCP SYN-ACK 中通告的 MSS 值——例如,在远程 Internet IP 和你的 Magic Transit 设备上。
- 要快速测试问题是否与 MTU 或 MSS 设置相关,你可以临时降低 Magic Transit 前缀内测试设备 LAN 接口上的 MSS 强制约束。如果这解决了问题,则证实需要针对你的前缀微调 MSS 强制约束设置。务必验证边缘 CPE 的所有出口接口上均应用了正确的 MSS 强制约束。
潜在解决方案:
- MSS 强制约束正确应用到了穿越 IPsec/GRE 隧道的流量。在两个隧道端点处使用数据包捕获来检查 TCP SYN-ACK 中通告的 MSS 值。
- 检查连接到 Magic Transit 前缀的防火墙 IPsec 内部隧道接口上的 MSS 设置。将其设置为约 1300 字节,以避免穿越 Magic Transit GRE 隧道(MTU 1476 字节)的入站数据包发生分片。对于 GRE 隧道,通过从原始值中减去 24 字节来调整 MSS,以计入 GRE 封装开销。
- 如果这不起作用,可以联系 Cloudflare,要求我们针对遇到问题的前缀上的特定端点 IP 启用
clear don't fragment(清除请勿分片)位,以查看是否能解决问题。
如果你怀疑 Cloudflare 缓解措施可能正在丢弃发往你 Magic Transit 前缀的合法流量:
- 导航至网络分析 (Network Analytics) 页面。
- 在 All traffic(所有流量) 选项卡中,选择 Add filter(添加筛选器) 以配置针对相关流量流的过滤器——如源 IP、目标 IP 和协议/端口。
- 检查分析结果,以确定哪个 Cloudflare 缓解系统丢弃了流量——例如,DDoS 托管规则、高级 TCP/DNS 防护或 Network Firewall。
- 如果流量是被 DDoS 托管规则丢弃的:
- 检查丢弃流量的规则是否可定制。如果是,请转到 DDoS 替代规则 (Overrides)。在其中,你可以创建/修改现有替代规则,以确保将此端点 IP 添加到应用了较低敏感度的替代规则中。
- 如果此规则不可定制且属于 Cloudflare 始终在线的标准 DDoS 缓解措施的一部分,请联系 Cloudflare 支持团队以请求协助。
- 如果流量是被高级 TCP 防护 (ATP) 丢弃的:
- 如果全局规则的模式是 Mitigation(缓解),你可以针对
monitoring(监控)设置过滤器,以便 ATP 不会丢弃此特定流量流的流量。 - 如果你需要进一步的协助,请联系你的 Cloudflare 支持团队,他们可以为此缓解系统调整其他后端配置选项。
- 如果全局规则的模式是 Mitigation(缓解),你可以针对
- 如果流量是被高级 DNS 防护丢弃的:
- 你可以创建一个规则,以应用在某区域或数据中心接收到的具有较低敏感度设置的流量上。创建后,你可以将规则的模式更改为
monitoring。 - 或者,你可以将全局规则的模式从
mitigation更改为monitoring。
- 你可以创建一个规则,以应用在某区域或数据中心接收到的具有较低敏感度设置的流量上。创建后,你可以将规则的模式更改为
- 如果流量是被 Network Firewall 丢弃的:
- 检查是哪个已配置的 Network Firewall 规则导致了丢弃。
- 你可以选择编辑规则或禁用它。你也可以添加一条新规则来允许你的流量,并确保它放置在配置为丢弃流量的规则上方。
潜在解决方案:
- 如果你使用的是 Cloudflare Magic Transit 租用 IP,请确保你的 CPE 正确地源 NAT 到 Cloudflare 租用 IP,并且正确配置了基于策略的路由,以通过 Magic Transit IPsec/GRE 隧道转发出站流量。
- 检查 Network Firewall 规则是否配置为允许出站流量。提醒一下,Network Firewall 是无状态的,配置的规则将同时适用于入站和出站流量。
- 检查出站流量流在 Network Analytics 内部是否可见。另外,检查返回到 Magic Transit 前缀的入站流量流。验证是否有任何缓解措施应用在流量上。
如果问题仅在 TCP 上出现,而 UDP/ICMP 成功,请检查 CPE 的 GRE/IPsec 隧道上的 MSS 和 MTU 配置。在 CPE/终端设备上执行数据包捕获,以确认交换的 SYN-ACK 值。