Domain-Name-System
為什麼 dig、host 和 nslookup 返回不同的結果?
似乎我的預設(路由器)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 查詢嗎?編輯:正如接受的答案指出的那樣,我錯誤地使用了 a
CNAME
而不是A
記錄。我已經更新了 DNS 條目,現在域名解析正確。Edit2:域和 IP 是假的
定義這個:
test.example.com. IN A 123.123.12.123
會是正確的。
這:
test.example.com. 41 IN CNAME 123.123.12.123.
是無效的。CNAME 必須指向左側顯示的條目:名稱,而不是 IP 地址。
無論如何,這裡的 IP 地址及其最後一個點都被視為名稱,這就是為什麼權限部分指的是根 DNS 伺服器a.root-servers.net。, 因為即使是最低的部分(應該是 123.)也不能根據它找到。
所以第一個命令 (
dig
) 報告了它得到的答案,同時也告訴了 NXDOMAIN,而另外兩個命令無法解析最終結果,只告訴 NXDOMAIN。