本页目录

DNS 基础设施

根服务器不是 13 台机器,是 13 个 anycast 网络。从根到 TLD 到权威,每一层都是分布式的——理解这层基础设施的架构,才知道"改一条 DNS 记录"的背后发生了什么。

概述

DNS 不只是协议——它是一个全球分布式数据库,由 13 个 root server(1000+ 物理实例通过 Anycast 部署)和数百个 TLD registry 构成。CDN 提供商(Cloudflare/AWS/Azure)利用 DNS 作为流量入口:根据查询来源 IP 返回最近的数据中心地址。Split DNS 在企业/家庭网络中分隔内外视图。理解 DNS 基础设施是理解互联网可用性和故障恢复的关键。

Root Server System

13 个逻辑 root server 标识 (a.root-servers.net ~ m.root-servers.net),1000+ 物理实例通过 Anycast 全球分布。

Root zone 大小: ~10KB (只有 TLD delegation records)。Root server 不应答 recursive queries (RD=0 only),只做 referral。

Root hints file (/usr/share/dns/root.hints 或内置在 recursive resolver 中) 提供初始 bootstrap。

Anycast

同一 IP prefix 同时 announce 在多个物理位置。BGP 自动将流量路由到最近的 (by AS path) 节点。

Anycast:同一 IP 多地 announce,BGP 就近路由到最短路径实例 Anycast 实例 A · Tokyo AS Path: AS1 → dns-root Anycast 实例 B · Frankfurt AS Path: AS2 → AS3 → dns-root BGP 见更短路径 BGP 见更短路径 Client in Asia → 查询 Tokyo instance Client in Europe → 查询 Frankfurt instance 不保证同一 client 的两次查询落进同一实例(除非同一 /24 被一致 announce)—— 但这对 DNS 是完美的:每个 query 独立处理。

Anycast 工作原理: 不保证同 client 的两次查询去同一个实例 (除非同一 /24 announced consistently)。这对 DNS 是完美的 — 每个 query 独立。

CDN DNS

CDN DNS = 流量入口:查询解析到最近 edge 节点的路径 Client 查询 www.example.com Authoritative DNS 由 CDN 托管 看 query source IP 选最近的 edge PoP 返回 edge IP Client → edge → CDN edge → backend

关键技术

GeoDNS source IP → geo database → nearest region → return IP Latency-based 实时测 edge↔source IP 延迟 → 选最低延迟 ECS(Client Subnet) resolver 传子网 /24(v4)/56(v6) → 更精确选 edge,但泄露信息 ECS 让 CDN 更精确地选 edge,但会把 client 的子网信息传给 authoritative ——精度换隐私,是个 tradeoff。

Split DNS

内部网络使用不同的 DNS 视图:

内部 (家庭/公司网络):
  grafana.liz6.com → 192.168.31.8 (内网 IP, 不经公网)

公网:
  grafana.liz6.com → VPS IP (经过 rathole 隧道)

实现:
  - BIND: views { match-clients { internal_net; }; ... }
  - Unbound: access-control-view
  - dnsmasq: address=/grafana.liz6.com/192.168.31.8

DNS-based Load Balancing

Weighted round-robin:
  www.example.com A 1.1.1.1
  www.example.com A 2.2.2.2
  → resolver 随机选 (通常 client 选第一个, 但不同 resolver 行为不同)

Latency-based (Route 53):
  latency alias + health checks → 自动选择最低延迟的 healthy endpoint

Geo-proximity (Traffic Manager):
  geographic routing + endpoint monitoring

参考

  • RSSAC: root-servers.org
  • CDN: Cloudflare Anycast, AWS Route 53, Azure Traffic Manager

Keywords: root servers, anycast, CDN DNS, GeoDNS, split DNS, ECS, DNS-based load balancing