我们有一个 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