Anycast 与 GeoDNS 的区别

Anycast 是路由层选择(同一 IP 由 BGP 把流量导向不同物理节点),GeoDNS 是 DNS 答案层选择(不同用户拿到不同 IP);二者可以同时使用。

#type / concept #status / growing #tech / network #protocol / dns

[!info] related notes

Anycast 与 GeoDNS 的区别

一句话定义

GeoDNS 是「答案层选择」:不同用户拿到不同 DNS IPAnycast 是「路由层选择」:不同用户拿到相同 IP,由 BGP 把流量导向最近/最合适的物理节点。两者解决「就近」的角度不同,且可叠加。

核心机制 / 工作原理

GeoDNS(DNS 答案层)

用户 A → DNS 答 1.2.x.x(亚洲节点)
用户 B → DNS 答 5.6.x.x(欧洲节点)

不同用户解析到不同 IP,由权威侧按来源决定。

Anycast(路由层)

用户 A 和用户 B
   ↓ 都解析到 192.0.2.1(同一 IP)
   ↓ BGP 把 A 的流量送到亚洲实例,B 的送到欧洲实例

同一 IP 被多地公告,网络层按路由距离把包送到就近实例(根服务器就用此方式,见 root-and-tld-servers)。

最小例子 / 最小场景

一个公共 DNS(如 1.1.1.1)是 Anycast:全球都解析到 1.1.1.1,但你的查询实际到达离你最近的清洗/解析节点。该节点内部再做 GeoDNS 式调度则返回另一层答案。

边界与易混淆点

  • 层不同:GeoDNS 改「DNS 返回什么」;Anycast 改「同一个 IP 的流量去哪」。
  • 可同时使用:CDN 常 Anycast 一个接入 IP,再在内部按 GeoDNS 选具体源站(见 cdn-dns-scheduling)。
  • Anycast 的「就近」由路由决定,可能受 BGP 策略影响而非纯地理最近;GeoDNS 的「就近」由权威看到的来源决定。
  • 排障时:连不上 Anycast IP,可能是某实例故障被路由剔除慢(黑hole),而 GeoDNS 问题是答案本身就不对——两者路径不同(见 why-same-domain-different-ip)。
创建于 2026/7/31 更新于 2026/7/31