Linux命令之dig命令挖出DNS的秘密

===

【初次见面】

我相信使用nslookup的同学一定比使用dig的同学多,所以还是有必要花些时间给大家介绍一下dig的。

dig,和nslookup作用有些类似,都是DNS查询工具。

dig,其实是一个缩写,即Domain Information Groper。

一些专业的DNS管理员在追查DNS问题时,都乐于使用dig命令,是看中了dig设置灵活、输出清晰、功能强大的特点。

【最简单的dig用法】

最简单的dig用法,当然就是直接输入dig按回车。

?


1

2

3

4

5

6

$ dig

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6_3.2 <<>> //Dig命令的版本信息

;; global options: +cmd

;; Got answer:

;; ->>HEADER<

从上面的输出,你一定观察到了,当直接使用dig命令,不加任何参数和选项时,dig会向默认的上连DNS服务器查询“.”(根域)的NS记录。

【dig加个点】

刚才直接输入dig,这次我们在后面加上一个“.”,看看结果和刚才有何区别:

?


1

2

3

4

5

6

$ dig .

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6_3.2 <<>> .

;; global options: +cmd

;; Got answer:

;; ->>HEADER<

【我想用google-DNS来查baidu.com的A记录】

?


1

2

3

4

5

6

7

$ dig @8.8.8.8 www.baidu.com A //命令格式为dig @dnsserver name querytype

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6_3.2 <<>> @8.8.8.8 www.baidu.com A

; (1 server found)

;; global options: +cmd

;; Got answer:

;; ->>HEADER<

从这个例子,大家学习到了dig的基本的命令格式是:

?


1

dig @dnsserver name querytype

如果你设置的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支持从一个文件里读取内容进行批量查询,这个非常体贴和方便。文件的内容要求一行为一个查询请求。来个实际例子吧:

?


1

2

3

4

5

6

7

8

9

10

11

$ cat querylist //文件内容,共有两个域名需要查询

www.baidu.com

www.sohu.com

$ dig -f querylist -c IN -t A//设置-f参数开始批量查询

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6_3.2 <<>> www.baidu.com

;; global options: +cmd

;; Got answer:

;; ->>HEADER<> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6_3.2 <<>> www.sohu.com

;; Got answer:

;; ->>HEADER<

3 -4和-6两个选项,用于设置仅适用哪一种作为查询包传输协议,分别对应着IPv4和IPv6。

4 -t选项,用来设置查询类型,默认情况下是A,也可以设置MX等类型,来一个例子:

?


1

2

3

4

5

6

$ dig roclinux.cn -t MX

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6_3.2 <<>> roclinux.cn -t MX

;; global options: +cmd

;; Got answer:

;; ->>HEADER<

5 -q选项,其实它本身是一个多余的选项,但是它在复杂的dig命令中又是那么的有用。-q选项可以显式设置你要查询的域名,这样可以避免和其他众多的参数、选项相混淆,提高了命令的可读性,来个例子:

?


1

2

3

4

5

6

$ dig -q www.roclinux.cn

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6_3.2 <<>> -q www.roclinux.cn

;; global options: +cmd

;; Got answer:

;; ->>HEADER<

6 -x选项,是逆向查询选项。可以查询IP地址到域名的映射关系。举一个例子:

?


1

2

3

4

5

6

$ dig -x 193.0.14.129

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6_3.2 <<>> -x 193.0.14.129

;; global options: +cmd

;; Got answer:

;; ->>HEADER<

【dig特有的查询选项(query option)】

和刚才的选项不同,dig还有一批所谓的“查询选项”,这批选项的使用与否,会影响到dig的查询方式或输出的结果信息,因此对于这批选项,dig要求显式的在其前面统一的加上一个“+”(加号),这样dig识别起来会更方便,同时命令的可读性也会更强。
dig总共有42个查询选项,涉及到DNS信息的方方面面,如此多的查询选项,本文不会一一赘述,只会挑出最最常用的几个重点讲解。

【TCP代替UDP】

众所周知,DNS查询过程中的交互是采用UDP的。如果你希望采用TCP方式,需要这样:

?


1

2

3

4

5

6

$ dig +tcp www.baidu.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6_3.2 <<>> +tcp www.baidu.com

;; global options: +cmd

;; Got answer:

;; ->>HEADER<

【默认追加域】

大家直接看例子,应该就能理解“默认域”的概念了,也就能理解+domain=somedomain的作用了:

?


1

2

3

4

5

6

dig +domain=baidu.com image

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6_3.2 <<>> +domain=baidu.com image

;; global options: +cmd

;; Got answer:

;; ->>HEADER<

【跟踪dig全过程】

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

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

$ dig +trace roclinux.cn

; <<>> DiG 9.2.4 <<>> +trace roclinux.cn

;; global options:  printcmd

.                       335937  IN      NS      l.root-servers.net.

.                       335937  IN      NS      b.root-servers.net.

.                       335937  IN      NS      d.root-servers.net.

.                       335937  IN      NS      k.root-servers.net.

.                       335937  IN      NS      h.root-servers.net.

.                       335937  IN      NS      j.root-servers.net.

.                       335937  IN      NS      a.root-servers.net.

.                       335937  IN      NS      e.root-servers.net.

.                       335937  IN      NS      c.root-servers.net.

.                       335937  IN      NS      m.root-servers.net.

.                       335937  IN      NS      g.root-servers.net.

.                       335937  IN      NS      i.root-servers.net.

.                       335937  IN      NS      f.root-servers.net.

;; Received 400 bytes from 10.23.0.231#53(10.23.0.231) in 0 ms //从本地DNS查找到根域DNS列表

cn.                     172800  IN      NS      c.dns.cn.

cn.                     172800  IN      NS      a.dns.cn.

cn.                     172800  IN      NS      b.dns.cn.

cn.                     172800  IN      NS      e.dns.cn.

cn.                     172800  IN      NS      ns.cernet.net.

cn.                     172800  IN      NS      d.dns.cn.

;; Received 292 bytes from 192.228.79.201#53(b.root-servers.net) in 460 ms //选择了b.root-servers.net这台根域DNS来查找cn.域DNS列表

roclinux.cn.            21600   IN      NS      ns11.edong.com.

roclinux.cn.            21600   IN      NS      ns12.edong.com.

;; Received 76 bytes from 203.119.27.1#53(c.dns.cn) in 0 ms //选择了c.dns.cn这台cn.域DNS服务器来查找roclinux.cn的DNS列表

roclinux.cn.            3600    IN      A       116.255.245.206

roclinux.cn.            3600    IN      NS      ns12.edong.com.

roclinux.cn.            3600    IN      NS      ns11.edong.com.

;; Received 124 bytes from 61.147.124.145#53(ns11.edong.com) in 104 ms //最终查找到A记录

【精简dig输出】

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

2 使用+short的话,仅会输出最精简的CNAME信息和A记录,其他都不会输出。就像这样:

?


1

2

3

4

$ dig +short www.baidu.com

www.a.shifen.com.

119.75.218.77

119.75.217.56

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

4 使用+nostat的话,最后的统计信息也不会输出。当+nocmd、+nocomment和+nostat都是用上,是这样:

?


1

2

3

4

5

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

;www.baidu.com.                 IN      A

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

www.a.shifen.com.       244     IN      A       119.75.217.56

www.a.shifen.com.       244     IN      A       119.75.218.77

 

时间: 2024-11-05 17:31:36

Linux命令之dig命令挖出DNS的秘密的相关文章

dig挖出DNS的秘密

[初次见面] 我相信使用nslookup的同学一定比使用dig的同学多,所以还是有必要花些时间给大家介绍一下dig的. dig,和nslookup作用有些类似,都是DNS查询工具. dig,其实是一个缩写,即Domain Information Groper. 一些专业的DNS管理员在追查DNS问题时,都乐于使用dig命令,是看中了dig设置灵活.输出清晰.功能强大的特点. [最简单的dig用法] 最简单的dig用法,当然就是直接输入dig按回车. $ dig ; <<>> DiG

被动信息收集2——使用Dig命令进行DNS信息收集

dig 基本功能 dig sina.com any @8.8.8.8 | 域 |类型|指定DNS| [email protected]:~$ dig sina.com ; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> sina.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR,

Linux下dig命令使用

Dig简介:   Dig是一个在类Unix命令行模式下查询DNS包括NS记录,A记录,MX记录等相关信息的工具.由于一直缺失Dig man page文档,本文就权当一个dig使用向导吧.   Dig的源码是ISC BIND大包的一部分,但是大多编译和安装Bind的文档都不把它包括在内,但是在linux系统下,它通常是某个包的一部分,在Gentoo下是bind-tools,在Redhat/Fedora下是 bind-utils,或者在Debian下是 dnsutils.             

DNS之主从服务器的构建和dig命令的使用

一般来说我们的DNS服务器为了安全不能对所有用户(如通过互联网访问的用户)进行递归,否则DNS服务器容易受到攻击,很不安全 用户请求有以下几种: 有主机通过互联网请求本地NS管理的主机(如ns1.fade.com)的权威答案,应该给予响应(此处不是递归) 有主机从互联网请求本地没有的主机(如请求www.baidu.com 此处是递归 )则不应该给予响应 本地用户通过本地的NS请求www.baidu.com的解析(此处是递归),但应该给予响应 #vim /etc/named.conf option

云服务器 ECS Linux 系统下使用 dig 命令查询域名解析

云服务器 ECS Linux 系统可以使用通常自带的 dig 命令来查询域名解析情况.本文对此进行简要说明. 查询域名 A 记录 命令格式: dig <域名> 比如,查询域名 www.aliyun.com 的解析情况: $ dig www.aliyun.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.7 <<>> www.aliyun.com ;; global options: +cmd

Linux命令(37):dig命令-域名查询工具

dig命令 功能说明 dig和nslookup一样,也是域名查询工具,用来测试域名系统是否正常工作.这二个命令都在bind-utils包下,dig用起来比nslookup方便.用法如下: dig [参数] [选项] 常用参数 选项 说明 @server 如果不想以/etc/resolv.conf来作为dns主机,则可以在此填入其他的IP -t(type) 指定查询类型 -x 逆向查询 +short 提供一个简短的回复,默认是长的 示例                     域名解析为IP地址

Linux dig命令

dig(Domain Information Groper),和nslookup作用有些类似,都是DNS查询工具 1.dig命令格式 dig @dnsserver name querytype 如果你设置的dnsserver是一个域名,首先通过默认的上连DNS服务器去查询对应的IP地址,然后再以设置的dnsserver为上连DNS服务器.如果你没有设置@dnsserver,那么dig就会依次使用/etc/resolv.conf里的地址作为上连DNS服务器 querytype可以设置A/AAAA/

host、dig、nslookup 查询DNS命令

host 命令: 一般格式: host 域名 host -a 域名 常用选项: -a:相当于"-v -t any". -t type:指定要查询的记录类型.默认查询A.AAAA.MX记录. -v:详细方式输出. [[email protected] ~]# host baidu.com baidu.com has address 220.181.57.217 baidu.com has address 111.13.101.208 baidu.com has address 123.1

linux dig命令 转

dig 命令主要用来从 DNS 域名服务器查询主机地址信息. 查询单个域名的 DNS 信息 dig 命令最典型的用法就是查询单个主机的信息. $ dig baidu.com dig 命令默认的输出信息比较丰富,大概可以分为 5 个部分.第一部分显示 dig 命令的版本和输入的参数.第二部分显示服务返回的一些技术详情,比较重要的是 status.如果 status 的值为 NOERROR 则说明本次查询成功结束.第三部分中的 "QUESTION SECTION" 显示我们要查询的域名.第