为你介绍Linux系统下解析域名的dig命令!
今天马哥教育要跟大家分享的文章是关于Linux系统下解析域名的dig命令!正在从事Linux相关工作的小伙伴们来看一看希望对大家有所帮助哦! Linux入门新手和正在Linux学习的小伙伴快来看一看吧,希望能够对大家有所帮助!
一、查询单个域名的DNS信息
dig 命令最典型的用法就是查询单个主机的信息。
Linuxidc@Linuxidc:~$ dig www.Linuxidc.com
; < <>> DiG 9.11.3-1Ubuntu1.5-Ubuntu < <>> www.Linuxidc.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER< <- opcode: QUERY, status: NOERROR, id: 17774
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;www.Linuxidc.com. IN A
;; ANSWER SECTION:
www.Linuxidc.com. 5 IN A 122.228.238.15
www.Linuxidc.com. 5 IN A 106.42.25.203
;; Query time: 10 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Sun Mar 03 10:55:35 CST 2019
;; MSG SIZE rcvd: 77
dig命令默认的输出信息比较丰富,大概可以分为。5个部分
第一部分显示dig命令的版本和输入的参数。
第二部分显示服务返回的一些技术详情,比较重要的是status。如果status的值为NOERROR则说明本次查询成功结束。
第三部分中的"QUESTION SECTION"显示我们要查询的域名。
第四部分的"ANSWER SECTION"是查询到的结果。
第五部分则是本次查询的一些统计信息,比如用了多长时间,查询了哪个DNS服务器,在什么时间进行的查询等等。
默认情况下dig命令查询A记录,上图中显示的A即说明查询的记录类型为A记录。在尝试查询其它类型的记录前让我们先来了解一下常见的DNS记录类型。
二、常见DNS记录的类型
类型目的
A地址记录,用来指定域名的IPv4地址,如果需要将域名指向一个IP地址,就需要添加A记录。
AAAA用来指定主机名(或域名)对应的IPv6地址记录。
CNAME如果需要将域名指向另一个域名,再由另一个域名提供ip地址,就需要添加CNAME记录。
MX如果需要设置邮箱,让邮箱能够收到邮件,需要添加MX记录。
NS域名服务器记录,如果需要把子域名交给其他DNS服务器解析,就需要添加NS记录。
SOA SOA这种记录是所有区域性文件中的强制性记录。它必须是一个文件中的第一个记录。
TXT可以写任何东西,长度限制为255。绝大多数的TXT记录是用来做SPF记录(反垃圾邮件)。
三、查询CNAME类型的记录
除了A记录,常见的DNS记录还有CNAME,我们可以在查询时指定要查询的DNS记录类型:
Linuxidc@Linuxidc:~$ dig m.Linuxidc.com CNAME
; < <>> DiG 9.11.3-1ubuntu1.5-Ubuntu < <>> m.Linuxidc.com CNAME
;; global options: +cmd
;; Got answer:
;; ->>HEADER< <- opcode: QUERY, status: NOERROR, id: 61349
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;m.Linuxidc.com. IN CNAME
;; Query time: 26 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Sun Mar 03 11:20:34 CST 2019
;; MSG SIZE rcvd: 43
这样结果中就只有CNAME的记录。其实我们可以在查询中指定任何DNS记录的类型。
四、从指定的DNS服务器上查询
由于一些原因,希望从指定的DNS服务器上进行查询(从默认的DNS服务器上获得的结果可能不准确)。指定DNS服务器的方式为使用@符号:
Linuxidc@Linuxidc:~$ dig @8.8.8.8 m.Linuxidc.com
; < <>> DiG 9.11.3-1ubuntu1.5-Ubuntu < <>> @8.8.8.8 m.Linuxidc.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER< <- opcode: QUERY, status: NOERROR, id: 38966
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;m.Linuxidc.com. IN A
;; ANSWER SECTION:
m.Linuxidc.com. 199 IN A 122.228.238.71
m.Linuxidc.com. 199 IN A 113.107.238.155
;; Query time: 120 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sun Mar 03 11:21:48 CST 2019
;; MSG SIZE rcvd: 75
从上图可以看到本次查询的DNS服务器为8.8.8.8。
如果不指定DNS服务器,dig会依次使用/etc/resolv.conf里的地址作为DNS服务器:
Linuxidc@Linuxidc:~$ dig m.Linuxidc.com
上面查询的DNS服务器就变成了:
五、反向查询
在前面的查询中我们指定了查询服务器为8.8.8.8,这是谁家的DNS服务器?其实我们可以使用dig的-x选项来反向解析IP地址对应的域名:
Linuxidc@Linuxidc:~$ dig -x 8.8.8.8 +short
google-public-dns-a.google.com.
好吧,应该是Google的,可以放心使用了。
六、控制显示结果
dig命令默认返回的结果展示详细的信息,如果要获得精简的结果可以使用+short选项:
Linuxidc@Linuxidc:~$ dig +short m.Linuxidc.com
122.228.238.15
106.119.182.141
这下显示的结果就清爽多了。
其实我们还可以通过更多选项来控制输出的内容,比如只想显示"ANSWER SECTION"的内容:
这个结果很不错,就是使用的选项太多了(dig命令有很多这样的选项,详情请参考使用手册)。我们可以换一种优雅一些的方式来实现和上面相同的结果:
Linuxidc@Linuxidc:~$ dig m.Linuxidc.com +noall +answer
; < <>> DiG 9.11.3-1ubuntu1.5-Ubuntu < <>> m.Linuxidc.com +noall +answer
;; global options: +cmd
m.Linuxidc.com. 5 IN A 113.107.238.212
m.Linuxidc.com. 5 IN A 122.228.238.15
跟踪整个查询过程
如果你好奇dig命令执行查询时都经历了哪些过程,你可以尝试使用+trace选项。它会输出从根域到最终结果的所有信息:
Linuxidc@Linuxidc:~$ dig sohu.com @202.102.134.68 -p 53 -t MX +trace
; < <>> DiG 9.11.3-1ubuntu1.5-Ubuntu < <>> sohu.com @202.102.134.68 -p 53 -t MX +trace
;; global options: +cmd
. 482761 IN NS f.root-servers.net.
. 482761 IN NS a.root-servers.net.
. 482761 IN NS c.root-servers.net.
. 482761 IN NS b.root-servers.net.
. 482761 IN NS j.root-servers.net.
. 482761 IN NS d.root-servers.net.
. 482761 IN NS k.root-servers.net.
. 482761 IN NS e.root-servers.net.
. 482761 IN NS h.root-servers.net.
. 482761 IN NS i.root-servers.net.
. 482761 IN NS m.root-servers.net.
. 482761 IN NS g.root-servers.net.
. 482761 IN NS l.root-servers.net.
;; Received 239 bytes from 202.102.134.68#53(202.102.134.68) in 40 ms
com. 172800 IN NS d.gtld-servers.net.
上图中显示的并不是一个完整的结果,感兴趣的朋友可以自己尝试。
显示13个根域服务器
internet上有13个根域服务器,使用不加参数的dig命令显示这些服务器信息
Linuxidc@Linuxidc:~$ dig
; < <>> DiG 9.11.3-1ubuntu1.5-Ubuntu < <>>
;; global options: +cmd
;; Got answer:
;; ->>HEADER< <- opcode: QUERY, status: NOERROR, id: 41525
;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;. IN NS
;; ANSWER SECTION:
. 5 IN NS b.root-servers.net.
. 5 IN NS c.root-servers.net.
. 5 IN NS d.root-servers.net.
. 5 IN NS e.root-servers.net.
. 5 IN NS f.root-servers.net.
. 5 IN NS g.root-servers.net.
. 5 IN NS h.root-servers.net.
. 5 IN NS i.root-servers.net.
. 5 IN NS j.root-servers.net.
. 5 IN NS k.root-servers.net.
. 5 IN NS l.root-servers.net.
. 5 IN NS m.root-servers.net.
. 5 IN NS a.root-servers.net.
;; Query time: 8 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Sun Mar 03 11:37:11 CST 2019
;; MSG SIZE rcvd: 239
dig 是一个很给力DNS查询工具,本文介绍了其常见用法。
以上就是马哥教育今天为大家分享的关于Linux系统下解析域名的dig命令!的文章,希望本篇文章能够对正在从事Linux相关工作的小伙伴们有所帮助。想要了解更多Linux相关知识记得关注马哥教育官网哦!
原文来自:https://www.Linuxidc.com/Linux/2019-03/157239.htm