Introduction

DIG-Domain Inofrmation Groper, 域名信息查询工具, 用于 DNS 检测.

关联命令: nslookup, host

Format

Format

Command: dig @dnsserver name querytype

dnsserver: DNS域名服务器, 如果未指定, 默认使用/etc/resolv.conf中的域名服务器

querytype: 查询类型(A/AAAA/PTR/MX等)

name: 需要查询的域名或者ip地址

Common Options

1
2
3
4
5
6
-c                  class类型,(IN/CH/HS)
-t type类型,(A,MX,AAAA等)
-q 显示指定查询域名,增加命令的可读性
-x 逆向查询,Ptr查询,根据ip或者域名
-f <filename> 批量查询
-4/-6 指定ipv4或者ipv6查询

Append Options

Udp and Tcp:

默认为udp选项,可以使用+tcp来指定使用tcp查询

Example:dig +tcp www.baidu.com

Default Domain:

格式: dig +domain=baidu.com passwd

即查询:dig www.passwd.baidu.com

Trace:

+trace 调试,跟踪整个DNS解析过程

Example:dig +trace www.baidu.com

精简输出选项

1
2
3
4
+nocmd                 节省输出dig的版本信息
+short 仅仅输出CNAME和A记录信息
+nocomment 节省输出详细注释信息
+nostat 节省输出统计信息

Command

Command Command

1
2
3
4
5
6
7
8
# 指定namespace
dig @8.8.8.8 www.baidu.com
# 查询文件里面所有域名, 仅仅查询IN协议, A 类型
dig -f file.txt -c IN -t A
# 逆向查询(根据ip查询域名)
dig -x ip
# 查看最佳的ns
dig www.baidu.com ns

Trace(重要)

Function: 获取整个 DNS 的解析过程.

Command:

1
2
dig +trace www.baidu.com
dig +trace +short www.baidu.com

Output

Reference: 完整输出分析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# dig这个程序的版本号和要查询的域名
; <<>> DiG 9.9.5-3ubuntu0.6-Ubuntu <<>> baidu.com

# 表示可以在命令后面加选项
;; global options: +cmd

# 以下是获取信息的内容
;; Got answer:

# 这个是返回信息的头部:
# opcode: 操作码,QUERY,代表是查询操作;
# status: 状态,NOERROR,代表没有错误;
# id: 编号,60954,16bit数字,在dns协议中,通过编号匹配返回和查询.
# flags: 标志,如果出现就表示有标志,如果不出现,就表示为设置标志:
# qr query,查询标志,代表是查询操作
# rd recursion desired,代表希望进行递归查询操作;
# ra recursive available在返回中设置,代表查询的服务器支持递归查询操作;
# aa Authoritative Answer权威回复,如果查询结果由管理域名的域名服务器而不是缓存服务器提供的,则
# 称为权威回复;
# QUERY 查询数,1代表一个查询,对应下面QUESTION SECTION的记录数
# ANSWER 结果数,4代表有4个结果,对应下面的ANSWER SECTION中的记录数
# AUTHORITY 权威域名服务器记录数,5代表该域名有5个权威域名服务器,可供域名解析用。对应
# 下面AUTHORITY SECTION
# ADDITIONAL 格外记录数,6代表有6项格外记录。对应下面 ADDITIONAL SECTION。
;; HEADER opcode: QUERY, status: NOERROR, id: 60954
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 5, ADDITIONAL: 6


;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096

# 查询部分,从做到右部分意义如下:
# 1, 要查询的域名,这里是baidu.com.,'.'代表根域名,com顶级域名,baidu二级域名
# 2, class,要查询信息的类别,IN代表类别为IP协议,即Internet。还有其它类别,比如chaos等,由于
# 现在都是互联网,所以其它基本不用。
# 3, type,要查询的记录类型,A记录(Address),代表要查询ipv4地址。AAAA记录,代表要查询ipv6地址。
;; QUESTION SECTION:
;baidu.com. IN A


# 回应部分,回应都是A记录,A记录从左到右各部分意义:
# 1, 对应的域名,这里是baidu.com.,'.'代表根域名,com顶级域名,baidu二级域名
# 2, TTL,time ro live,缓存时间,单位秒。76,代表缓存域名服务器,可以在缓存中保存76秒该记录。
# 3, class,要查询信息的类别,IN代表类别为IP协议,即Internet。还有其它类别,比如chaos等由于现在都是互联网,所以其它基本不用。
# 4, type,要查询的记录类型,A记录,代表要查询ipv4地址。AAAA记录,代表要查询ipv6地址。
# 5, 域名对应的ip地址。
;; ANSWER SECTION:
baidu.com. 211 IN A 123.125.114.144
baidu.com. 211 IN A 111.13.101.208
baidu.com. 211 IN A 220.181.57.217
baidu.com. 211 IN A 180.149.132.47


# 权威域名部分,回应都是NS记录(Name Server),NS记录从左到右各部分意义:
# 1, 对应的域名,这里是baidu.com.,'.'代表根域名,com顶级域名,baidu二级域名
# 2, TTL,time ro live,缓存时间,单位秒。63948,代表缓存域名服务器,可以在缓存中保存63948秒该记录。
# 3, class,要查询信息的类别,IN代表类别为IP协议,即Internet。还有其它类别,比如chaos等,由于现在都是互联网,所以其它基本不用。
# 4, type,要查询的记录类型,NS,Name Server,NS记录,代表该记录描述了域名对应的权威域名解析服务器
# 5, 域名对应域名对应的权威域名解析服务器。由于ns2.baidu.com.是baidu.com.的子域名,而解析子
# 域名,又需要主域名的信息,为了打破这个死循环,需要在下面的额外记录中提供该服务器的ip地址。
;; AUTHORITY SECTION:
baidu.com. 52340 IN NS dns.baidu.com.
baidu.com. 52340 IN NS ns3.baidu.com.
baidu.com. 52340 IN NS ns2.baidu.com.
baidu.com. 52340 IN NS ns7.baidu.com.
baidu.com. 52340 IN NS ns4.baidu.com.


# 额外记录部分,这里都是A记录,A记录从左到右各部分意义:
# 1,对应的域名,这里是dns.baidu.com.,'.'代表根域名,com顶级域名,baidu二级域名,dns是三级域名。
# 2,TTL,time ro live,缓存时间,单位秒。13284,代表缓存域名服务器可以在缓存中保存13284秒该记录。
# 3,class,要查询信息的类别,IN代表类别为IP协议,即Internet。还有其它类别,比如chaos等,由于
# 现在都是互联网,所以其它基本不用。
# 4,type,要查询的记录类型,A记录,代表要查询ipv4地址。AAAA记录,代表要查询ipv6地址。
# 5,域名对应的ip地址。
;; ADDITIONAL SECTION:
dns.baidu.com. 55285 IN A 202.108.22.220
ns2.baidu.com. 60825 IN A 61.135.165.235
ns3.baidu.com. 79196 IN A 220.181.37.10
ns4.baidu.com. 79196 IN A 220.181.38.10
ns7.baidu.com. 55194 IN A 119.75.219.82


# 查询耗时
;; Query time: 2 msec


# 查询使用的服务器地址和端口,其实就是本地DNS域名服务器
;; SERVER: 127.0.1.1#53(127.0.1.1)


# 查询的时间
;; WHEN: Sun Dec 27 19:27:16 CST 2015


# 回应的大小。收到(rcve, recieved)256字节。
;; MSG SIZE rcvd: 272

Fireware or Security Rule

如果在使用host/dig命名测试一个域名成功后, 那么表示 DNS 区域的域名解析工作都是成功的.

此后, 如果域名访问仍然不正确, 那么只能是一下几点:

  • 静态服务器(nginx)未配置域名
  • 系统的防火墙或者安全组策略导致80端口无法通过, 这是非常常见的, 例如阿里云上的策略