用 dig @DNS 服务器 +short 命令测响应时间,以 ;; Query time: XX msec 为准,低于30ms为优秀;批量执行5次取平均更准确;需结合 scutil --dns 确认系统实际生效DNS,并刷新缓存确保测试真实。
直接用 dig 命令加 @ 指定服务器,就能测出每个 dns 的响应时间。关键不是“能不能通”,而是看它返回结果有多快——这直接影响网页打开、app store 下载等所有联网行为。
用 dig 测单个 DNS 的解析延迟
这是最常用也最准确的方法。系统自带,无需安装,结果里明确标出查询耗时(QUERY TIME)。
- 打开“终端”,输入:
dig @114.114.114.114 google.com +short
其中@114.114.114.114表示强制走这个 DNS,+short只显示 IP,干净利落。 - 再换一个试试:
dig @223.5.5.5 apple.com +short - 观察每条命令最后输出的 ;; Query time: XX msec —— 数值越小,响应越快。通常低于 30ms 算优秀,超过 100ms 就明显拖慢体验。
批量对比多个 DNS 的平均响应表现
单次测试可能受瞬时网络波动影响。连续跑 5–10 次取平均,更反映真实水平。
- 执行 5 次并统计平均延迟:
for i in {1..5}; do dig @8.8.8.8 github.com +short 2>&1 | grep "Query time"; done | awk '{sum += $4} END {print "Avg:", sum/NR, "ms"}' - 把
@8.8.8.8替换成你想比的地址,比如@114.114.114.114或@223.5.5.5,分别运行,就能横向对比。 - 注意:不要用
nslookup做延迟比对,它不显示毫秒级耗时,也不支持@强制指定+计时一体化操作。
结合系统当前配置验证实际生效效果
你设了 DNS 不代表 macOS 正在用它。得确认当前活跃的是哪个,再测才有意义。
- 先查系统当前首选 DNS:
scutil --dns | grep "nameserver\[0\]"
输出类似nameserver[0] : 114.114.114.114,说明它正在被优先使用。 - 如果想验证这个 DNS 是否真被用于 App Store 或 Safari,可以边测边开个新标签访问
https://1.1.1.1/help(Cloudflare 提供的实时 DNS 检测页),它会显示你当前解析所用的 DNS 地址和延迟。 - 若发现系统显示的首选 DNS 和你手动测的延迟差异大,可能是 DNS 缓存未刷新,此时运行:
sudo dscacheutil -flushcache && sudo killall -HUP mDNSResponder
测 DNS 延迟不靠猜,靠 dig 的 Query time。选哪个 DNS,就看谁在真实场景下返回最快、最稳。











