前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用dig执行手动DNS查询

使用dig执行手动DNS查询

原创
作者头像
穿鞋跑得快
发布2018-08-15 15:10:20
3.3K0
发布2018-08-15 15:10:20
举报
文章被收录于专栏:云计算教程系列

什么是dig?

dig 是一个命令行DNS查询实用程序,允许您诊断域名解析问题。如果您没有域名,建议您先去这里注册一个域名,将域名解析到您的服务器,您可以使用腾讯云云解析进行快速设置。

安装dig

dig是通常与Bind DNS服务器打包在一起的DNS实用程序集合的一部分。您可以通过为Linux发行版发出适当的命令来安装这些实用程序。

在CentOS服务器上:

代码语言:txt
复制
yum install bind-utils

在Debian / Ubuntu服务器上:

代码语言:txt
复制
apt-get install dnsutils

如何使用dig

考虑以下基本dig输出:

代码语言:txt
复制
$ dig example.com

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

;; QUESTION SECTION:
;example.com. IN A

;; ANSWER SECTION:
example.com. 86400 IN A 107.92.2.7

;; Query time: 54 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Tue Aug 24 14: 2010
;; MSG SIZE rcvd: 57

查询返回NOERROR的成功结果,dig能够检索名称为example.com的A记录,该记录解析为IP地址107.92.2.7dig包括许多关于查询本身的数据点,包括使用的DNS解析器(192.168.1.1),完成查询所需的时间以及查询响应的大小。

要查询不同类型的DNS记录,以下两个命令都将生成相同的输出:

代码语言:txt
复制
$ dig example.com mx
$ dig mx example.com

; <<>> DiG 9.6.1 <<>> mx example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52563
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;example.com. IN MX

;; ANSWER SECTION:
example.com. 86400 IN MX 10 example.com.

;; Query time: 53 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Tue Aug 24 15:14:05 2010
;; MSG SIZE rcvd: 57

如果您尝试查询不存在的域,例如nonextant.example.com,您将看到类似于以下内容的结果:

代码语言:txt
复制
$ dig nonextant.example.com

; <<>> DiG 9.6.1 <<>> nonextant.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 53119
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;nonextant.example.com. IN A

;; AUTHORITY SECTION:
example.com. 10800 IN SOA ns1.linode.com. username.example.com. 2010051349 14400 14400 1209600 86400

;; Query time: 91 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Tue Aug 24 15:19:11 2010
;; MSG SIZE rcvd: 100

在此示例中,查询返回状态NXDOMAIN以及描述每个权威DNS区域中的全局值的SOA或权限开始记录。 您可能偶尔也会看到包含多个A记录的记录。 在这些情况下,多个主机能够响应单个名称。 请参阅以下示例:

代码语言:txt
复制
$ dig example.com

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

;; QUESTION SECTION:
;example.com. IN A

;; ANSWER SECTION:
example.com. 86400 IN A 107.92.2.7
example.com. 86400 IN A 107.92.2.9
example.com. 86400 IN A 107.92.2.13

;; Query time: 54 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Tue Aug 24 14: 2010
;; MSG SIZE rcvd: 57

使用dig来跟踪DNS查询

使用+trace选项,dig将提供允许您遵循查询所采用的每个连续分层步骤的输出:

代码语言:txt
复制
$ dig +trace www.example.com

; <<>> DiG 9.6.1 <<>> +trace www.example.com
;; global options: +cmd
. 305393 IN NS m.root-servers.net.
. 305393 IN NS e.root-servers.net.
. 305393 IN NS f.root-servers.net.
. 305393 IN NS l.root-servers.net.
. 305393 IN NS k.root-servers.net.
. 305393 IN NS c.root-servers.net.
. 305393 IN NS i.root-servers.net.
. 305393 IN NS j.root-servers.net.
. 305393 IN NS g.root-servers.net.
. 305393 IN NS h.root-servers.net.
. 305393 IN NS a.root-servers.net.
. 305393 IN NS b.root-servers.net.
. 305393 IN NS d.root-servers.net.
;; Received 512 bytes from 192.168.1.1#53(192.168.1.1) in 19 ms

com. 172800 IN NS a.gtld-servers.net.
com. 172800 IN NS b.gtld-servers.net.
com. 172800 IN NS c.gtld-servers.net.
com. 172800 IN NS d.gtld-servers.net.
com. 172800 IN NS e.gtld-servers.net.
com. 172800 IN NS f.gtld-servers.net.
com. 172800 IN NS g.gtld-servers.net.
com. 172800 IN NS h.gtld-servers.net.
com. 172800 IN NS i.gtld-servers.net.
com. 172800 IN NS j.gtld-servers.net.
com. 172800 IN NS k.gtld-servers.net.
com. 172800 IN NS l.gtld-servers.net.
com. 172800 IN NS m.gtld-servers.net.
;; Received 504 bytes from 202.12.27.33#53(m.root-servers.net) in 109 ms

example.com. 172800 IN NS ns1.linode.com.
example.com. 172800 IN NS ns2.linode.com.
example.com. 172800 IN NS ns3.linode.com.
;; Received 150 bytes from 192.52.178.30#53(k.gtld-servers.net) in 106 ms

www.example.com. 86400 IN A 107.92.2.7
www.example.com. 86400 IN NS ns3.linode.com.
www.example.com. 86400 IN NS ns4.linode.com.
www.example.com. 86400 IN NS ns5.linode.com.
www.example.com. 86400 IN NS ns1.linode.com.
www.example.com. 86400 IN NS ns2.linode.com.
;; Received 234 bytes from 65.19.178.10#53(ns2.linode.com) in 96 ms

此示例跟踪域www.example.com的DNS查询。 这最终解析为IP地址107.92.2.7。 DNS查询从具有根级别的域.的末尾开始,并从右向左继续,直到DNS服务器能够提供权威A记录。

DNS跟踪可帮助您确定DNS授权是否已正确委派以及DNS 粘合记录是否导致解析不正确。DNS跟踪还提供有关完成查询所需的时间以及提供中间记录的特定服务器的信息。

使用dig来定位特定的DNS服务器

任何DNS服务器都可以发布任何域的记录。但是,在正常使用中,只会查询已授权给它们的权限的DNS服务器。您可以使用dig查询任意DNS服务器以获取它们可能未被委派权限的记录,如以下示例所示:

代码语言:txt
复制
$ dig @ns1.linode.com example.com

; <<>> DiG 9.7.1-P2 <<>> @ns1.linode.com example.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35939
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 5, ADDITIONAL: 5
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;example.com. IN A

;; ANSWER SECTION:
example.com. 86400 IN A 107.92.2.7

;; AUTHORITY SECTION:
example.com. 86400 IN NS ns3.linode.com.
example.com. 86400 IN NS ns2.linode.com.
example.com. 86400 IN NS ns1.linode.com.
example.com. 86400 IN NS ns5.linode.com.
example.com. 86400 IN NS ns4.linode.com.

;; ADDITIONAL SECTION:
ns1.linode.com. 86400 IN A 69.93.127.10
ns2.linode.com. 86400 IN A 65.19.178.10
ns3.linode.com. 86400 IN A 75.127.96.10
ns4.linode.com. 86400 IN A 207.192.70.10
ns5.linode.com. 86400 IN A 109.74.194.10

;; Query time: 55 msec
;; SERVER: 69.93.127.10#53(69.93.127.10)
;; WHEN: Wed Aug 25 11:30:20 2010
;; MSG SIZE rcvd: 234

指定要查询的服务器的名称,作为格式为@[server]dig命令的参数,其中[server]是IP DNS服务器的名称或地址。

使用dig来检索不同的记录类型

通过将该记录类型(例如,AAAA,MX,TXT或SRV)添加到dig命令来指定不同类型的DNS记录。请考虑以下SRV记录查询示例:

代码语言:txt
复制
$ dig srv _jabber._tcp.example.com

; <<>> DiG 9.7.1-P2 <<>> srv _jabber._tcp.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33643
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;_jabber._tcp.example.com. IN SRV

;; ANSWER SECTION:
_jabber._tcp.example.com. 300 IN SRV 0 0 5269 hostname.example.com

;; Query time: 53 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Wed Aug 25 12:40:13 2010
;; MSG SIZE rcvd: 90

使用dig生成压缩输出

dig命令后使用+short修饰符缩写dig的输出:

代码语言:txt
复制
$ dig example.com +short
207.192.72.27

您可以将+short修改器与其他dig命令组合以生成在脚本中可能更有用的输出,如下所示:

代码语言:txt
复制
$ dig mx example.com +short
10 mail.example.com.
代码语言:txt
复制
$ dig +trace +short example.com
NS a.root-servers.net. from server 192.168.1.1 in 18 ms.
NS b.root-servers.net. from server 192.168.1.1 in 18 ms.
NS d.root-servers.net. from server 192.168.1.1 in 18 ms.
NS m.root-servers.net. from server 192.168.1.1 in 18 ms.
NS e.root-servers.net. from server 192.168.1.1 in 18 ms.
NS f.root-servers.net. from server 192.168.1.1 in 18 ms.
NS l.root-servers.net. from server 192.168.1.1 in 18 ms.
NS k.root-servers.net. from server 192.168.1.1 in 18 ms.
NS c.root-servers.net. from server 192.168.1.1 in 18 ms.
NS i.root-servers.net. from server 192.168.1.1 in 18 ms.
NS j.root-servers.net. from server 192.168.1.1 in 18 ms.
NS g.root-servers.net. from server 192.168.1.1 in 18 ms.
NS h.root-servers.net. from server 192.168.1.1 in 18 ms.
A 107.92.2.7 from server ns2.linode.com in 94 ms.
代码语言:txt
复制
$ dig soa +short example.com
ns1.linode.com. username.example.com. 2010051349 14400 14400 1209600 86400
$ dig @ns2.linode.com ns +short example.com
ns5.linode.com.
ns1.linode.com.
ns2.linode.com.
ns3.linode.com.
ns4.linode.com.

参考文献:《Use dig to Perform Manual DNS Queries》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是dig?
  • 安装dig
  • 如何使用dig
  • 使用dig来跟踪DNS查询
  • 使用dig来定位特定的DNS服务器
  • 使用dig来检索不同的记录类型
  • 使用dig生成压缩输出
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档