我使用这个命令来验证是否与 DNS 供应商正确设置了一切:
host hostname.example.com ns1.example-nameserver.com
据我所知,这个问题要求 ns1.example-nameserver.com
查找 hostname.example.com
并报告答案。我一开始得到了一个主机未找到的响应,所以我以为自己做错了。然而,如果不指定他们的名称服务器(从而允许我的ISP的名称服务器查找),我得到了正确的响应(如果有关系,hostname
是一个 CNAME
)。我无法理解这一点,所以我四处搜索并找到了 dig
命令:
dig @ns1.example-nameserver.com hostname.example.com
据我所知,这个功能与host
命令相同 - 请求特定的名称服务器查找主机。因此,我得出结论,它们必须以某种不同的方式进行操作,并且缓存名称服务器必须使用与dig
相同的方法。
我的结论要么正确要么错误,如果是正确的:
这两种查找方法有什么区别?
如果是错误的:
关于DNS和host
和dig
命令,导致我得出这个结论的误解是什么?
示例输出:
$ host cardiff.tzmchapters.org ns1.livedns.co.uk
Using domain server:
Name: ns1.livedns.co.uk
Address: 213.171.192.250#53
Aliases:
Host cardiff.tzmchapters.org not found: 3(NXDOMAIN)
$ dig @ns1.livedns.co.uk cardiff.tzmchapters.org
; <<>> DiG 9.8.3-P1 <<>> @ns1.livedns.co.uk cardiff.tzmchapters.org
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 23620
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;cardiff.tzmchapters.org. IN A
;; ANSWER SECTION:
cardiff.tzmchapters.org. 3600 IN CNAME ghs.google.com.
;; AUTHORITY SECTION:
google.com. 3600 IN SOA ns1.livedns.co.uk. admin.google.com. 1354213742 10800 3600 604800 3600
;; Query time: 27 msec
;; SERVER: 213.171.192.250#53(213.171.192.250)
;; WHEN: Mon Apr 22 23:47:05 2013
;; MSG SIZE rcvd: 128
dig
和host
都报告了NXDOMAIN
。使用dig
,你可以在头部看到它(输出的第5行非空行),而使用host
则更明显。NXDOMAIN
表示该域名不存在。然而,在回答部分却返回了一个CNAME
!我相信这是DNS服务器中的一个错误! - Celadadig
和host
是否都发送完全相同的查询数据包,获得完全相同的响应数据包(除了时间戳之外),但是解释方式不同?当host
看到NXDOMAIN
时,是否会立即退出? - jhabbott