“五分钟学命令系列”之十八《dig命令》

2015年10月19日16:42:04 评论 6,939

dig和上一篇讲的nslookup命令作用有些类似,都是DNS查询工具。

一、基本命令格式

# dig @dnsserver name querytype

PS:如果你设置的dnsserver是一个域名,那么dig会首先通过默认的上连DNS服务器去查询对应的IP地址,然后再以设置的dnsserver为上连DNS服务器。

如果你没有设置@dnsserver,那么dig就会依次使用/etc/resolv.conf里的地址作为上连DNS服务器。

而对于querytype,如果你看过我上一篇有关nslookup命令的讲解,那么你应该对querytype有所了解,你可以设置A/AAAA/PTR/MX/ANY等值,默认是查询A记录。

二、一些常用选项

1、-c选项

可以设置协议类型(class),包括IN(默认)、CH和HS。

2、 -f选项

dig支持从一个文件里读取内容进行批量查询,这个非常方便。文件的内容要求一行为一个查询请求

# vim test.txt

[root@localhost opt]# dig -f test.txt -c IN -t A

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.6 <<>> www.baidu.com

;; ->>HEADER<>

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.6 <<>> www.163.com

;; ->>HEADER<>

3、-4和-6两个选项

用于设置仅适用哪一种作为查询包传输协议,分别对应着IPv4和IPv6

4、 -t选项

用来设置查询类型,默认情况下是A,也可以设置MX等类型

# dig 163.com -t mx

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.6 <<>> 163.com -t

->>HEADER<>

163.com. 5903 IN MX 10 163mx01.mxmail.netease.com.

163.com. 5903 IN MX 10 163mx03.mxmail.netease.com.

163.com. 5903 IN MX 10 163mx02.mxmail.netease.com.

163.com. 5903 IN MX 50 163mx00.mxmail.netease.com.

5、-x选项

是逆向查询选项。可以查询IP地址到域名的映射关系

# dig -x 8.8.8.8

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.6 <<>> -x 8.8.8.8

->>HEADER<>

;; ANSWER SECTION:

8.8.8.8.in-addr.arpa. 22210 IN PTR google-public-dns-a.google.com.

三、特有查询选项

和刚才的选项不同,dig还有一批所谓的“查询选项”,这批选项的使用与否,会影响到dig的查询方式或输出的结果信息,因此对于这批选项,dig要求显式的在其前面统一的加上一个“+”(加号),这样dig识别起来会更方便,同时命令的可读性也会更强

1、TCP代替UDP

DNS查询过程中的交互是采用UDP的。如果你希望采用TCP方式,可以使用命令

dig +tcp 163.com

# dig +tcp 163.com

2、默认追加域

# dig +domain=baidu.com image

3、跟踪dig全过程

dig非常著名的一个查询选项就是+trace,当使用这个查询选项后,dig会从根域查询一直跟踪直到查询到最终结果,并将整个过程信息输出出来

# dig +trace baidu.com

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.6 <<>> +trace baidu.com
;; global options: printcmd
. 186246 IN NS g.root-servers.net.
. 186246 IN NS h.root-servers.net.
. 186246 IN NS b.root-servers.net.
->>HEADER<>
;; Received 228 bytes from 223.5.5.5#53(223.5.5.5) in 18 ms    //从本地DNS查找到根域DNS列表

com. 172800 IN NS h.gtld-servers.net.
com. 172800 IN NS e.gtld-servers.net.
com. 172800 IN NS l.gtld-servers.net.
com. 172800 IN NS m.gtld-servers.net.
->>HEADER<>
;; Received 487 bytes from 192.112.36.4#53(g.root-servers.net) in 1730 ms  //选择了g.root-servers.net这台根域DNS来查找cn.域DNS列表

baidu.com. 172800 IN NS dns.baidu.com.
baidu.com. 172800 IN NS ns2.baidu.com.
baidu.com. 172800 IN NS ns3.baidu.com.
baidu.com. 172800 IN NS ns4.baidu.com.
baidu.com. 172800 IN NS ns7.baidu.com.
;; Received 197 bytes from 192.12.94.30#53(e.gtld-servers.net) in 567 ms    //选择了e.gtld-servers.net这台cn.域DNS服务器来查找baidu.com的DNS列表

baidu.com. 600 IN A 123.125.114.144
baidu.com. 600 IN A 180.149.132.47
baidu.com. 600 IN A 220.181.57.217
baidu.com. 600 IN A 111.13.101.208
baidu.com. 86400 IN NS dns.baidu.com.
baidu.com. 86400 IN NS ns2.baidu.com.
->>HEADER<>
;; Received 261 bytes from 202.108.22.220#53(dns.baidu.com) in 3311 ms   //最终查找到A记录

4、精简dig输出

a、使用+nocmd的话,可以节省输出dig版本信息

b、使用+short的话,仅会输出最精简的CNAME信息和A记录,其他都不会输出

c、使用+nocomment的话,可以节省输出dig的详情注释信息

d、使用+nostat的话,最后的统计信息也不会输出

e、上面a、c、d都用上的话,现在如下:

# dig +nocmd +nocomment +nostat www.baidu.com

;www.baidu.com. IN A

www.baidu.com. 262 IN CNAME www.a.shifen.com.

www.a.shifen.com. 262 IN A 115.239.210.27

www.a.shifen.com. 262 IN A 115.239.211.112
weinxin
聂扬帆博客
一个分享IT运维相关工作经验和实战技巧的个人博客

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: