使用dig执行手动DNS查询

什么是dig?

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

安装dig

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

在CentOS服务器上:

yum install bind-utils

在Debian / Ubuntu服务器上:

apt-get install dnsutils

如何使用dig

考虑以下基本dig输出:

$ 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记录,以下两个命令都将生成相同的输出:

$ 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,您将看到类似于以下内容的结果:

$ 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记录的记录。 在这些情况下,多个主机能够响应单个名称。 请参阅以下示例:

$ 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将提供允许您遵循查询所采用的每个连续分层步骤的输出:

$ 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服务器以获取它们可能未被委派权限的记录,如以下示例所示:

$ 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记录查询示例:

$ 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的输出:

$ dig example.com +short
207.192.72.27

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

$ dig mx example.com +short
10 mail.example.com.
$ 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.
$ 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》

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏微信公众号:Java团长

消息中间件企业级应用

众所周知,消息中间件是大型分布式系统中不可或缺的重要组件。它使用简单,却解决了不少难题,比如异步处理,系统藕合,流量削锋,分布式事务管理等。实现了一个高性能,高...

2291
来自专栏salesforce零基础学习

salesforce 零基础学习(六十二)获取sObject中类型为Picklist的field values(含record type)

本篇引用以下三个链接: http://www.tgerm.com/2012/01/recordtype-specific-picklist-values.htm...

2069
来自专栏Pythonista

centos7之saltstack安装

查阅来自salt官网:http://docs.saltstack.cn/topics/installation/rhel.html

811
来自专栏有困难要上,没有困难创造困难也要上!

Kafka 单节点多Kafka Broker集群

3726
来自专栏菩提树下的杨过

ActiveMQ笔记(6):消息延时投递

在开发业务系统时,某些业务场景需要消息定时发送或延时发送(类似:飞信的短信定时发送需求),这时候就需要用到activemq的消息延时投递,详细的文档可参考官网说...

4185
来自专栏cmazxiaoma的架构师之路

RabbitMQ生产端消息可靠性投递方案分析

导文: 1.什么是RabbitMQ 2.Java开发技术大杂烩(三)之电商项目优化、rabbitmq、Git、OSI、VIM、Intellj IDEA、HT...

2773
来自专栏一个爱瞎折腾的程序猿

js实用方法记录-简单cookie操作

772
来自专栏

后端开源软件集合

缓存系统:memcached(group cache)、redis、mongodb、Couchbase(CouchDB、Membase、CouchOne) ht...

2619
来自专栏zcqshine's blog

CodeRunner swift设置

43011
来自专栏米扑专栏

jsPDF – 基于 HTML5 的强大 PDF 生成工具

5206

扫码关注云+社区

领取腾讯云代金券