在 iPhone 上比较 DNS 服务器结果

Linkalyst 的域名查询可以把同一个问题同时发给你的系统 DNS 和至多四个其他解析器。本指南介绍怎样设置一次对比,以及怎样读懂返回的结果,包括那些容易过度解读的地方。

对比做了什么

一次对比会在同一时刻把同一个查询(相同的域名和记录类型)发给多个解析器:系统 DNS,也就是你的设备在当前网络上使用的解析器;以及你选择的至多四个解析器。每个解析器使用各自的协议:标准 DNS 用 UDP 或 TCP,加密 DNS 用 DNS over HTTPS(DoH)或 DNS over TLS(DoT)。

预设有 Cloudflare、Google 和 DNSPod,也可以填入你自己的服务器。自定义 DoH 服务器的地址不能带凭据,路径须为 /dns-query 或 /;DoT 需要分别设置连接的主机和用来验证证书的名称。

这些查询只从 Linkalyst 发出,你设备的 DNS 设置保持不变。

设置一次对比

点几下就能设好:

  1. 打开域名查询,在顶部选「对比」。
  2. 填入一个域名(比如打开很慢的网站),选择记录类型。A 查询 IPv4 地址,AAAA 查询 IPv6 地址。
  3. 想把当前解析器纳入对比,就保持勾选「系统 DNS」。也可以取消勾选,但一次对比至少需要两个解析器。
  4. 在「添加服务商时使用的协议」里选 UDP、TCP、DoH 或 DoT,再点服务商旁边的圆圈把它加入。「指定服务器」用来添加你自己的服务器;点已添加解析器右侧的箭头可以修改它。
  5. 开始对比。一轮最多包含五个解析器。

协议可以混用,比如同一个服务商分别用 UDP 和 DoH,看看在你的网络上协议是否有影响。

读懂响应时间

每一行显示该解析器在本轮用了多长时间。「本轮最快」标出有应答的解析器中最快的一个。它只描述这一轮:Linkalyst 不会挑出“最好的”服务器,单独一轮也说明不了太多。

而且各个解析器的时间测法并不相同。你添加的解析器每次查询都会新建连接,时间里包含建立连接的过程,DoH 和 DoT 还包含 TLS 握手。系统 DNS 不报告它是怎样连到服务器的,还可能从缓存应答,所以热门域名的系统 DNS 时间特别短时,查询可能根本没有离开设备。展开某一行并打开「完整响应」,可以看到这些条件。

作为一般常识:日常使用中,加密 DNS 通常会在多次查询之间保持连接,所以在新连接上测得的时间会高估它的开销。

答案不一致时

如果各解析器返回的记录不同,Linkalyst 会显示「各解析器返回的记录不一致」,并给与多数答案不同的行标上「不一致」。记录的排列顺序不算差异。

答案不同往往是正常的。大型网站和内容分发网络会按查询看起来来自哪里,返回就近的地址;每个解析器从各自的位置发起查询,所以两个正确的答案也可能不同。解析器过滤了某些域名、记录刚刚修改而缓存还没更新,或者网络改写了 DNS 答案,也会造成不同。

要检查某个地址,切换到「查询」,用相应的解析器查这个域名,再把结果里的地址填入延迟测试或端口检测。

没有记录,还是失败

解析器应答了但没有记录,和根本连不上解析器,是两回事。展开某一行可以看到是哪一种:

  • NXDOMAIN,显示为「域名不存在」:解析器表示这个域名不存在。
  • NODATA:域名存在,但没有你查询的那种类型的记录,比如只有 IPv4 地址的域名查 AAAA。
  • 超时:5 秒内没有收到完整的回复;对你添加的解析器,这段时间包括建立连接。超时不代表域名不存在。
  • 失败。「完整响应」里的「失败层级」会说明:连不上服务器时是「连接」;安全连接无法建立或验证时是 TLS;DoH 服务器返回错误状态或返回的不是 DNS 时是 HTTP;回复格式有误或报告服务器错误时是 DNS。

系统 DNS 不提供响应码,所以对它只能看到没有记录,分不清是 NXDOMAIN 还是 NODATA。

如果 DoH 或 DoT 失败、同一服务商的 UDP 却正常,可能是网络屏蔽或拦截了加密 DNS。有些公共、学校和公司网络会这样做;DoT 使用专门的端口(默认 853),更容易被屏蔽。出现这种情况时,Linkalyst 不会退回未加密的 DNS,也不会换服务商,失败会如实显示。

重复测试并保留结果

解析器的耗时会随时段、所在网络和已有缓存而变化。同样的对比请多做几次,稍后或换个网络再做,然后再作决定。这次最快的解析器,下次不一定最快。

之前的对比列在「最近 5 次」里,每一轮也都会在「记录」里存成一份报告,之后可以回看,或把其中的 DNS 结果分享为 CSV。

如果你想更换 DNS

Linkalyst 从不更改设备的 DNS 设置,对比只是从 App 里发出查询。如果结果让你想换一个解析器,需要在 Linkalyst 之外更改:在 iOS 里(比如只针对某个 Wi-Fi 网络)、通过 DNS 服务商提供的描述文件或 App,或者在路由器上设置,由路由器把设置分配给网络里的每台设备。

改完后,再做一次同样的对比。新的解析器这时会作为「系统 DNS」应答,你就能看出有没有变化。

常见问题

应该换成最快的那个解析器吗?

不能只凭一轮结果。每轮的时间都会波动,你添加的解析器每次都要付出新建连接的时间,系统 DNS 还可能从缓存应答。多轮下来都更快、给出的地址也能正常使用,才是更可靠的信号。速度也只是因素之一:过滤、隐私和可靠性同样重要,而这些 Linkalyst 都不作判断。

「系统 DNS」是哪台服务器?

它是你的设备在当前网络上使用的解析器,通常由路由器或运营商分配,也可能由 VPN 或 DNS 描述文件设置。系统不会告诉 App 是哪台上游服务器应答的、用什么协议、响应码是什么。「本机」会列出系统报告的 DNS 服务器地址。

为什么 UDP 正常,DoH 或 DoT 却失败?

通常是网络屏蔽或拦截了加密 DNS,或者公共网络的登录页面还没完成。服务器证书无法按你填写的名称验证时,也会出现 TLS 失败。在另一个网络上做同样的对比:如果那里正常,原因就在第一个网络。

为什么每次得到的地址都不一样?

很多网站会在几个地址之间轮换,或按位置和负载给出不同答案,所以答案变化通常是正常的。TTL 短的记录会被频繁重新获取。Linkalyst 会按收到的原样显示每条记录的 TTL。

全部指南

Linkalyst 可在 App Store 免费下载,适用于 iPhone 和 iPad。

在 App Store 下载