菜单
中文 (简体)

用 AdGuard DNS 连接谷歌域名速度很慢的问题已解决了

最近我们不断收到大批量的关于 AdGuard DNS 运行速度缓慢的投诉。当时,我们一直无法找到该问题的原因。我们在世界不同位置都会测量速度,按照我们的测量数据,所有位置的速度都没问题。

但是我们终于找到了问题根源。我们发现,这个问题与 AdGuard DNS 无关。换句话说,AdGuard DNS 运行并没有错误。真正的问题在于 DNS 返回的 IP 地址。对一些网域(在大部分情况下,是谷歌的域名)AdGuard DNS 返回了谷歌中国的域名的 IP 地址。果不其然,对不少住在中国国外的用户而言,这些地址运行很慢。

那发生了什么呢?为何会出现这种问题?在下文可以找到所有的解答,但是首先我们需要向大家道歉。很抱歉,我们解决该问题的时间比预想的还要长。

DNS 工作原理

首先让我们看一下 DNS 的基本工作原理是什么。DNS 不是集中系统,每一个网域有其独立的 DNS 服务器,也叫做权限域名服务器。递归 DNS 解析器(正如 AdGuard DNS)就从权限域名服务器获取响应。

当 AdGuard DNS 获取您的 DNS 请求时,会发生什么?

第一步是检查缓存。 如果 IP 地址已保存在 AdGuard DNS 内部缓存,那么很可能我们已知哪一个 IP 地址会响应您的请求。在大部分情况下,此过程就是如此, AdGuard DNS 会立刻返回 IP 地址。

第二步是 DNS 解析。 如果缓存里没有已保存的响应,则需要访问权限域名服务器。比如,假设您要求 AdGuard DNS 提供 example.org 域名的 IP 地址。

首先,我们需要了解哪一个服务器负责 org 网域。为此,我们需要查看所谓的 DNS 根服务器。世界上只有 14 个 DNS 根服务器。点击这里您可以查看其完整列表。它们的唯一任务是知道每一个服务器所负责的每一个第一级域名(比如,comorg 等等)。

其中一台根服务器告知我们一共有六台名称服务器负责 org 网域的管理。它们的名称是 "TLD 名称服务器"。TLD 名称服务器则知道每一台权限域名服务器所负责的每一个 org 域名。

那么,其中一台需要具体告诉我们什么服务器负责 example.org。如此这就是两台服务器的信息。知道这两台服务器后,我们终于能找到最初问题的答案:example.org 的 IP 地址是什么。

来源:Cloudflare

您是否想亲自体验整个系统的工作原理?很简单哟~!比如,您可以使用这个网站

问题到底出自哪里?

一共有四个负责所有谷歌域名的权限域名服务器。这些权限域名服务器配置为允许客户端获取最近谷歌服务器的 IP 地址。AdGuard DNS 在全球拥有约 50 台服务器(即将有更多)。那么,为什么谷歌会向一些服务器返回中国服务器地址?

原因是,AdGuard DNS 服务器有好几个 IP 地址,包括 IPv6 和 IPv4。看起来是在使用 IPv6 时,谷歌没正确检测到 IP 地址的位置,因此谷歌提供了中国的记录而不是 AdGuard DNS 服务器位置的记录。

最后,导致问题的原因并不是大谜团。请注意,当您使用您个人的递归 DNS 服务器时,则无法预测与 IPv6 会发生什么。

为了避免今后再发生类似的问题,我们将所有 DNS 服务器配置为优先使用 IPv4。这样,当您访问谷歌域名时不会再遇到速度很慢的问题。

可否用别的方式来解决该问题?

可以。EDNS Client Subnet 技术问世已久。该技术允许通知权限域名服务器,让它知道您是从哪一个客户端发送的请求。为此,在请求中需要包含客户端子网。不幸的是,该方法有违我们的隐私政策,因此我们无法使用。我们坚守绝不会向第三方分享您的真实 IP 地址的宗旨。

是否有机会使用 EDNS Client Subnet,但继续将 IP 地址保密?有的,我们目前已开始努力实施。您可以在我们博客上查看最新信息,或者在社交媒体上关注我们。以保证您第一时间了解到我们的最新方法。

喜欢这篇文章吗?