任播 DNS

安全和威胁
一种网络寻址和路由方法,其中DNS查询被路由到最近或性能最好的服务器。
← 返回词汇表

什么是 Anycast DNS?

Anycast DNS 是一种网络路由方式:分布在不同地理位置的多台 DNS 服务器共享同一个 IP 地址。用户通过 Anycast 查询 DNS 时,网络会自动把请求路由到最近或性能最佳的服务器,从而缩短响应时间,并提供内置冗余和 DDoS 防护。

Anycast 的工作方式

传统单播与 Anycast

单播(传统方式):
User Query → Specific Server IP → Fixed Location

London User → 203.0.113.1 → New York Server (high latency)

Anycast
User Query → Shared IP → Nearest Server

London User → 203.0.113.1 → London Server (low latency)

Tokyo User → 203.0.113.1 → Tokyo Server (low latency)

Sydney User → 203.0.113.1 → Sydney Server (low latency)

路由机制

1. 多台服务器、一个 IP:所有 Anycast 服务器都公布同一个 IP 地址

2. BGP 路由:边界网关协议将流量路由到“最近”的服务器

3. 网络邻近性:由 BGP 指标(跃点、延迟和网络策略)决定

4. 自动故障转移:一台服务器故障后,流量会转向下一台最近的服务器

Anycast DNS 的优势

1. 降低延迟

地理分布可以缩短 DNS 查询时间:

用户位置单播延迟Anycast 延迟改善幅度
New York10ms5ms快 50%
London120ms8ms快 93%
Tokyo180ms12ms快 93%
Sydney220ms15ms快 93%
实际影响
DNS Resolution Time:

Unicast: 150ms (distant server)

Anycast: 10ms (local server)

Savings: 140ms per query

For a page with 20 DNS lookups:

Total savings: 2,800ms (2.8 seconds!)

2. 内置冗余

多个存在点(PoP)可以提供自动故障转移:

Normal Operation:

London Server → Online → Serving traffic

Paris Server → Online → Serving traffic

Frankfurt Server → Online → Serving traffic

Server Failure:

London Server → OFFLINE

Paris Server → Online → Absorbs London traffic automatically

Frankfurt Server → Online → Absorbs London traffic automatically

3. DDoS 缓解

分布式基础设施可以吸收攻击:

单服务器(单播)
Attack: 100 Gbps DDoS → Single Server → Overwhelmed → Service Down
Anycast 网络
Attack: 100 Gbps DDoS → Distributed across 20 servers

Each server receives: ~5 Gbps

Result: Attack absorbed, service continues

4. 提升性能

Anycast 可以缩短 DNS 查询解析时间:

# Query time comparison

dig @8.8.8.8 example.com # Google's anycast DNS

# Query time: 12 msec

dig @single-server.dns.com example.com # Unicast DNS

# Query time: 145 msec

Anycast DNS 架构

网络结构

[Global Anycast IP: 203.0.113.1]

|

┌─────────────────────┼──────────────────────┐

| | |

[US West PoP] [Europe PoP] [Asia PoP]

- Los Angeles - London - Tokyo

- San Francisco - Frankfurt - Singapore

- Seattle - Amsterdam - Hong Kong

服务器配置

每个 Anycast 位置都应具备:

BGP 公告

Example BGP Configuration:

IP Block: 203.0.113.0/24

London PoP announces: 203.0.113.1 via AS64500

New York PoP announces: 203.0.113.1 via AS64500

Tokyo PoP announces: 203.0.113.1 via AS64500

Internet routers select nearest announcement based on BGP metrics.

常见 Anycast DNS 提供商

公共解析器

提供商IPv4IPv6PoP 数量
Cloudflare1.1.1.12606:4700:4700::1111300+
Google8.8.8.82001:4860:4860::8888100+
Quad99.9.9.92620:fe::fe150+
OpenDNS208.67.222.2222620:119:35::3525+

权威 DNS 提供商

Cloudflare DNS AWS Route 53 NS1 Dyn(Oracle)

设置 Anycast DNS

用于权威 DNS

1. 选择提供商

选择 Anycast DNS 托管服务:

# Cloudflare example

Name Servers:

ns1.cloudflare.com (anycast)

ns2.cloudflare.com (anycast)

2. 更新注册商配置

将域名指向 Anycast 名称服务器:

example.com.    NS    ns1.cloudflare.com.

example.com. NS ns2.cloudflare.com.

3. 配置 DNS 记录

在提供商处添加 DNS 记录:

example.com.    A     203.0.113.50

www A 203.0.113.50

mail MX mail.example.com.

用于递归 DNS

切换到 Anycast 解析器Linux/Mac(/etc/resolv.conf):
nameserver 1.1.1.1

nameserver 1.0.0.1

Windows(网络设置):
Preferred DNS:  1.1.1.1

Alternate DNS: 1.0.0.1

路由器配置

在路由器层面设置 DNS 服务器,即可应用到整个网络。

Anycast 与其他 DNS 架构

Anycast 与单播

特性Anycast单播
路由最近的服务器指定服务器
延迟低(本地)取决于距离
冗余内置需要额外 IP
DDoS 防护分布式吸收易受单点攻击
复杂度更高(BGP 路由)简单(直接路由)

Anycast 与 GeoDNS

特性AnycastGeoDNS
路由层网络(BGP)应用(DNS)
故障转移自动需配置
粒度网络邻近性地理区域
IP 地址全球相同各区域不同
使用场景全球性能区域内容分发

性能比较

DNS 查询解析时间

Test: 1000 DNS queries from various global locations

Unicast DNS (single server in US):

Average: 145ms

Min: 12ms (US queries)

Max: 340ms (Asia/Australia queries)

Anycast DNS (20 global PoPs):

Average: 18ms

Min: 5ms

Max: 45ms

Performance Improvement: 87% faster average response

真实环境测试

# Test anycast DNS performance

for location in us-east eu-west asia-pacific; do

dig @1.1.1.1 example.com | grep "Query time"

done

# Results:

# US East: Query time: 8 msec

# EU West: Query time: 11 msec

# Asia Pacific: Query time: 14 msec

# Compare to unicast:

dig @unicast-server.com example.com | grep "Query time"

# Query time: 167 msec (from Asia)

Anycast 的局限

1. 无状态协议要求

Anycast 最适合 DNS 这类无状态协议:

不适合

2. 路由不对称

流量可能经过不同路径:

Query:    User → Nearest anycast server → Response

Next Query: User → Different server (if routing changes)

3. BGP 收敛时间

故障期间,BGP 路由更新需要时间:

Server Failure → BGP update propagation (30-120 seconds)

During convergence: Some queries may fail

After convergence: Traffic rerouted automatically

监控 Anycast DNS

关键指标

按位置统计响应时间
# Monitor from multiple locations

curl "https://api.monitoring-service.com/dns/check?domain=example.com&locations=all"

各 PoP 的可用性 流量分布
PoP Statistics:

US East: 35% of queries

EU West: 28% of queries

Asia: 22% of queries

Other: 15% of queries

健康检查

# Verify anycast is working

dig +short @anycast-server.com example.com

# Test from multiple locations

for server in probe1 probe2 probe3; do

ssh $server "dig @anycast-ip example.com +short"

done

# Should see responses from geographically appropriate servers

最佳实践

1. 将 Anycast 用于权威 DNS

切换到 Anycast DNS 托管,以获得:

2. 与 GeoDNS 结合

将 Anycast(基础设施)与 GeoDNS(应用)分层使用:

Anycast → Fast routing to nearest DNS server

GeoDNS → Return geographically appropriate IP addresses

3. 监控所有 PoP

为每个 Anycast 位置建立监控:

4. 规划 BGP 收敛

故障期间预计路由更新需要 30-120 秒:

5. 测试故障转移场景

定期测试 Anycast 网络如何处理故障:

# Simulate PoP failure

# Verify traffic reroutes automatically

# Measure convergence time

# Check user impact

Anycast DNS 是现代高性能互联网基础设施的重要组成部分,为面向全球用户的网站和应用提供快速 DNS 解析、自动冗余和内置 DDoS 防护。

将知识付诸实践

使用 DomScan 的 API 检查域名可用性、健康状态等。