"哪个 DNS 快"不是玄学。搞懂延迟由哪几段构成、用 dig 的 Query time 实测、参考 DNSPerf 全球榜单,再按决策表对号入座。
DNS 解析延迟 = 你到解析器的网络 RTT + 递归查询链跳数 + 缓存命中与否。测量方法:用 dig @指定DNS 域名 看输出末尾的 Query time(毫秒),先预热缓存再连测 5–10 次取平均;横向比较可参考 DNSPerf 全球公共 DNS 测速榜。结论:缓存命中时各家差距很小(个位数毫秒),真正拉开差距的是你到解析器的物理距离与可用性——国内日常选就近的阿里/DNSPod 加密端点,隐私优先选 Cloudflare,自建 DNS 只在你出口质量好时才可能更快。
先理解延迟从哪来,才知道该优化哪里
一次解析耗时不是单一数字,而是几段叠加。理解它,你就能解释"为什么同一台 DNS 有时快如闪电、有时突然变慢":
由此得到一个反直觉但重要的结论:日常浏览中 90% 以上的解析都是缓存命中,所以公共 DNS 的"榜单速度"和你实际体感未必一致——真正影响体感的是缓存未命中时的那几次冷查询,以及解析器在高峰期是否会超时、丢包。
Query time 字段就是你要的答案
Query time 波动很大,连测 10 次去掉最大最小值再平均,才有可比性。+tries=1 随机子域名测未命中场景。dig 的完整参数说明可参考 Arch Wiki 的 Dig 条目;Windows 用户用 nslookup 域名 DNS服务器IP 同样能指定服务器对比。
本机之外,看全球监测点的长期数据
本机实测只反映你这一条网络路径。想看"这个公共 DNS 在全球/全国范围内到底快不快、稳不稳",权威做法是参考 DNSPerf(dnsperf.com)——它从全球多个监测点持续向各大公共 DNS 发起解析查询,统计平均延迟与成功率,按国家和地区排出榜单。
用法很简单:打开 DNSPerf 站点,找到对应国家/地区的排名表,看你候选的几家(如 8.8.8.8、1.1.1.1、223.5.5.5、119.29.29.29)的 Average latency 与可用性评分。注意榜单是"全球均值视角",和你本机实测可能不一致——它的价值在于看长期稳定性和量级差距,最终决策仍要结合本机 dig 结果。
按你的实际场景对号入座
| 维度 | 公共 DNS(阿里/DNSPod/Cloudflare) | 自建递归 DNS(Unbound/AdGuard Home) |
|---|---|---|
| 部署成本 | 填两个 IP 即用,零运维 | 需要一台常开设备 + 配置上游 |
| 延迟(缓存命中) | 就近 Anycast,通常 5–20ms | 本地解析器,理论上再省一跳 |
| 延迟(缓存未命中) | 大缓存、全球节点,冷查询也快 | 冷查询走自己的递归链或加密上游,可能更慢 |
| 可用性 | 专业 SLA,几乎不会挂 | 取决于你的设备与出口,断电断网即失效 |
| 隐私 | 查询交给服务商(选零日志的) | 查询内容与缓存完全自控 |
| 过滤能力 | 普通版不过滤(Cloudflare 有过滤版) | 可自由加广告/恶意域名规则 |
| 适合谁 | 大多数个人用户、追求省心 | 有运维能力、要隐私与过滤的玩家/小团队 |
先用公共 DNS 加密端点打底(省心、稳定),再在路由器上跑一层 AdGuard Home 做广告过滤——它本身就是一个本地递归/转发解析器,上游指向加密 DoH/DoT。这样你同时拿到了"公共 DNS 的全球就近 + 本地过滤缓存 + 加密传输"。是否自建纯递归,取决于你出口带宽与运维精力:带宽小、又要走跨境加密上游,实测很可能不如就近的公共 DNS 快。
Query time 即为本次解析耗时,单位毫秒。例如 dig www.example.com 末尾显示 "Query time: 12 msec"。注意首次查询通常因缓存未命中偏慢,应先预热再测,并多测几次取平均。