CNAME 记录是否会导致第二次 DNS 查找?

CNAME 记录是否会导致第二次 DNS 查找?

假设我们有一个名为 www.foo.com 的子域名,它有一个指向 foo.bar.cc 的 CNAME 记录。而 Foo.bar.cc 又有一个指向 IP 地址 1.2.3.4 的 A 记录。

现在,如果我对 www.foo.com 进行 DNS 查找,我会得到如下答案:

www.foo.com. IN CNAME foo.bar.cc.
foo.bar.cc. IN A 1.2.3.4

我的问题是,foo.bar.cc 在哪个阶段被解析?递归 DNS 服务器在将响应发送回客户端之前是否完成了解析?还是客户端向 DNS 服务器发出第二个请求,这次是针对 foo.bar.cc?还是取决于 DNS 服务器是否已经缓存了 foo.bar.cc 的条目?

我之所以问这个问题,是因为某个特定的递归 DNS 服务器只返回第一行,即它不解析 CNAME。但是,大约 20 秒后,对同一主机的后续请求将包含两行。

答案1

这 2 条记录在同一个请求中一起返回。您可以通过以下命令找到这一点

dig +trace www.foo.com

例如,我的域名 photoblog.com 有一个 www 的 cname,因此 photoblog 的名称服务器向我发送的最后 2 个请求如下所示

photoblog.com.      172800  IN  NS  ns1.photoblog.com.
photoblog.com.      172800  IN  NS  ns2.photoblog.com.
;; Received 103 bytes from 192.43.172.30#53(i.gtld-servers.net) in 196 ms

www.photoblog.com.  600 IN  CNAME   photoblog.com.
photoblog.com.      600 IN  A   74.52.128.18
photoblog.com.      60  IN  NS  ns2.photoblog.com.
photoblog.com.      60  IN  NS  ns1.photoblog.com.
;; Received 133 bytes from 74.52.128.18#53(ns2.photoblog.com) in 59 ms

正如您所看到的,请求向 ns1/ns2 询问 www.photoblog.com 的 IP 是什么,并且它返回它是 photoblog.com 的 cname,这是该 A 记录的 IP。

相关内容