您的位置:

dig是什么命令

一、什么是dig命令

dig命令是一个域名系统(DNS)工具,用于查询DNS服务器上的记录,以获取主机名、IP地址、邮件交换记录等信息。 它是在Unix、Linux和一些其他操作系统上运行的。dig命令可以在命令行中输入,然后通过一个名称服务器查询域名系统的记录。

dig命令不同于其他工具,如NSLOOKUP,因为它是使用更常见的线程模型,支持IPv6,并支持更多的DNS安全交易。它是普通用户和网络管理员的常用工具之一。

二、dig命令的语法

dig命令的语法如下:

dig [@server] [-b address] [-c class] [-f file] [-k filename] [-p port] [-t type] [-x addr] [-y name:key] [-4] [-6] [name] [type] [class] [queryopt...]

其中,@用于指定查询的DNS服务器,-t用于指定查询的记录类型,-x用于反向DNS查询。

除了基本的使用,dig命令还可以具有各种选项和查询选项,以便更好地进行查询。

三、dig命令的主要用途

dig命令主要用于以下方面:

1. 查询DNS记录类型

使用dig命令可以查询不同类型的DNS记录,如A、MX、CNAME、PTR、TXT等。比如:查询www.baidu.com的IP地址

dig www.baidu.com

将返回如下结果:

; <<>> DiG 9.10.6 <<>> www.baidu.com 
;; global options: +cmd 
;; Got answer: 
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57482 
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1 

;; OPT PSEUDOSECTION: 
; EDNS: version: 0, flags:; udp: 512 
;; QUESTION SECTION: 
;www.baidu.com. IN A 

;; ANSWER SECTION: 
www.baidu.com. 143 IN A 123.125.115.110
www.baidu.com. 143 IN A 123.125.115.111
www.baidu.com. 143 IN A 123.125.115.112
www.baidu.com. 143 IN A 123.125.115.113
www.baidu.com. 143 IN A 123.125.115.114 

;; Query time: 344 msec 
;; SERVER: 202.96.209.5#53(202.96.209.5) 
;; WHEN: Fri May 07 17:58:44 CST 2021 
;; MSG SIZE  rcvd: 123

从返回结果中可以看到,查询到www.baidu.com的五个IP地址。

2. 显示域名服务器信息

使用dig命令可以查看域名服务器信息,例如查询百度的域名服务器信息:

dig +nssearch baidu.com

将返回以下结果:

+[sid=0x7f0cfd847a20][m:1.2.3.4:39992/55492,r:0(0)][{hdb.c:5846:cmd_search}]: nssearch baidu.com. opt 0 flags 0x4010 [1a] 2-1.g-tsl.weibo.cn. [2] bfia.mb.baidu.com. [3] ns7.baidu.com. [4] ns3.baidu.com. [5] ns2.baidu.com. [6] ns6.baidu.com. [7] ns4.baidu.com. [8] ns5.baidu.com.

从返回结果中可以查看到an,ns,soa,cname和mx等域名记录类型的相关信息。

3. 域名解析过程的详细信息

使用dig命令可以查看域名解析的详细过程,包括域名解析的来源、时间、目标IP地址等。比如:

dig @8.8.8.8 +trace www.baidu.com

将返回以下结果:

+[sid=0x7f0cfd847a20][m:1.2.3.4:39992/55492,r:0(0)][{hdb.c:10586:bigresponse_endparse}]: begin bigresponse_endparse 
; <<>> DiG 9.10.6 <<>> @8.8.8.8 +trace www.baidu.com 
; (1 server found) 
;; global options: +cmd 
.                       20703   IN NS a.root-servers.net. 
.                       20703   IN NS b.root-servers.net. 
.                       20703   IN NS c.root-servers.net. 
.                       20703   IN NS d.root-servers.net. 
.                       20703   IN NS e.root-servers.net. 
.                       20703   IN NS f.root-servers.net. 
.                       20703   IN NS g.root-servers.net. 
.                       20703   IN NS h.root-servers.net. 
.                       20703   IN NS i.root-servers.net. 
.                       20703   IN NS j.root-servers.net. 
.                       20703   IN NS k.root-servers.net. 
.                       20703   IN NS l.root-servers.net. 
.                       20703   IN NS m.root-servers.net. 
;; Received 239 bytes from 8.8.8.8#53(8.8.8.8) in 92 ms 

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

baidu.com.              172800  IN NS ns2.baidu.com. 
baidu.com.              172800  IN NS ns3.baidu.com. 
baidu.com.              172800  IN NS ns7.baidu.com. 
baidu.com.              172800  IN NS ns6.baidu.com. 
baidu.com.              172800  IN NS ns4.baidu.com. 
baidu.com.              172800  IN NS ns5.baidu.com. 
;; Received 273 bytes from 192.26.92.30#53(c.gtld-servers.net) in 180 ms 

www.baidu.com.          600     IN CNAME   www.a.shifen.com. 
www.a.shifen.com.       600     IN A       220.181.38.148 
www.a.shifen.com.       600     IN A       220.181.38.149 
;; Received 94 bytes from 220.181.7.167#53(ns7.baidu.com) in 441 ms

从结果中可以看到,该域名服务器将查询发往根服务器,根服务器返回com域服务器列表,com域服务器返回baidu.com的NS记录列表,baidu.com的NS服务器返回www.baidu.com的CNAME记录。

4. 检查DNS服务器

对于一个特定的域名,使用dig命令可以检查域名是否被正确地配置在DNS服务器上。查询百度域名的DNS服务器信息,例如:

dig +nssearch baidu.com

返回结果中将列出所有共同管理该域名的名称服务器和邮件交换服务器。

5. 检查DNS解析缓存

使用dig命令可以检查DNS解析缓存,以确保旧的DNS解析信息已被删除,新的DNS解析信息已被正确地加载。例如:

dig baidu.com -t a +noall +answer

将返回以下结果:

baidu.com.              3362    IN A    220.181.38.148 
baidu.com.              3362    IN A    220.181.38.149 
baidu.com.              3362    IN A    220.181.38.150

使用这个命令可以检查www.baidu.com的DNS解析缓存,以判断缓存中是否存在过期信息。

四、小结

dig命令是一个功能强大的工具,能够查询DNS服务器上的记录,并为系统管理员提供有用的信息。通过这篇文章,我们了解了dig命令的基本语法、主要用途以及执行域名查询的过程。 希望这篇文章能够帮助您更好地使用dig命令。