Linux命令之dig命令使用

dig 命令主要用来从 DNS 域名服务器查询主机地址信息。

一,查询域名的DNS信息

$dig www.baidu.com

返回信息:

#`第一部分`
; <<>> DiG 9.10.6 <<>> www.baidu.com
;; global options: +cmd
#`第二部分`
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20792
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
#`第三部分`
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1280
;; QUESTION SECTION:
;www.baidu.com.            IN    A
#`第四部分`
;; ANSWER SECTION:
www.baidu.com.        242    IN    CNAME    www.a.shifen.com.
www.a.shifen.com.    96    IN    A    220.181.112.244
#`第五部分`
;; Query time: 0 msec
;; SERVER: 10.2.20.35#53(10.2.20.35)
;; WHEN: Fri Jan 25 16:10:38 CST 2019
;; MSG SIZE  rcvd: 85

解释:

dig 命令默认的输出信息大概可以分为 5 个部分,如上图标注。

  • 第一部分:显示 dig 命令的版本和输入的参数。
  • 第二部分:Got answer 得到的应答概况,status 这个参数很重要,status: NOERROR 这种状态就标明成功。QUERY:1ANSWER: 2是一次请求2次应答。
  • 第三部分:OPT PSEUDOSECTION 我们要问的问题,这里我们要查询 www.baidu.comA记录。
  • 第四部分:ANSWER SECTION 应答结果,主要是DNS记录类型、应答时间、ip等信息。
  • 第五部分:统计信息,比如用了多长时间,查询了哪个 DNS 服务器,在什么时间进行的查询等等。

二、指定DNS服务查询

命令:

$dig @8.8.8.8 baidu.com #8.8.8.8是DNS服务器iP.

返回:

; <<>> DiG 9.10.6 <<>> @8.8.8.8 baidu.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2476
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 5, ADDITIONAL: 5

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

;; ANSWER SECTION:
baidu.com.        600    IN    A    123.125.115.110
baidu.com.        600    IN    A    220.181.57.216

;; AUTHORITY SECTION:
baidu.com.        68904    IN    NS    ns4.baidu.com.
baidu.com.        68904    IN    NS    ns3.baidu.com.
baidu.com.        68904    IN    NS    ns7.baidu.com.
baidu.com.        68904    IN    NS    ns2.baidu.com.
baidu.com.        68904    IN    NS    dns.baidu.com.

;; ADDITIONAL SECTION:
dns.baidu.com.        10772    IN    A    202.108.22.220
ns2.baidu.com.        69037    IN    A    220.181.37.10
ns3.baidu.com.        5452    IN    A    112.80.248.64
ns4.baidu.com.        4579    IN    A    14.215.178.80
ns7.baidu.com.        566    IN    A    180.76.76.92

;; Query time: 4 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Fri Jan 25 16:32:44 CST 2019
;; MSG SIZE  rcvd: 229

三、反查

已知ip查这个IP下对应的域名。

命令:

$dig -x 8.8.8.8

返回:

; <<>> DiG 9.10.6 <<>> -x 8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: `NOERROR`, id: 20060
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1280
;; QUESTION SECTION:
;8.8.8.8.in-addr.arpa.        IN    PTR

;; ANSWER SECTION:
8.8.8.8.in-addr.arpa.    30081    IN    PTR    google-public-dns-a.google.com.

;; Query time: 44 msec
;; SERVER: 10.2.20.35#53(10.2.20.35)
;; WHEN: Fri Jan 25 17:01:03 CST 2019
;; MSG SIZE  rcvd: 93

这个命令不太好使, 我测试几个IP, 只有8.8.8.8 能返回。
如:

dig -x 47.93.216.233

; <<>> DiG 9.10.6 <<>> -x 47.93.216.233
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: `NXDOMAIN`, id: 7180
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;233.216.93.47.in-addr.arpa.    IN    PTR

;; AUTHORITY SECTION:
93.47.in-addr.arpa.    300    IN    SOA    rdns1.alidns.com. dnsmgr.alibaba-inc.com. 2015011325 1800 600 1814400 300

;; Query time: 39 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Fri Jan 25 17:02:31 CST 2019
;; MSG SIZE  rcvd: 126

看 status: NXDOMAIN, 不知道具体什么意思, 只知道返回失败。

四、查询跟踪

命令:

$dig +trace @8.8.8.8 yuanmaketang.com

返回:

; <<>> DiG 9.10.6 <<>> +trace @8.8.8.8 yuanmaketang.com
; (1 server found)
;; global options: +cmd
#.... 跟服务器的信息
;; Received 1176 bytes from 198.97.190.53#53(h.root-servers.net) in 245 ms

yuanmaketang.com.    172800    IN    NS    dns23.hichina.com.
yuanmaketang.com.    172800    IN    NS    dns24.hichina.com.
......

;; Received 890 bytes from 192.33.14.30#53(b.gtld-servers.net) in 261 ms

yuanmaketang.com.    600    IN    CNAME    www.yuanmaketang.com.
;; Received 79 bytes from 106.11.211.57#53(dns23.hichina.com) in 18 ms

可以看到我的主DNS 服务器是 dns23.hichina.comdns24.hichina.com

五、根据DNS记录类型查询

$dig yuanmaketang.com CNAME

常用DNS记录类型:CNAMENSMXA等。

六、dig命令选项

选项 说明
-b address 设置所要询问地址的源 IP 地址。这必须是主机网络接口上的某一合法的地址。
-c class 缺省查询类(IN for internet)由选项 -c 重设。class 可以是任何合法类,比如查询 Hesiod 记录的 HS 类或查询 CHAOSNET 记录的 CH 类。
-f filename 使 dig 在批处理模式下运行,通过从文件 filename 读取一系列搜索请求加以处理。文件包含许多查询;每行一个。文件中的每一项都应该以和使用命令行接口对 dig 的查询相同的方法来组织。
-h 当使用选项 -h 时,显示一个简短的命令行参数和选项摘要。
-k filename 要签署由 dig 发送的 DNS 查询以及对它们使用事务签名(TSIG)的响应,用 选项 -k 指定 TSIG 密钥文件。
-n 缺省情况下,使用 IP6.ARPA 域和 RFC2874 定义的二进制标号搜索 IPv6 地址。为了使用更早的、 使用 IP6.INT 域和 nibble 标签的 RFC1886 方法,指定 选项 -n(nibble)。
-p port# 如果需要查询一个非标准的端口号,则使用选项 -p。port# 是 dig 将发送其查询的端口号,而不是标准的 DNS 端口号 53。该选项可用于测试已在非标准端口号上配置成侦听查询的域名服务器。
-t type 设置查询类型为 type。可以是 BIND9 支持的任意有效查询类型。缺省查询类型是 A,除非提供 -x 选项来指示一个逆向查询。通过指定 AXFR 的 type 可以请求一个区域传输。当需要增量区域传输(IXFR)时,type 设置为 ixfr=N。增量区域传输将包含自从区域的 SOA 记录中的序列号改为 N 之后对区域所做的更改。
-x addr 逆向查询(将地址映射到名称)可以通过 -x 选项加以简化。addr 是一个 以小数点为界的 IPv4 地址或冒号为界的 IPv6 地址。当使用这个选项时,无需提供 name、class 和 type 参数。dig 自动运行类似11.12.13.10.in-addr.arpa 的域名查询,并分别设置查询类型和类为 PTR 和 IN。
-y name:key 您可以通过命令行上的 -y 选项指定 TSIG 密钥;name 是 TSIG 密码的名称,key 是实际的密码。密码是 64 位加密字符串,通常由 dnssec-keygen(8)生成。当在多用户系统上使用选项 -y 时应该谨慎,因为密码在 ps(1)的输出或 shell 的历史文件中可能是可见的。当同时使用 dig 和 TSCG 认证时,被查询的名称服务器需要知道密码和解码规则。在 BIND 中,通过提供正确的密码和 named.conf 中的服务器声明实现。

七、总结

我是在自建 coreDNS是用到这个命令的,使用不是很多,欢迎大神来指正。

ph.w
ph.w 10个月前

已被 1 人挖起

回应
登录 后发表评论
  • 消灭零回应