为什么主机命令同时返回 A 和 CNAME 记录?

为什么主机命令同时返回 A 和 CNAME 记录?

我们有一个 TTL 为 2 小时的区域。在进行任何更改之前,它A在查找条目时返回一条记录www

我们将条目更改为www指向一条CNAME记录。更改后,我们注意到 host 命令同时返回了一条CNAME记录A,如下所示:

user@osx:~$ host www.example.com
www.example.com has address 192.168.1.2
www.example.com is an alias for vip.example.com.
www.example.com is an alias for vip.example.com.
user@osx:~$ 

这是某些 DNS 服务器缓存的问题吗?如果我们只是让 TTL 完全过期,我们是否会得到CNAME如预期一样没有A记录的结果?

我没有通过 dig 或其他命令获得任何更详细的信息。

编辑:的真实地址与最初返回的记录vip.example.com.完全不同:A

user@osx:~$ host vip.example.com
vip.example.com has address 172.16.4.5
user@osx:~$ 

答案1

dig +trace显示什么吗?它应该显示您收到的响应如何。

答案2

据我所知,这完全正常。查询 aCNAME会返回记录的值A,因为当您查询记录时,这最终是它映射到的位置A

作为 Windows 用户,我使用nslookup。当查询类型设置为时,A我得到:

Server:  bladedc1.live.local
Address: 192.168.163.50

Name:    example.com.au
Address:  x.x.x.x
Aliases:  www.example.com.au

但是当我将查询类型设置为时,CNAME我得到:

www.example.com.au
Server:  bladedc1.live.local
Address: 192.168.163.50

Non-authoritative answer:
www.example.com.au        canonical name = example.com.au

example.com.au    internet address = x.x.x.x

尝试将查询类型设置为CNAME而不是A并查看得到的结果。

答案3

kechara# host cnametest.flame.org
cnametest.flame.org is an alias for www.isc.org.
www.isc.org has address 149.20.64.42
www.isc.org has IPv6 address 2001:4f8:0:2::d

Host 很聪明。它会尝试向用户显示所有可能的数据。不过,dig它是一个更可靠的调试工具。

答案4

您首先应该确定您收到的响应是否从名称服务器开始,还是从链条的下游开始。

$ host -t ns example.com
example.com name server b.iana-servers.net.
example.com name server a.iana-servers.net.
$ host example.com b.iana-servers.net
Using domain server:
Name: b.iana-servers.net
Address: 193.0.0.236#53
Aliases: 

example.com has address 192.0.32.10
$ host example.com a.iana-servers.net.
Using domain server:
Name: a.iana-servers.net.
Address: 192.0.34.43#53
Aliases: 

example.com has address 192.0.32.10

相关内容