Cloudflare 1.1.1.1 于2025年7月14日故障事件

2025年7月14日,Cloudflare 的 1.1.1.1 DNS 解析服务经历了一场持续约一小时的全球性中断。此次事件的根源是一个遗留系统中的配置错误,该错误导致服务的 IP 地址被错误地从互联网上撤回,使得全球大量用户无法访问互联网。Cloudflare 已为此道歉,并承诺将淘汰相关的遗留系统并改进部署流程,以防止此类事件再次发生。

事件背景与根本原因

Cloudflare 的 1.1.1.1 服务使用“任播”(anycast)技术,将其 IP 地址在全球多个数据中心进行广播,以实现高效服务。然而,这也意味着路由广播的任何问题都可能导致全球性故障。

问题的根源在于一个为数据本地化套件(DLS)服务准备的配置。

    • 错误的配置: 2025年6月6日,在为一项新的 DLS 服务进行配置时,工程师错误地将 1.1.1.1 解析器服务的 IP 地址也包含了进去。
    • 潜伏的错误: 由于这项新的 DLS 服务尚未启用,这个配置错误在生产环境中潜伏了一个多月,没有立即产生影响,因此也未触发任何警报。
    • 故障的触发: 2025年7月14日,当工程师对这项未上线的 DLS 服务进行一次看似无害的更改时(为一个测试地点添加拓扑),潜伏的配置错误被激活了。系统错误地将 1.1.1.1 服务的路由范围从全球所有地点缩减到了一个单一的、离线的测试地点。

其效果是触发了所有 1.1.1.1 前缀的全球性、即时性撤回。

事件时间线

    • 2025-06-06 17:38 UTC: 引入问题 - 一次配置更改错误地将 1.1.1.1 服务与一个未上线的 DLS 服务关联起来。此更改没有立即影响,错误潜伏下来。
    • 2025-07-14 21:48 UTC: 影响开始 - 对 DLS 服务的另一次更改触发了潜伏的错误,导致系统开始在全球范围内撤回 1.1.1.1 的 IP 地址。
    • 2025-07-14 21:52 UTC: 访问 1.1.1.1 服务的 DNS 流量开始在全球范围内下降。
    • 2025-07-14 22:01 UTC: 检测到影响 - 内部服务健康警报开始针对 1.1.1.1 解析器触发。
    • 2025-07-14 22:20 UTC: 部署修复 - 启动配置回滚。为加速恢复,在测试地点验证后手动执行了一项操作。
    • 2025-07-14 22:54 UTC: 影响结束 - 解析器警报清除,DNS 流量恢复正常水平。

故障影响

此次中断影响了所有通过 IP 地址直接访问 1.1.1.1 解析器的用户。当 IP 地址被撤回后,发送到这些地址的流量无法到达 Cloudflare。

    • 受影响的服务: 通过 UDP、TCP 和 DNS over TLS (DoT) 协议的查询量急剧下降。
    • 未受影响的服务: 大多数使用域名 cloudflare-dns.com 的 DNS-over-HTTPS (DoH) 用户基本未受影响,因为该域名使用了一组不同的 IP 地址。

在故障期间,还观察到一个意外情况:在 Cloudflare 撤回其 1.1.1.0/24 前缀后,印度塔塔通信(AS4755)开始广播该前缀,这看起来像一次 BGP 劫持。但需要明确的是,这起劫持事件不是导致服务中断的原因,而是一个在故障期间暴露出来的无关问题。

解决方案与未来预防措施

恢复服务的过程分两步:首先,通过回滚配置,重新广播了被撤回的 BGP 前缀,这恢复了大约 77% 的流量。然而,部分边缘服务器已自动移除了 IP 绑定,需要重新配置。考虑到事件的严重性,团队加速了修复措施的部署,而不是采用标准的渐进式发布。

我们认识到此次事件造成的影响。尽管具体问题已解决,我们已确定了几个步骤来降低未来发生类似问题的风险。

为防止此类事件重演,Cloudflare 承诺采取以下措施:

    • 弃用遗留系统: 此次故障暴露了遗留系统在部署方法上的缺陷。这些系统缺乏渐进式、分阶段的部署机制,无法在造成全面影响前发现问题。Cloudflare 将加速淘汰这些风险较高的系统。
    • 改进部署流程: 未来的所有部署都将采用更现代化的、分阶段的部署方法。这允许在变更推广到全球之前,在小范围内进行健康监控,并在发现问题时自动回滚。