Monika Asked: 2022-04-02 05:58:24 +0800 CST2022-04-02 05:58:24 +0800 CST 2022-04-02 05:58:24 +0800 CST 为什么我从不同的 DNS 解析器收到不同的 A 记录? 772 使用 dig查询www.audi.de时,我得到以下响应: Google 的8.8.8.8DNS 服务器返回不同的 A 记录,这是什么原因?它与www.audi.de使用 CDN 有什么关系吗? dns dig 2 个回答 Voted Best Answer user1686 2022-04-02T07:55:17+08:002022-04-02T07:55:17+08:00 是的,许多 CDN 使用“GeoDNS”作为分配流量的一种方式。Akamai 将他们的实施称为“全球流量管理”: 在最传统的用法中,查询的答案是静态的。有人将答案输入到配置文件中,并且仅当文件更改时答案才会更改。 动态 DNS 系统即时计算并返回答案。这可能因一个查询而异。典型用法返回通过动态主机配置协议 (DHCP) 动态分配的服务器的 IP 地址。此地址发生变化,这在大多数家庭 Internet 连接中很常见。 全球流量管理 (GTM) 是一个动态 DNS 系统,用于管理数据中心的流量。从某一时刻到下一时刻,GTM 都会选择最佳答案并将其返回到客户端名称服务器,以响应他们对您的域的查询。 许多公共解析器甚至支持称为“客户端子网”的 EDNS0 功能,该功能向权威服务器(在本例中为 Akamai 的服务器)显示哪个客户端发送了原始查询 - 向下舍入到 /24 或 /64 - 所以答案可能会定制为即使您认为自己躲在公共解析器后面,您的位置也是如此。(Google Public DNS似乎支持 ECS,但 Cloudflare 的 1.1.1.1 DNS 不支持。) 最后,CDN 的权威名称服务器可能只是在不同时间为同一位置返回不同的答案(例如,为了平衡各个主机之间的负载)。因此,如果一个解析器刚刚获得了新数据,而另一个解析器已经缓存了 3 分钟前的数据,那么他们的答案可能仍然不同。 harrymc 2022-04-02T08:33:31+08:002022-04-02T08:33:31+08:00 一个网站可以配置多条A记录,这不是问题。目的是进行循环负载平衡以实现高可用性。 如果为一个域定义了多个 A 记录,它们将由 DNS 服务器以循环顺序返回。 几乎所有浏览器都会收到完整的 A 记录列表,如果使用的记录失败,则会检查其他浏览器,您会看到尝试之间的等待,直到找到工作 IP。然后浏览器将缓存哪个地址正在工作并继续使用该地址以供将来的请求,除非它也失败了,然后它将再次搜索列表。 有关更多信息,请参阅: 为我的域使用多个 A 记录 - Web 浏览器是否会尝试多个 A 记录? 如何配置 DNS 循环负载平衡以实现高可用性
是的,许多 CDN 使用“GeoDNS”作为分配流量的一种方式。Akamai 将他们的实施称为“全球流量管理”:
许多公共解析器甚至支持称为“客户端子网”的 EDNS0 功能,该功能向权威服务器(在本例中为 Akamai 的服务器)显示哪个客户端发送了原始查询 - 向下舍入到 /24 或 /64 - 所以答案可能会定制为即使您认为自己躲在公共解析器后面,您的位置也是如此。(Google Public DNS似乎支持 ECS,但 Cloudflare 的 1.1.1.1 DNS 不支持。)
最后,CDN 的权威名称服务器可能只是在不同时间为同一位置返回不同的答案(例如,为了平衡各个主机之间的负载)。因此,如果一个解析器刚刚获得了新数据,而另一个解析器已经缓存了 3 分钟前的数据,那么他们的答案可能仍然不同。
一个网站可以配置多条A记录,这不是问题。目的是进行循环负载平衡以实现高可用性。
如果为一个域定义了多个 A 记录,它们将由 DNS 服务器以循环顺序返回。
几乎所有浏览器都会收到完整的 A 记录列表,如果使用的记录失败,则会检查其他浏览器,您会看到尝试之间的等待,直到找到工作 IP。然后浏览器将缓存哪个地址正在工作并继续使用该地址以供将来的请求,除非它也失败了,然后它将再次搜索列表。
有关更多信息,请参阅: