当我查询域名的 DNS 时,我发现该域名有两个 A 类记录。这两个记录具有相同的名称,但响应的 IP 地址不同。为什么有两个记录具有相同的名称/类型组合?这是什么意思?
答案1
DNS 允许同一类型的多个条目。这样做的一个可能用途是能够在多台服务器上托管一个网站,这样发生故障的可能性就会更小。
例如,您可以请求 superuser.com 的 A 记录,结果如下:
cas@PC0075:/home/cas$ dig superuser.com A
; <<>> DiG 9.9.5-3ubuntu0.10-Ubuntu <<>> superuser.com A
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26473
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4000
;; QUESTION SECTION:
;superuser.com. IN A
;; ANSWER SECTION:
superuser.com. 299 IN A 151.101.193.69
superuser.com. 299 IN A 151.101.129.69
superuser.com. 299 IN A 151.101.1.69
superuser.com. 299 IN A 151.101.65.69
;; Query time: 69 msec
;; SERVER: 172.17.1.1#53(172.17.1.1)
;; WHEN: Tue Dec 06 10:01:18 STD 2016
;; MSG SIZE rcvd: 106
在这种情况下,当我尝试浏览 superuser.com 时,我的计算机实际上将连接到 151.101.193.69、151.101.129.69、151.101.1.69 或 151.101.65.69。我不确定它如何确定选择哪一个,但我猜它是随机的。
另一种使用相同类型的多条记录可能很有用的情况是 MX 记录。这些记录定义了电子邮件应发送到何处,如果第一次尝试失败,则拥有多条记录允许使用备用服务器。
cas@PC0075:/home/cas$ dig cloudflare.com MX
; <<>> DiG 9.9.5-3ubuntu0.10-Ubuntu <<>> cloudflare.com MX
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35678
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 11
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4000
;; QUESTION SECTION:
;cloudflare.com. IN MX
;; ANSWER SECTION:
cloudflare.com. 85863 IN MX 20 alt1.aspmx.l.google.com.
cloudflare.com. 85863 IN MX 30 alt2.aspmx.l.google.com.
cloudflare.com. 85863 IN MX 40 aspmx2.googlemail.com.
cloudflare.com. 85863 IN MX 50 aspmx3.googlemail.com.
cloudflare.com. 85863 IN MX 10 aspmx.l.google.com.
;; ADDITIONAL SECTION:
alt1.aspmx.l.google.com. 292 IN A 74.125.68.27
alt1.aspmx.l.google.com. 292 IN AAAA 2404:6800:4003:c02::1a
alt2.aspmx.l.google.com. 292 IN A 108.177.97.27
alt2.aspmx.l.google.com. 292 IN AAAA 2404:6800:4008:c00::1b
aspmx2.googlemail.com. 292 IN A 74.125.68.27
aspmx2.googlemail.com. 292 IN AAAA 2404:6800:4003:c02::1a
aspmx3.googlemail.com. 292 IN A 108.177.97.27
aspmx3.googlemail.com. 292 IN AAAA 2404:6800:4008:c00::1b
aspmx.l.google.com. 292 IN A 173.194.79.27
aspmx.l.google.com. 292 IN AAAA 2a00:1450:4013:c02::1b
;; Query time: 174 msec
;; SERVER: 172.17.1.1#53(172.17.1.1)
;; WHEN: Tue Dec 06 10:03:31 STD 2016
;; MSG SIZE rcvd: 393
如您所见,Cloudflare 使用 G Suite 来处理电子邮件,并定义了 5 个不同的 MX 记录。我的邮件客户端将按优先级升序浏览这些记录,从aspmx.l.google.com.
优先级 10 开始,到 结束aspmx3.googlemail.com.
。由于这些 MX 记录指向另一个域,我的dig
命令也会查找这些记录。您可以看到其中一些邮件服务器实际上共享相同的 IP 地址,这仍然会给您留下 3 个不同的 IP 地址,您可以连接到这些地址来尝试传递邮件。我猜想 Google 会做一些路由魔术,这些实际上是不同的服务器,但老实说,我不知道。
如果您想强制您的计算机始终连接到特定的 IP 地址而不修改域的 DNS 记录,您可以随时修改您的 hosts 文件。
总结:拥有两个相同类型的 DNS 记录通常是一件好事,因为这意味着如果其中任何一个发生故障,还有额外的资源可用。如果您不确定要连接到哪台机器,这可能会使调试更加困难。
答案2
这仅意味着该地址有两个服务器(或至少有两个具有这些 IP 的端点)。
例如,如果你搜索谷歌,你会发现它有很多地址(和服务器)