技术知识文章集合TECHNICAL ARCHIVE · 457 DOCUMENTS

显示模式

登录
ARCHIVE DOCUMENTETC

如何选择适合的公共 DNS

所属馆藏
Other
文件格式
Markdown
原始路径
Other/18-如何选择适合的公共 DNS
本文目录9 个章节
  1. 前言
  2. 一、什么是公共 DNS
  3. 二、是否需要更换运营商 DNS
  4. 三、选择公共 DNS 时应该考虑什么
  5. 四、目前可以测试的公共 DNS
  6. 五、如何做有意义的测速
  7. 六、配置公共 DNS 的实践建议
  8. 七、总结
  9. 参考资料

如何选择适合的公共 DNS

Category(分类): Other Status: 已整理

作者:Sukka(原文发表于 2022 年)

前言

DNS 是互联网的基础设施之一。原文从递归 DNS(也就是公共 DNS)的必要性、优缺点和服务列表出发,讨论如何选择适合自己的解析器。本文保留这个实践视角,并补充 DoH、DoT、DNSSEC、ECS、IPv6 和隐私策略等内容。

公共 DNS 没有一个对所有人都最快、最安全的答案。运营商 DNS、企业 DNS、公共 DNS 和浏览器内置的安全 DNS 都可能适合不同场景,最终应以自己的网络、地区、设备和业务测试结果为准。

原文引用的 51CTO 配图当前无法稳定访问,因此没有继续保留失效的外链图片。

一、什么是公共 DNS

DNS(Domain Name System)是一套分布式、层次化的命名系统。浏览器需要访问 www.example.com 时,通常会通过操作系统的 stub resolver 向递归解析器查询 A、AAAA 等记录,再用返回的地址建立连接。

递归解析器可以代表客户端向根、顶级域和权威 DNS 查询,也可以直接从缓存返回结果。运营商通过 DHCP、宽带拨号或移动网络下发的 DNS 通常就是递归解析器;面向公众开放的递归解析服务则通常被称为公共 DNS。

这里的“公共”只表示服务面向较广泛的用户开放,不表示它一定免费、匿名、无过滤或适合所有网络。公共 DNS 运营商仍然可能记录查询日志、提供恶意域名拦截、执行家长控制,或者根据当地法律和产品政策处理域名。

二、是否需要更换运营商 DNS

原文认为运营商 DNS 对绝大多数用户可能更快、更适合 CDN,这个经验仍有参考价值,但不应写成绝对结论。运营商 DNS 通常具有以下优势:

  • 客户端到解析器的网络距离较短,UDP/TCP 53 通常不需要跨越很远的网络;
  • 解析器知道本地网络和运营商环境,部分 CDN 调度可以得到更接近用户的结果;
  • 某些运营商或企业网络会对自己的 DNS 做缓存和本地化优化。

但运营商 DNS 也可能存在缓存故障、解析错误、可用性不足、域名拦截、错误页面或隐私政策不透明等问题。不同地区和运营商的实际情况并不相同,不能仅凭网络传闻判断。

公共 DNS 也不是天然更好:

  • 它的 DNS 出口可能位于另一个城市、运营商甚至国家,CDN 可能据此返回不理想的节点;
  • 公共服务被大量用户共享,故障、攻击、限流和策略调整会影响更多人;
  • 加密传输只保护“客户端到递归解析器”这一段,递归解析器仍然可以看到查询内容;
  • 过滤型解析器可能误拦截正常域名,非过滤型解析器也不等于提供恶意内容防护;
  • 在某些网络中,跨境或跨运营商的公共 DNS 可能延迟更高、不可达或被网络策略干预。

因此,选择公共 DNS 更像是在选择一个新的“解析服务运营方”,而不是简单地把速度开关调到最大。更换前应记下原来的设置,并准备好回滚方案。

三、选择公共 DNS 时应该考虑什么

1. 可用性和运营边界

DNS 是访问很多网站的第一步。服务商是否有多地或 Anycast 部署、是否提供 IPv6、是否公开故障通知、是否有 SLA 和支持渠道,都比宣传页面上的单次测速更重要。

“两个 IP”不一定代表两个完全独立的故障域。它们可能属于同一个运营商、同一套集群或同一网络策略。如果业务对 DNS 可用性要求很高,应从架构层面准备多个解析路径,而不是只依赖两个看起来不同的地址。

2. 延迟、缓存和 CDN 调度

DNS 延迟只占页面访问链路的一部分。首次访问还包含连接建立、TLS、HTTP 请求和服务器处理,不能用 ping 延迟直接代替 DNS 测试。

公共 DNS 的入口地址和递归查询的出口地址也可能不同。权威 DNS 或 CDN 通常会根据递归解析器的位置、运营商、ECS 信息、缓存和自身的调度策略返回结果。客户端切换公共 DNS 后,DNS 查询可能更快,却不一定得到更近的 CDN 节点。

3. EDNS 与 ECS

EDNS 是 Extension Mechanisms for DNS,表示 DNS 的扩展机制;ECS 是其中的 EDNS Client Subnet 选项(RFC 7871),两者不能混为一谈。

ECS 允许递归解析器向权威 DNS 发送客户端网络前缀的一部分,让 CDN 根据更接近客户端的网段返回地址。它通常不会发送完整的客户端 IP,但仍然会增加可识别性、缓存分片和隐私成本,而且不是所有解析器或权威 DNS 都启用 ECS。

因此:

  • 想要更好的 CDN 就近调度时,ECS 可能有帮助;
  • 想要减少暴露客户端网络信息时,关闭 ECS 可能更合适;
  • “支持 ECS”不等于所有域名都能得到更准确的结果,最终还取决于权威 DNS 和 CDN 的实现;
  • 解析器是否发送 ECS、发送多长前缀以及如何缓存,应该以官方文档和实际抓包为准。

4. 传统 DNS、DoT 和 DoH

传统 DNS 常用 UDP 53,响应过大、需要可靠传输或特定场景下会使用 TCP 53。DNS 本身并不“只使用 UDP”。

  • DoT(DNS over TLS):通常使用 TCP 853,并通过 TLS 加密 DNS 消息,系统的 Private DNS 功能常使用这种方式;
  • DoH(DNS over HTTPS):把 DNS 消息放入 HTTPS,通常使用 443 端口,也可以运行在 HTTP/2 或 HTTP/3 上;
  • 传统 UDP/TCP DNS:部署简单、兼容性好,但链路上的观察者可以看到查询内容,也可能篡改或拦截消息。

DoH/DoT 主要保护客户端到递归解析器的连接,不能让递归解析器看不到查询,也不能替代 DNSSEC。DNSSEC 解决的是 DNS 数据来源和完整性验证,DoH/DoT 解决的是传输链路加密,两者可以配合使用。

浏览器的“安全 DNS”还可能绕过操作系统的 DNS 配置。排查时应同时检查浏览器、操作系统、路由器和 VPN/代理客户端,不能只看网卡里的 DNS 地址。

5. 隐私、过滤与日志政策

选择公共 DNS 前应阅读它的隐私说明,而不是只看“安全”“隐私优先”等宣传词。至少要确认:

  • 是否记录客户端 IP、查询名称、时间和地理信息;
  • 临时日志和聚合日志分别保存多久;
  • 是否把查询数据用于广告、画像、研究或共享;
  • 是否默认拦截恶意域名、广告、成人内容或拼写错误域名;
  • 是否提供不带过滤的纯解析服务和可选过滤配置;
  • 服务是否受特定国家、组织或企业政策约束。

DoH/DoT 不是 VPN,也不会隐藏连接到解析器本身的事实。需要完整网络隐私时,应根据威胁模型考虑端到端加密、VPN、代理、应用层隐私和终端安全,而不能只改 DNS。

四、目前可以测试的公共 DNS

下面只列出有公开资料、较常见的服务作为测试起点,不代表排名或长期推荐。地址、策略和加密端点可能调整,接入前请再次查看服务商文档。

中国大陆及校园网络中常见的服务

服务传统 IPv4IPv6 或加密接入说明
腾讯云 DNSPod 公共 DNS119.29.29.292402:4e00::2402:4e00:1::;DoH https://doh.pub/dns-query;DoT dot.pub原文的 119.28.28.28 已不应继续当作当前默认地址,按官方公告配置
阿里云公共 DNS223.5.5.5223.6.6.62400:3200::12400:3200:baba::1;DoH https://dns.alidns.com/dns-query;DoT 主机名 dns.alidns.com官方说明支持 ECS、DoH 和 DoT,但实际线路仍应测试
114 DNS114.114.114.114114.114.115.115以官方页面公布的能力为准覆盖面较广;不要把“常见”直接等同于“最快”或“无过滤”
清华 TUNA DNS666101.6.6.6同一服务提供 IPv6 接入,详见官方页面主要面向清华校园网师生,不是所有公网用户的通用首选

原文还列出了 CNNIC、百度等服务。它们是否适合使用,应根据当前运营状态、隐私政策、可用性和自身网络测试判断;不能继续沿用原文中“速度最快”“SLA 接近 100%”“经常被劫持”等缺乏时间和测量方法的绝对评价。

全球常见的服务

服务传统 IPv4加密接入或特性适合关注的点
Google Public DNS8.8.8.88.8.4.4DoH https://dns.google/dns-query;DoT dns.google提供 IPv6、DNSSEC 验证和公开文档;注意网络可达性和日志政策
Cloudflare 1.1.1.11.1.1.11.0.0.1DoH https://cloudflare-dns.com/dns-query;DoT one.one.one.one默认不做内容过滤;另有面向恶意软件或成人内容的 Families 地址
Quad9 Secure9.9.9.9149.112.112.112DoH https://dns.quad9.net/dns-query;DoT dns.quad9.net默认提供威胁域名拦截和 DNSSEC;9.9.9.10 是不拦截版本,9.9.9.11 提供 ECS 变体
OpenDNS208.67.222.222208.67.220.220IPv6、过滤和加密能力以 Cisco/OpenDNS 文档为准可配置安全策略,但不要把第三方旧测速当作当前 SLA
AdGuard DNS94.140.14.1494.140.15.15默认过滤广告和跟踪器,也提供未过滤及家庭过滤方案过滤可能造成兼容性问题,适合明确需要此策略的用户
NextDNS通常使用配置专属地址DoH/DoT 使用配置 ID,需按官方配置适合需要细粒度策略、日志和设备分组的用户,隐私取舍更复杂

“国外 DNS 一定支持 TCP、国内 DNS 都不支持 TCP”之类的说法过于笼统。传统 TCP、DoT 和 DoH 是不同的接入方式,必须逐个服务查看文档或用工具测试。

五、如何做有意义的测速

1. 测量单次查询

Linux、macOS 或安装了 dig 的环境可以分别指定服务器:

dig @223.5.5.5 example.com A +stats
dig @119.29.29.29 example.com A +stats
dig @1.1.1.1 example.com A +stats
dig @8.8.8.8 example.com A +stats

Windows PowerShell 可以使用下面的命令验证解析器,但 Resolve-DnsName 本身不是精确的耗时工具:

Resolve-DnsName example.com -Server 1.1.1.1
Resolve-DnsName example.com -Server 223.5.5.5
Measure-Command { Resolve-DnsName example.com -Server 1.1.1.1 | Out-Null }

Measure-Command 还包含 PowerShell 管道和进程开销,更严谨的对比应使用重复采样脚本或专门的 DNS 测试工具。dig 输出中的 Query time 只代表这一次查询。连续查询时可能命中递归缓存,第一次和后续结果不能直接混在一起比较。建议选择多个常用域名、多个网络和多个时间段,记录成功率、超时、p50/p95 延迟以及返回地址的实际访问质量。

2. 观察 DNS 出口

一些公共测试域名可以让递归解析器返回它观察到的来源地址,例如:

dig @1.1.1.1 whoami.akamai.net A +short
dig @8.8.8.8 whoami.akamai.net A +short

该测试服务可能被关闭、限制或返回空结果,不能作为所有解析器的必然功能。即使看到了出口 IP,也不能据此断定 CDN 一定会选择最佳节点,因为 CDN 还可能综合 ECS、缓存、线路和健康状态。

3. 验证 DNSSEC 和解析结果

可以查询一个 DNSSEC 相关域名并观察 SERVFAILAD 等标志,但不同验证器、测试域名和本地网络的行为可能不同:

dig @1.1.1.1 example.com A +dnssec
dig @9.9.9.9 example.com A +dnssec
dig @1.1.1.1 dnssec-failed.org A +dnssec

dnssec-failed.org,支持 DNSSEC 验证的递归解析器通常应返回 SERVFAIL;如果域名被本地策略拦截、测试网络异常或解析器不验证,结果可能不同。响应中的 AD 通常表示递归解析器已经验证了数据;没有 AD 不一定代表域名不安全,可能是客户端没有请求 DNSSEC、域名未签名或解析器配置不同。DNSSEC 验证失败时,验证器通常会返回 SERVFAIL,但应结合 RRSIGDS 和多台解析器交叉判断。

4. 测量真实页面,而不是只看 DNS

对页面体验而言,DNS 只是 TTFB 和连接链路的一部分。切换解析器后,还要检查:

  • CDN 返回的地址是否确实改善了 TCP/TLS/QUIC 建连;
  • HTML、图片、脚本和 API 的 TTFB、LCP、INP 是否改善;
  • IPv6 是否可用,以及是否出现 IPv6 路由异常;
  • DoH/DoT 是否被浏览器、路由器或企业策略绕过;
  • 访问失败时是 DNS 错误、连接错误、TLS 错误还是源站错误。

DNSPerf 等第三方榜单可以作为候选服务发现工具,但榜单的测量点、时间、网络和请求域名未必代表你的用户。生产系统更应使用自有监控和真实用户数据。

六、配置公共 DNS 的实践建议

  1. 先保留原设置。 更换前记录 DHCP、路由器、IPv4、IPv6 和浏览器安全 DNS 配置,出现故障可以快速回滚。
  2. 主备策略保持一致。 不要把带广告拦截的解析器和完全不拦截的解析器混在一起,否则同一个域名可能随机得到不同结果。若要容灾,先确认所有解析器的过滤、DNSSEC 和 ECS 行为符合预期。
  3. 同时关注 IPv4 和 IPv6。 只修改 IPv4 DNS 可能导致双栈网络仍使用旧的 IPv6 解析路径。加密 DNS 也要确认客户端是否真正启用。
  4. 优先使用官方主机名。 DoT 需要正确的 TLS 主机名,DoH 需要正确的 HTTPS 端点;不要只把某个 IP 拼到浏览器地址栏中当作加密 DNS。
  5. 企业网络先征得管理员同意。 企业、学校、家长控制、内网域名和审计策略可能依赖指定 DNS,擅自更换会导致内网服务或合规要求失效。
  6. 不要把公共 DNS 当成 VPN。 它不会改变所有网络流量的出口,也不会替代 HTTPS、VPN、代理、终端防护或应用层鉴权。

七、总结

选择公共 DNS 可以按以下顺序进行:

  1. 先确认目标:降低延迟、改善 CDN 调度、提升加密传输、减少过滤,还是需要恶意域名拦截;
  2. 选择两三家有公开文档和隐私政策的服务,与运营商 DNS 做对照;
  3. 在自己的宽带、移动网络、校园网或企业网络中,按多个时间段测量成功率、延迟和真实页面表现;
  4. 确认浏览器安全 DNS、VPN、IPv6 和路由器不会绕过你的设置;
  5. 发现误拦截、延迟变高或访问异常时,立即回滚,而不是盲目追求某个“最快 DNS”。

参考资料

457 DOCUMENTS · 10 COLLECTIONS
ARCHIVE SEARCH457 篇文章

SEARCH GUIDE

输入关键词开始搜索

支持搜索文章标题、所属分类和原始文档路径。

按分类浏览

10 COLLECTIONS