← 返回题目列表

Anycast DNS 是什么?为什么公共 DNS 和 CDN 常用它?

高频 中等 第 8 / 27 题 更新于 2026/07/31
DNSAnycastCDN高可用负载均衡

简化版

Anycast 是多个节点对外宣布同一个 IP,路由系统把用户流量送到拓扑上最近或最优的节点。公共 DNS、根 DNS、CDN 常用 Anycast 提升就近访问、抗故障和抗 DDoS 能力。

详细版

Anycast DNS 的关键点:

  1. 多个地理位置不同的 DNS 节点使用同一个服务 IP。
  2. BGP 把客户端请求路由到“网络上更近”的节点。
  3. 某个节点故障后撤销路由,流量自动转到其他节点。
  4. 它对客户端透明,客户端只配置一个 DNS IP。
  5. 它不是 DNS 协议本身的负载均衡,而是 IP 路由层的调度。

比如 8.8.8.8 不是只有一台服务器,而是全球多个节点共同提供服务。

完整版教学

一、Anycast 和 Unicast 的区别

Unicast 是一个 IP 通常对应一个网络位置。Anycast 是多个位置同时宣布同一个 IP,路由协议决定你实际到哪个节点。

Unicast:
  203.0.113.10 -> 一个机房

Anycast:
  203.0.113.53 -> 北京节点
                -> 上海节点
                -> 新加坡节点
                -> 美国节点

客户端不需要知道背后有多少节点,它只访问同一个 IP。

记忆钩子:Anycast 是“一个 IP,多处服务,路由带你去最近的那个”。

二、BGP 如何把流量引到近处

Anycast 依赖 BGP 路由发布。多个节点向互联网宣布同一个前缀,路由器根据 AS 路径、本地策略、优先级等选择路径。

Client ISP 路由表:
  8.8.8.0/24 via nearby node

另一个地区:
  8.8.8.0/24 via another node

“最近”不是地理距离最近,而是路由意义上的最优路径。运营商策略会影响实际选择。

三、为什么 DNS 特别适合 Anycast

DNS 查询通常短小、无状态或弱状态,使用 UDP 居多,非常适合 Anycast。用户发一次查询,路由到附近节点,节点直接回答。

特性对 Anycast 的友好程度
查询短小
UDP 居多
状态少
对延迟敏感
长连接强状态较低

相比长连接业务,DNS 不太担心同一会话中途被路由到不同节点。

四、Anycast 如何提升高可用

如果某个节点故障,可以撤销该节点的 BGP 路由,流量会被互联网路由系统导向其他仍可用节点。用户仍访问同一个 IP。

正常:
Client -> Node A

Node A 故障:
Node A withdraw route
Client -> Node B

这也是根 DNS 和公共 DNS 抗故障的重要手段。它把单点 IP 变成全球多点服务。

五、Anycast 和 DNS 负载均衡的区别

DNS 负载均衡通常是域名解析返回不同 IP;Anycast 是多个节点共享同一个 IP,由路由系统选择节点。

方案调度层客户端看到
DNS 轮询DNS 应用层多个不同 IP
智能 DNSDNS 应用层按来源返回不同 IP
AnycastIP 路由层同一个 IP

CDN 常同时使用智能 DNS 和 Anycast:DNS 先返回合适入口,入口 IP 背后又可能是 Anycast。

六、Anycast 的问题和排障

Anycast 排障难点是“同一个 IP,不同地方访问到的不是同一台机器”。某地异常时,其他地区可能完全正常。

traceroute 8.8.8.8
mtr 8.8.8.8

排障要从多个地区测路径,查看到达的 POP、延迟、丢包和 BGP 路由变化。运维上还要确保各节点数据一致、健康检查准确、故障节点及时撤路由。

七、常见误区与追问

  • 误区:Anycast 是 DNS 协议的一部分。 Anycast 是 IP 路由层技术,DNS 只是非常适合使用它。
  • 误区:同一个 Anycast IP 全球一定到同一服务器。 不同地区会到不同节点。
  • 误区:Anycast 一定按地理最近调度。 实际按 BGP 路由和运营商策略选择。
  • 追问:为什么 DNS 适合 Anycast? 查询短、状态少、对延迟敏感,路由变化影响较小。
  • 追问:Anycast 如何抗故障? 故障节点撤销路由,流量自动转到其他节点。
  • 追问:Anycast 和 DNS 轮询有什么区别? 一个在路由层共享同 IP,一个在 DNS 层返回多 IP。

八、加强记忆

Anycast DNS 记成“同 IP,多节点,BGP 选路”。它让 DNS 服务离用户更近、故障能切走、攻击能分散;但排障必须多地观察,因为同一个 IP 在不同地方可能落到不同节点。