我正在使用这个命令来validation我是否正确地设置DNS提供商的东西:
host hostname.example.com ns1.example-nameserver.com
据我所知,这要求ns1.example-nameserver.com查找hostname.example.com并报告答案。 我得到了一个主机未发现的响应,所以我认为我做错了。 但是,没有指定他们的名称服务器(从而允许我的ISP的名称服务器来查找它),我得到了正确的响应( hostname是一个CNAME如果重要的话)。 我无法理解这一点,所以我search了一下,发现了dig命令:
dig @ns1.example-nameserver.com hostname.example.com
据我所知,这和host命令是一样的 – 要求一个特定的名称服务器来查找主机。 因此,我得出结论,他们必须以某种方式做不同的事情,并且caching名称服务器必须使用与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
host , dig和nslookup都共享大部分相同的function。 在这种情况下,您正在询问(向某个特定的域名服务器询问特定的DNS问题), dig和host (和nslookup )的行为完全相同。
对于DNS故障排除, dig是首选,因为它的输出格式更“原始”:在其输出中,它直接显示DNS响应中所有4个字段的内容:问题,答案,权限和其他部分(加上标题中的标志),也有更多的select。 host ,另一方面,有一个更友好的输出格式。
如果你不需要一个命令有一个命令,其他命令没有,或者一个信息是其中一个命令输出,而其他命令却没有,那么这个命令就是一个优先事项。