![谷歌如何每次返回不同的 A 记录?](https://linux22.com/image/750114/%E8%B0%B7%E6%AD%8C%E5%A6%82%E4%BD%95%E6%AF%8F%E6%AC%A1%E8%BF%94%E5%9B%9E%E4%B8%8D%E5%90%8C%E7%9A%84%20A%20%E8%AE%B0%E5%BD%95%EF%BC%9F.png)
我使用 DNS 查找工具查找www.google.com 的Name Server
条目A Records
以下是内容
www.google.com results
ns2.google.com
IN 172.217.15.68
它显示一条 A 记录,但未找到 CNAME 记录。但当我www.google.com
从不同的网络解析时,它返回了不同的 IP 地址。他们是怎么做到的?他们使用 DNS 循环吗?但为什么我只找到一条 A 记录呢?
$ dig www.google.com +short
172.217.21.164
$ dig www.google.com +short
216.58.211.4
$ dig www.google.com +short
172.217.20.36
答案1
我想我已经明白了,所以我会与其他可能想知道这是如何运作的人分享。
嗯,据我所知,Google 拥有自己的 DNS 权威名称服务器(这意味着它每次都可以返回它想要的任何 IP 地址),因此它首先确定您的 IP 的位置,然后随机吐出一个位于您附近的服务器的 A 地址(或多个地址)。
这就是为什么每次你对 www.google.com 进行 DNS 查询时(或从世界各地的不同位置查询),你都会得到不同的 A IPv4 地址(或多个地址)。这就是它们平衡负载的方式,然后它们可以进一步平衡负载。这就像强化版的“循环 DNS”。
这是我为了说明这一点而制作的一张小图。因此,您的计算机(或路由器)会询问 DNS 解析器服务器 A 记录的用途www.google.com
,如果缓存中没有存储该记录,它将联系Root DNS server
并询问它。它将返回名称服务器的 IP 地址.com
,因此 DNS 解析器会询问 .com 名称服务器。.com 名称服务器将返回 Google 名称服务器的地址ns.google.com
。然后它继续询问。它(看到您来自欧洲/亚洲/美洲)将返回距离您最近的服务器的 IP 地址。然后,DNS 解析器服务器将以轮询随机方式将这些记录返回给您,您的客户端将首先从该列表中选择第一个记录。我想如果它不可用,它将选择下一个,依此类推。
如果我有错的话,请随时纠正我。