Anycast 与 GeoDNS 的区别
Anycast 是路由层选择(同一 IP 由 BGP 把流量导向不同物理节点),GeoDNS 是 DNS 答案层选择(不同用户拿到不同 IP);二者可以同时使用。
#type / concept
#status / growing
#tech / network
#protocol / dns
[!info] related notes
- 所属 MOC: DNS 知识地图
- 地理调度: GeoDNS
- CDN 调度: CDN DNS 调度
- 根服务器: 根与顶级域服务器
- 汇总: 为什么同一域名返回不同 IP
Anycast 与 GeoDNS 的区别
一句话定义
GeoDNS 是「答案层选择」:不同用户拿到不同 DNS IP。Anycast 是「路由层选择」:不同用户拿到相同 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)。