![为什么 dig、host 和 nslookup 返回的结果不同?](https://linux22.com/image/760233/%E4%B8%BA%E4%BB%80%E4%B9%88%20dig%E3%80%81host%20%E5%92%8C%20nslookup%20%E8%BF%94%E5%9B%9E%E7%9A%84%E7%BB%93%E6%9E%9C%E4%B8%8D%E5%90%8C%EF%BC%9F.png)
似乎我的默认(路由器)DNS服务器根据用于查询的工具返回不同的结果。
使用
dig
:$ dig @192.168.1.2 test.example.com ; <<>> DiG 9.16.8-Debian <<>> @192.168.1.2 test.example.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 58608 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;test.example.com. IN A ;; ANSWER SECTION: test.example.com. 41 IN CNAME 123.123.12.123. ;; AUTHORITY SECTION: . 3357 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2020112400 1800 900 604800 86400 ;; Query time: 0 msec ;; SERVER: 192.168.1.2#53(192.168.1.2) ;; WHEN: Tue Nov 24 10:12:40 CET 2020 ;; MSG SIZE rcvd: 148
可以看到,成功找到了 的IP地址test.example.com
,也就是123.123.12.123
。但是下面两个工具却没有找到。
使用
host
:$ host test.example.com 192.168.1.2 Using domain server: Name: 192.168.1.2 Address: 192.168.1.2#53 Aliases: Host test.example.com not found: 3(NXDOMAIN)
使用
nslookup
:$ nslookup test.example.com 192.168.1.2 Server: 192.168.1.2 Address: 192.168.1.2#53 ** server can't find test.example.com: NXDOMAIN
dig
这是怎么回事?为什么、host
和的结果有差异nslookup
?它们在底层不是都执行相同的 DNS 查询吗?
編輯:如接受的答案指出,我错误地使用了记录CNAME
而不是A
记录。此后,我已更新 DNS 条目,现在域名解析正确。
编辑2:域名和IP都是假的
答案1
定义:
test.example.com. IN A 123.123.12.123
是正确的。
这:
test.example.com. 41 IN CNAME 123.123.12.123.
无效。CNAME 必须指向左侧显示的条目:名称,而不是 IP 地址。
这里的 IP 地址和最后一个点无论如何都会被当作一个名称,这就是为什么权限部分指的是根 DNS 服务器a.根服务器.net。,因为根据它甚至找不到最低的部分(即 123)。
因此第一个命令(dig
)报告它得到的答案,而还告诉NXDOMAIN,而另外两个命令无法解析最终结果而只是告诉NXDOMAIN。