如果我们为同一个子域设置了一条 A 记录和一条 CNAME 记录,那么 DNS 查找是如何完成的呢?
例如,
A record:
example.com => xx.xx.xx.xx
www.example.com => xx.xx.xx.xx
CNAME record:
www. => example.com
解析www.example.com时,DNS 解析器是直接查找子域 www 的 A 记录并获取 ip,还是查找 www 的 CNAME 以获取重定向域(example.com),然后查找 A记录example.com到底获取ip?
什么是
CNAME
记录?记录所做的
CNAME
是将所有者名称CNAME
(添加记录的名称)定义为记录值中名称的别名(规范名称,根据记录类型的名称)。请注意,这个别名的定义是在名称级别上的,完全不考虑记录类型。
所有者名称是别名的一个含义是它不能也有其他记录,因为这将与它只是作为另一个名称的别名直接冲突。
从解析器的角度来看,如果您查询
A
,则响应的有效选项是A
输入的答案(如果名称不是别名)或CNAME
输入的答案(如果名称是别名)。将两者取同名不是一种选择(无论如何,这不是标准所允许的并且会定义行为的选项)。那么我的 DNS 服务提供商如何做到这一点呢?
假设他们允许您并排添加
CNAME
和记录的说法是正确的,那么他们的服务会发生一些不明显的事情。A
我会将其分为两个主要选项,在不了解更多信息的情况下,实际上不可能知道哪个与您的情况相关:
CNAME
用户输入的记录,而是从规范名称的末尾解析相关记录,并像直接在别名处一样提供这些记录(这是非标准功能,但某些服务已将这种类型的动态查找实现为“扁平化”CNAME
)。