![DNS 查找中答案顺序的重要性](https://linux22.com/image/720263/DNS%20%E6%9F%A5%E6%89%BE%E4%B8%AD%E7%AD%94%E6%A1%88%E9%A1%BA%E5%BA%8F%E7%9A%84%E9%87%8D%E8%A6%81%E6%80%A7.png)
DNS 应答的顺序有多重要?
例子:
如果你host -a google.com
在终端中输入,你会看到:
;; ANSWER SECTION:
google.com. 300 IN A 172.217.21.14
google.com. 300 IN AAAA 2a00:1450:4016:80b::200e
google.com. 3600 IN TXT "v=spf1 include:_spf.google.com ~all"
google.com. 345600 IN NS ns4.google.com.
google.com. 600 IN MX 30 alt2.aspmx.l.google.com.
google.com. 600 IN MX 40 alt3.aspmx.l.google.com.
google.com. 345600 IN NS ns2.google.com.
google.com. 60 IN SOA ns1.google.com. dns-admin.google.com. 192227941 900 900 1800 60
google.com. 300 IN TXT "docusign=05958488-4752-4ef2-95eb-aa7ba8a3bd0e"
google.com. 600 IN MX 20 alt1.aspmx.l.google.com.
google.com. 600 IN MX 50 alt4.aspmx.l.google.com.
google.com. 345600 IN NS ns3.google.com.
google.com. 86400 IN CAA 0 issue "pki.goog"
google.com. 600 IN MX 10 aspmx.l.google.com.
google.com. 345600 IN NS ns1.google.com.
我的问题
回复的顺序有多重要?因为我看到很多网站都是先发送 然后MX
然后TXT
然后SOA
然后 然后 最后NS
然后A
。速度有差异吗,还是其他原因?
答案1
查询host -a
记录ANY
。这是 DNS 中特殊的“魔法”类型之一。ANY 不是查询 A、AAAA 或 MX 等单一类型,而是检索所有可用的给定名称的类型。
ANY
请求主要是人类操作员的诊断工具。通常,应用程序只会针对单一特定类型进行查询。
ANY
返回响应的顺序无关紧要。
当你查询特定的记录类型时,即使用host -t MX google.com
或dig -t A serverfault.com
,你会得到多个响应,可能确实有相关效果按照返回的顺序。
名称服务器和解析器通常执行轮询 DNS当特定查询将导致多个响应时。它们发送这些响应的顺序会因请求的不同而不同。由于大多数客户端将连接到它们收到的第一个响应,因此这种变化将导致一些负载平衡。
A
,AAAA
,NS
(并且可能其他的) - 允许多个响应,并且可能出现循环 DNS。
例如,看看当您对 serverfault.com ip 地址执行多次查找时会发生什么:
$ host -t A serverfault.com
serverfault.com has address 151.101.193.69 <=== 1
serverfault.com has address 151.101.1.69 <=== 2
serverfault.com has address 151.101.65.69 <=== 3
serverfault.com has address 151.101.129.69 <=== 4
$ host -t A serverfault.com
serverfault.com has address 151.101.1.69 <=== 2
serverfault.com has address 151.101.65.69 <=== 3
serverfault.com has address 151.101.129.69 <=== 4
serverfault.com has address 151.101.193.69 <=== 1
$ host -t A serverfault.com
serverfault.com has address 151.101.65.69 <=== 3
serverfault.com has address 151.101.129.69 <=== 4
serverfault.com has address 151.101.193.69 <=== 1
serverfault.com has address 151.101.1.69 <=== 2
MX
- 允许多个响应。解析器返回它们的顺序通常对客户端来说并不重要,因为MX
记录优先定义可用 MX 记录的相对排名的字段,但具有相同优先级的多个 MX 记录应导致类似于例如多个 A 记录的循环效果:
_ MX preference aka priority
/
google.com. 600 IN MX 30 alt2.aspmx.l.google.com.
google.com. 600 IN MX 40 alt3.aspmx.l.google.com.
google.com. 600 IN MX 20 alt1.aspmx.l.google.com.
google.com. 600 IN MX 50 alt4.aspmx.l.google.com.
google.com. 600 IN MX 10 aspmx.l.google.com.
SOA
- 只允许一个回复,排序不是问题
CNAME
- 只允许一个答案(参见此问答),订购不是问题