域名解析 反向解析,解析域名的信息

直接运行dig

[root@localhost named]# dig
; <<>> DiG 9.11.2 <<>> # 版本信息
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61671
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;. IN NS # dig会向默认的上连DNS服务器查询“.”(根域)的NS记录
;; ANSWER SECTION:
. 236483 IN NS e.root-servers.net.
. 236483 IN NS c.root-servers.net.
. 236483 IN NS b.root-servers.net.
. 236483 IN NS m.root-servers.net.
. 236483 IN NS h.root-servers.net.
. 236483 IN NS a.root-servers.net.
. 236483 IN NS i.root-servers.net.
. 236483 IN NS g.root-servers.net.
. 236483 IN NS k.root-servers.net.
. 236483 IN NS f.root-servers.net.
. 236483 IN NS l.root-servers.net.
. 236483 IN NS j.root-servers.net.
. 236483 IN NS d.root-servers.net.
;; Query time: 78 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Thu Jan 04 09:12:56 CST 2018
;; MSG SIZE rcvd: 239

直接运行 dig 加个点

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

[root@localhost named]# dig .
; <<>> DiG 9.11.2 <<>> .
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55707
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;. IN A [[查询根域的A记录]]?
;; AUTHORITY SECTION:
. 63890 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2018010201 1800 900 604800 86400
;; Query time: 75 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Thu Jan 04 09:17:03 CST 2018
;; MSG SIZE rcvd: 103

指定DNS服务器来查询域名的信息

dig @dnsserver name querytype(A/AAAA/PTR/MX/ANY等值)
dig @8.8.8.8 duchaoqun.com A # 默认查询A记录.
dig @8.8.8.8 duchaoqun.com NS
dig @8.8.8.8 duchaoqun.com -t NS # -t可以省略,最好不要省略.
dig @8.8.8.8 duchaoqun.com -t ANY # ANY可以查询所有的内容.
# 注意: 如果你没有设置@dnsserver, 系统会在/etc/resolv.conf中依次作为查询地址

其他待学习内容

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

2 -f选项,dig支持从一个文件里读取内容进行批量查询,这个非常体贴和方便。文件的内容要求一行为一个查询请求。来个实际例子吧:

$ 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](http://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](http://www.sohu.com)  
;; Got answer:  
;; ->>HEADER<  

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

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

$ 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选项可以显式设置你要查询的域名,这样可以避免和其他众多的参数、选项相混淆,提高了命令的可读性,来个例子:

$ 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地址到域名的映射关系。举一个例子:

$ 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方式,需要这样:

$ 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会从根域查询一直跟踪直到查询到最终结果,并将整个过程信息输出出来。

$ dig +trace [roclinux.cn](http://roclinux.cn)
 
; <<>> DiG 9.2.4 <<>> +trace [roclinux.cn](http://roclinux.cn)  
;; global options: printcmd  
. 335937 IN NS [l.root-servers.net](http://l.root-servers.net).  
. 335937 IN NS [b.root-servers.net](http://b.root-servers.net).  
. 335937 IN NS [d.root-servers.net](http://d.root-servers.net).  
. 335937 IN NS [k.root-servers.net](http://k.root-servers.net).  
. 335937 IN NS [h.root-servers.net](http://h.root-servers.net).  
. 335937 IN NS [j.root-servers.net](http://j.root-servers.net).  
. 335937 IN NS [a.root-servers.net](http://a.root-servers.net).  
. 335937 IN NS [e.root-servers.net](http://e.root-servers.net).  
. 335937 IN NS [c.root-servers.net](http://c.root-servers.net).  
. 335937 IN NS [m.root-servers.net](http://m.root-servers.net).  
. 335937 IN NS [g.root-servers.net](http://g.root-servers.net).  
. 335937 IN NS [i.root-servers.net](http://i.root-servers.net).  
. 335937 IN NS [f.root-servers.net](http://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](http://c.dns.cn).  
cn. 172800 IN NS [a.dns.cn](http://a.dns.cn).  
cn. 172800 IN NS [b.dns.cn](http://b.dns.cn).  
cn. 172800 IN NS [e.dns.cn](http://e.dns.cn).  
cn. 172800 IN NS [ns.cernet.net](http://ns.cernet.net).  
cn. 172800 IN NS [d.dns.cn](http://d.dns.cn).  
;; Received 292 bytes from 192.228.79.201#53([b.root-servers.net](http://b.root-servers.net)) in 460 ms [//选择了b.root-servers.net这台根域DNS来查找cn.域DNS列表](https://xn--b-nv6a656dhs6b.root-servers.xn--netDNScn-x60nw82awn3ajkmtrbp7an960b.xn--DNS-gh2e67xey2f)
 
[roclinux.cn](http://roclinux.cn). 21600 IN NS [ns11.edong.com](http://ns11.edong.com).  
[roclinux.cn](http://roclinux.cn). 21600 IN NS [ns12.edong.com](http://ns12.edong.com).  
;; Received 76 bytes from 203.119.27.1#53([c.dns.cn](http://c.dns.cn)) in 0 ms [//选择了c.dns.cn这台cn.域DNS服务器来查找roclinux.cn的DNS列表](https://xn--c-nv6a656dhs6b.dns.xn--cncn-rg1g7682a.xn--DNSroclinux-x79r160b43epn2coip2lb30d.xn--cnDNS-1k6hv98s853a)
 
[roclinux.cn](http://roclinux.cn). 3600 IN A 116.255.245.206  
[roclinux.cn](http://roclinux.cn). 3600 IN NS [ns12.edong.com](http://ns12.edong.com).  
[roclinux.cn](http://roclinux.cn). 3600 IN NS [ns11.edong.com](http://ns11.edong.com).  
;; Received 124 bytes from 61.147.124.145#53([ns11.edong.com](http://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