在使用 dig查询时www.audi.de
,我收到以下响应:
Google 的8.8.8.8
DNS 服务器返回了不同的 A 记录,这是什么原因?这与www.audi.de
使用 CDN 有什么关系吗?
答案1
是的,许多 CDN 使用“GeoDNS”作为分配流量的一种方式。Akamai 称其实现“全球交通管理”:
在最传统的用法中,查询的答案是静态的。有人将答案输入到配置文件中,只有当文件更改时答案才会更改。
动态 DNS 系统会实时计算并返回答案。每次查询的结果可能不同。典型用法是返回通过动态主机配置协议 (DHCP) 动态分配的服务器的 IP 地址。此地址会发生变化,这在大多数家庭互联网连接中很常见。
全球流量管理 (GTM) 是一个动态 DNS 系统,用于管理您数据中心的流量。GTM 会随时选择最佳答案并将其返回给客户端名称服务器,以响应它们对您的域的查询。
许多公共解析器甚至支持名为“客户端子网”的 EDNS0 功能,该功能向权威服务器(在本例中为 Akamai 的服务器)揭示哪个客户端发送了原始查询(四舍五入为 /24 或 /64),因此答案可能即使您认为自己隐藏在公共解析器后面,也可以根据您的位置进行定制。(Google 公共 DNS好像支持 ECS,但 Cloudflare 的 1.1.1.1 DNS 不支持。)
最后,CDN 的权威域名服务器可能会返回不同的答案在不同的时间对于同一位置(例如,用于在各个主机之间平衡负载)。因此,如果一个解析器刚刚获得新数据,但另一个解析器已在 3 分钟前缓存了该数据,则它们的答案可能仍然不同。
答案2
一个网站可以配置多个 A 记录,这不是问题。目的是进行循环负载平衡以实现高可用性。
如果为域定义了多个 A 记录,则 DNS 服务器将按循环顺序返回这些记录。
几乎所有浏览器都会收到完整的 A 记录列表,如果使用的记录失败,则会检查其他记录,并且您会看到尝试之间需要等待,直到找到可用的 IP。然后,浏览器将缓存哪个地址有效,并继续使用该地址进行未来的请求,除非它也失败,然后它将再次搜索列表。
更多信息请参阅: