查询特定名称服务器时,“dig”和“host”之间有什么区别?

查询特定名称服务器时,“dig”和“host”之间有什么区别?

我使用此命令来验证我是否已与 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

我的结论要么正确,要么错误,如果正确的话:

这两种查找方法有什么区别?

如果错误:

host我对 DNS 以及和命令的哪些误解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

答案1

hostdignslookup都具有大部分相同的功能。如果您询问的是(向特定名称服务器询问特定 DNS 问题),dighost(以及nslookup)的行为完全相同。

对于 DNS 故障排除,dig是首选,因为它的输出格式更“原始”:在其输出中,它直接显示 DNS 响应中所有 4 个字段的内容:问题、答案、权限和附加部分(加上标题中的标志),并且它还有更多选项。host另一方面,具有更用户友好的输出格式。

如果您恰好不需要某个命令具有而其他命令没有的选项,或者不需要某个命令输出而其他命令不输出的某条信息,那么这就取决于个人偏好了。

答案2

如果您使用非 FQDN 主机名,结果可能会有所不同,因为host将使用中的搜索域resolv.conf,而dig默认情况下则不会。

如果您想使用(或将其添加到) ,则必须使用该+search选项。digresolv.conf~/.digrc

例如:

$ host foo
foo.myfqdn.com has address 10.1.2.3

$ dig +short foo
# (no result)

$ dig +short +search foo
10.1.2.3

答案3

nslookup命令包含在 Windows 和 BusyBox 中,用于路由器或电视盒等嵌入式设备。这使得它更适合跨平台脚本编写。请参阅https://en.wikipedia.org/wiki/Nslookup

比较的输出示例:

$ nslookup example.com
Server:     127.0.0.53
Address:    127.0.0.53#53

Non-authoritative answer:
Name:   example.com
Address: 93.184.216.34
Name:   example.com
Address: 2606:2800:220:1:248:1893:25c8:1946

dig 以 BIND 区域格式提供响应,其中包含许多详细信息:

$ dig example.com

; <<>> DiG 9.18.1-1ubuntu1.2-Ubuntu <<>> example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41996
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;example.com.           IN  A

;; ANSWER SECTION:
example.com.        7147    IN  A   93.184.216.34

;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Wed Dec 28 23:44:07 EET 2022
;; MSG SIZE  rcvd: 56

主机命令尝试给出解释:

$ host example.com 
example.com has address 93.184.216.34
example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946
example.com mail is handled by 0 .

相关内容