0%

DNS系统架构

本文介绍DNS系统,结合自己设计一个DNS系统视角有助于理解。

一、DNS系统部件

DNS系统本质就是一个C/S架构系统,故只包含两种部件:“DNS服务器”和“DNS客户端”。

1.1、DNS服务器

英文名:DNS Server

DNS服务器可分为4类:根DNS服务器、顶级域DNS服务器、权威DNS服务器和功能性DNS服务器。

1.1.1、根DNS服务器

英文名:Root Name Server,简称Root Server

存在两个核心用途:

  1. 作为“根DNS服务器”,给出顶级域DNS服务器域名和IP地址
  2. 作为root-servers.net二级域名的权威DNS服务器”,给出相应域名的IP地址

1、作为“根DNS服务器”
域名/IP地址来源和工作原理:

  1. 作为一次DNS迭代查询(DNS迭代查询是一切DNS查询的根本起点,DNS迭代查询的概念详见“2.1、最简单核心架构”)的起点,其域名和IP信息全球公共可见,详见“根DNS服务器域名和IP”,这些信息极度稳定:
    • DNS客户端在配置文件固化以上根DNS服务器IP
    • 根DNS服务器的域名([a-l].root-servers.net)主要用作标识,但为了DNS系统的完备性,支持对根DNS服务器域名进行DNS解析,具体过程见下一小节
  2. 加载ZONE文件提供解析服务,根DNS服务器ZONE文件详见“根DNS服务器root.zone文件”,下面截取部分内容用以说明

根DNS服务器ZONE文件部分内容:

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
# com顶级域DNS服务器域名
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.


# net顶级域DNS服务器域名
net. 172800 IN NS a.gtld-servers.net.
net. 172800 IN NS b.gtld-servers.net.
net. 172800 IN NS c.gtld-servers.net.
net. 172800 IN NS d.gtld-servers.net.
net. 172800 IN NS e.gtld-servers.net.
net. 172800 IN NS f.gtld-servers.net.
net. 172800 IN NS g.gtld-servers.net.
net. 172800 IN NS h.gtld-servers.net.
net. 172800 IN NS i.gtld-servers.net.
net. 172800 IN NS j.gtld-servers.net.
net. 172800 IN NS k.gtld-servers.net.
net. 172800 IN NS l.gtld-servers.net.
net. 172800 IN NS m.gtld-servers.net.


# com和net顶级域DNS服务器IP地址
a.gtld-servers.net. 172800 IN A 192.5.6.30
a.gtld-servers.net. 172800 IN AAAA 2001:503:a83e:0:0:0:2:30
b.gtld-servers.net. 172800 IN A 192.33.14.30
b.gtld-servers.net. 172800 IN AAAA 2001:503:231d:0:0:0:2:30
c.gtld-servers.net. 172800 IN A 192.26.92.30
c.gtld-servers.net. 172800 IN AAAA 2001:503:83eb:0:0:0:0:30
d.gtld-servers.net. 172800 IN A 192.31.80.30
d.gtld-servers.net. 172800 IN AAAA 2001:500:856e:0:0:0:0:30
e.gtld-servers.net. 172800 IN A 192.12.94.30
e.gtld-servers.net. 172800 IN AAAA 2001:502:1ca1:0:0:0:0:30
f.gtld-servers.net. 172800 IN A 192.35.51.30
f.gtld-servers.net. 172800 IN AAAA 2001:503:d414:0:0:0:0:30
g.gtld-servers.net. 172800 IN A 192.42.93.30
g.gtld-servers.net. 172800 IN AAAA 2001:503:eea3:0:0:0:0:30
h.gtld-servers.net. 172800 IN A 192.54.112.30
h.gtld-servers.net. 172800 IN AAAA 2001:502:8cc:0:0:0:0:30
i.gtld-servers.net. 172800 IN A 192.43.172.30
i.gtld-servers.net. 172800 IN AAAA 2001:503:39c1:0:0:0:0:30
j.gtld-servers.net. 172800 IN A 192.48.79.30
j.gtld-servers.net. 172800 IN AAAA 2001:502:7094:0:0:0:0:30
k.gtld-servers.net. 172800 IN A 192.52.178.30
k.gtld-servers.net. 172800 IN AAAA 2001:503:d2d:0:0:0:0:30
l.gtld-servers.net. 172800 IN A 192.41.162.30
l.gtld-servers.net. 172800 IN AAAA 2001:500:d937:0:0:0:0:30
m.gtld-servers.net. 172800 IN A 192.55.83.30
m.gtld-servers.net. 172800 IN AAAA 2001:501:b1f9:0:0:0:0:30


# 根DNS服务器域名对应的IP地址(此时作为root-servers.net二级域名的权威DNS服务器)
a.root-servers.net. 518400 IN A 198.41.0.4
a.root-servers.net. 518400 IN AAAA 2001:503:ba3e:0:0:0:2:30
b.root-servers.net. 518400 IN A 170.247.170.2
b.root-servers.net. 518400 IN AAAA 2801:1b8:10:0:0:0:0:b
c.root-servers.net. 518400 IN A 192.33.4.12
c.root-servers.net. 518400 IN AAAA 2001:500:2:0:0:0:0:c
d.root-servers.net. 518400 IN A 199.7.91.13
d.root-servers.net. 518400 IN AAAA 2001:500:2d:0:0:0:0:d
e.root-servers.net. 518400 IN A 192.203.230.10
e.root-servers.net. 518400 IN AAAA 2001:500:a8:0:0:0:0:e
f.root-servers.net. 518400 IN A 192.5.5.241
f.root-servers.net. 518400 IN AAAA 2001:500:2f:0:0:0:0:f
g.root-servers.net. 518400 IN A 192.112.36.4
g.root-servers.net. 518400 IN AAAA 2001:500:12:0:0:0:0:d0d
h.root-servers.net. 518400 IN A 198.97.190.53
h.root-servers.net. 518400 IN AAAA 2001:500:1:0:0:0:0:53
i.root-servers.net. 518400 IN A 192.36.148.17
i.root-servers.net. 518400 IN AAAA 2001:7fe:0:0:0:0:0:53
j.root-servers.net. 518400 IN A 192.58.128.30
j.root-servers.net. 518400 IN AAAA 2001:503:c27:0:0:0:2:30
k.root-servers.net. 518400 IN A 193.0.14.129
k.root-servers.net. 518400 IN AAAA 2001:7fd:0:0:0:0:0:1
l.root-servers.net. 518400 IN A 199.7.83.42
l.root-servers.net. 518400 IN AAAA 2001:500:9f:0:0:0:0:42
m.root-servers.net. 518400 IN A 202.12.27.33
m.root-servers.net. 518400 IN AAAA 2001:dc3:0:0:0:0:0:35

2、作为root-servers.net二级域名的权威DNS服务器
根DNS服务器的域名([a-l].root-servers.net)主要用作标识,但为了DNS系统的完备性,支持对根DNS服务器域名进行DNS解析,具体过程跟一般的域名解析过程无异,即:根DNS服务器 -> net顶级域DNS服务器 -> 根DNS服务器(此时作为root-servers.net二级域名的权威DNS服务器)。

域名/IP地址来源和工作原理:

  1. 其域名和IP地址由net顶级域DNS服务器给出
  2. 加载ZONE文件提供解析服务,参见上一小节的“根DNS服务器ZONE文件部分内容”

1.1.2、顶级域DNS服务器

英文名:Top-Level Domain Name Server,简称TLD Server

核心用途:给出二级域权威DNS服务器的域名和IP地址。

域名/IP地址来源和工作原理:

  1. 其域名和IP地址由根DNS服务器给出
  2. 加载ZONE文件提供解析服务,示例见下
1
2
3
4
5
6
7
8
9
10
11
12
baidu.com.              86310   IN      NS      ns4.baidu.com.
baidu.com. 86310 IN NS ns7.baidu.com.
baidu.com. 86310 IN NS ns2.baidu.com.
baidu.com. 86310 IN NS ns3.baidu.com.
baidu.com. 86310 IN NS dns.baidu.com.


ns4.baidu.com. 518400 IN A 14.215.178.80
ns7.baidu.com. 518400 IN A 180.76.76.92
ns2.baidu.com. 518400 IN A 220.181.33.31
ns3.baidu.com. 518400 IN A 153.3.238.93
dns.baidu.com. 518400 IN A 110.242.68.134

1.1.3、权威DNS服务器

英文名:Authoritative Name Server,简称NS

核心用途:给出域名最终IP地址或者次级域权威DNS服务器域名和IP地址。

域名/IP地址来源和工作原理:

  1. 其域名和IP地址由顶级域DNS服务器或者上级权威DNS服务器给出
  2. 加载ZONE文件提供解析服务,示例见下
1
2
3
4
baidu.com.     518400  IN      A       111.63.65.103
mail.baidu.com. 518400 IN A 14.215.178.81
img.baidu.com. 518400 IN A 180.76.76.93
blog.baidu.com. 518400 IN A 180.76.76.93

1.1.4、功能性DNS服务器

功能性DNS服务器主要有两类:“递归DNS服务器”和“转发DNS服务器”。

1.1.4.1、递归DNS服务器

英文名:Recursive DNS Server

两个核心用途:

  1. 代理完成DNS迭代查询过程,请求递归DNS服务器的DNS客户端可精简相应功能
  2. 对DNS解析结果进行缓存:既优化性能,又能降低对上级DNS服务器(比如“根DNS服务器”、“顶级域DNS服务器”和“权威DNS服务器”等)的负载

域名/IP地址来源和工作原理:

  1. 一般不存在域名,DNS客户端直接显式配置IP,比如:
    • 企业自搭的递归DNS服务器10.110.10.20
    • 大型机构提供的公共DNS服务器(本质就是递归DNS服务器):1)谷歌-8.8.8.88.8.4.4;2)阿里巴巴-223.5.5.5223.6.6.6
  2. 自身不存在ZONE文件,代理完成DNS迭代查询过程,对DNS解析过程进行缓存
1.1.4.2、转发DNS服务器

英文名:Forwarding DNS Server

两个核心用途:

  1. 转发DNS查询给所配置DNS服务器(可以转发到根DNS服务器、顶级域DNS服务器、权威DNS服务器和功能性DNS服务器,一般是转发到递归DNS服务器),返回所获得的DNS查询结果
  2. 对DNS解析结果进行缓存:既优化性能,又能降低对所配置DNS服务器的负载

域名/IP地址来源和工作原理:

  1. 一般不存在域名,DNS客户端直接显式配置IP,比如:
    • 企业自搭的转发DNS服务器10.110.10.21
    • 家庭网络路由器提供的转发DNS服务器192.168.1.20
  2. 自身不存在ZONE文件,转发DNS查询/返回所获得的DNS查询结果,对DNS解析过程进行缓存

1.2、DNS客户端

英文名:DNS Client

不同DNS客户端支持的DNS解析相关功能可以不尽相同,比如“只需请求递归DNS服务器的DNS客户端可以不支持迭代查询功能”。

二、架构

2.1、最简单核心架构

完成一次DNS迭代查询过程的架构是最简单核心架构,如下图所示。

一点说明:架构中DNS服务器实际中一般采用集群形式,以达成“高可用”和“负载均衡”目标,常采用Anycast和主副技术作为集群化方案,比如“对于根DNS服务器:a.root-servers.net是全球13组根DNS服务器中的主根DNS服务器,其他12组根DNS服务器是副根DNS服务器,副根DNS服务器通过区域传送技术定时从主根DNS服务器同步最新数据;而每组根DNS服务器又采用Anycast技术,即每个根DNS服务器IP实际对应多台服务器”。

2.2、现实复杂架构

在最简单核心架构基础上添加功能性DNS服务器可组成现实复杂架构,如下图所示。

一点说明:图架构中的“转发DNS服务器”和“递归DNS服务器”位置和数量只是用于说明,实际架构中“转发DNS服务器”和“递归DNS服务器”的位置和数量可以有更多变化,比如“在根DNS服务器、顶级域DNS服务器、权威DNS服务器之前架设转发DNS服务器”,“架设串联的一前一后两个递归DNS服务器”等)。

三、架构实验

实验环境叙述如下:

  • 实验DNS服务器
    • IP地址:192.168.31.181
    • DNS服务器实现软件:选用BIND 9
  • 实验DNS客户端
    • IP地址:192.168.31.143
    • DNS客户端实现软件:选用Linux dig命令

备注

  • DNS服务器实现软件有:
    • BIND 9:全功能支持,即支持——根DNS服务器、顶级域DNS服务器、权威DNS服务器、递归DNS服务器、转发DNS服务器
    • PowerDNS:全功能支持,即支持——根DNS服务器、顶级域DNS服务器、权威DNS服务器、递归DNS服务器、转发DNS服务器
    • CoreDNS:原生支持——根DNS服务器、顶级域DNS服务器、权威DNS服务器;结合插件支持——递归DNS服务器、转发DNS服务器
    • 自实现
  • DNS客户端实现软件有:
    • Linux dig命令
    • Linux nslookup命令
    • BIND 9
    • PowerDNS
    • 自实现

3.1、转发

在实验DNS服务器的配置文件“/etc/bind/named.conf.options”中增加以下配置,此时其作为转发DNS服务器。

1
2
3
4
5
6
forwarders {
223.5.5.5; // 阿里巴巴公共DNS服务器
8.8.8.8; // Google公共DNS服务器
};

forward only; // 仅转发

1、实验DNS客户端
执行dig @192.168.31.181 baidu.com +short命令,得到以下结果,表明实验转发DNS服务器正常工作。

1
2
3
111.63.65.247
111.63.65.103
110.242.74.102

2、实验DNS服务器

转发DNS请求给阿里巴巴公共DNS服务器,网络抓包结果如下。

请求报文:

1
2
3
4
5
6
7
8
9
10
11
12
13
Internet Protocol Version 4, Src: 192.168.31.181, Dst: 223.5.5.5 
User Datagram Protocol, Src Port: 38583, Dst Port: 53
Domain Name System (query)
Transaction ID: 0x1bb1
Flags: 0x0110 Standard query
Questions: 1
Answer RRs: 0
Authority RRs: 0
Additional RRs: 1
Queries
baidu.com: type A, class IN
Additional records
<Root>: type OPT

响应报文:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Internet Protocol Version 4, Src: 223.5.5.5, Dst: 192.168.31.181
User Datagram Protocol, Src Port: 53, Dst Port: 38583
Domain Name System (response)
Transaction ID: 0x1bb1
Flags: 0x8180 Standard query response, No error
Questions: 1
Answer RRs: 3
Authority RRs: 0
Additional RRs: 1
Queries
baidu.com: type A, class IN
Answers
baidu.com: type A, class IN, addr 111.63.65.247
baidu.com: type A, class IN, addr 111.63.65.103
baidu.com: type A, class IN, addr 110.242.74.102
Additional records
<Root>: type OPT

3.2、递归

在实验DNS服务器的配置文件“/etc/bind/named.conf.options”中增加以下配置,此时其作为递归DNS服务器。

1
recursion yes;      // 允许递归查询。须注意:这是默认配置,这里为了实验进行显式配置

1、实验DNS客户端
执行dig @192.168.31.181 baidu.com +short命令,得到以下结果,表明实验递归DNS服务器正常工作。

1
2
3
4
111.63.65.247
124.237.177.164
111.63.65.103
110.242.74.102

2、实验DNS服务器

请求根DNS服务器(192.58.128.30是根DNS服务器j.root-servers.net对应的IP)获取顶级域DNS服务器域名和IP地址,网络抓包结果如下。

请求报文:

1
2
3
4
5
6
7
8
9
10
11
12
13
Internet Protocol Version 4, Src: 192.168.31.181, Dst: 192.58.128.30
User Datagram Protocol, Src Port: 33038, Dst Port: 53
Domain Name System (query)
Transaction ID: 0xbe86
Flags: 0x0000 Standard query
Questions: 1
Answer RRs: 0
Authority RRs: 0
Additional RRs: 1
Queries
com: type NS, class IN
Additional records
<Root>: type OPT

响应报文:

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
Internet Protocol Version 4, Src: 192.58.128.30, Dst: 192.168.31.181
User Datagram Protocol, Src Port: 53, Dst Port: 33038
Domain Name System (response)
Transaction ID: 0xbe86
Flags: 0x8000 Standard query response, No error
Questions: 1
Answer RRs: 0
Authority RRs: 15
Additional RRs: 27
Queries
com: type NS, class IN
Authoritative nameservers
com: type NS, class IN, ns a.gtld-servers.net
com: type NS, class IN, ns b.gtld-servers.net
com: type NS, class IN, ns c.gtld-servers.net
com: type NS, class IN, ns d.gtld-servers.net
com: type NS, class IN, ns e.gtld-servers.net
com: type NS, class IN, ns f.gtld-servers.net
com: type NS, class IN, ns g.gtld-servers.net
com: type NS, class IN, ns h.gtld-servers.net
com: type NS, class IN, ns i.gtld-servers.net
com: type NS, class IN, ns j.gtld-servers.net
com: type NS, class IN, ns k.gtld-servers.net
com: type NS, class IN, ns l.gtld-servers.net
com: type NS, class IN, ns m.gtld-servers.net
com: type DS, class IN
com: type RRSIG, class IN
Additional records
a.gtld-servers.net: type A, class IN, addr 192.5.6.30
b.gtld-servers.net: type A, class IN, addr 192.33.14.30
c.gtld-servers.net: type A, class IN, addr 192.26.92.30
d.gtld-servers.net: type A, class IN, addr 192.31.80.30
e.gtld-servers.net: type A, class IN, addr 192.12.94.30
f.gtld-servers.net: type A, class IN, addr 192.35.51.30
g.gtld-servers.net: type A, class IN, addr 192.42.93.30
h.gtld-servers.net: type A, class IN, addr 192.54.112.30
i.gtld-servers.net: type A, class IN, addr 192.43.172.30
j.gtld-servers.net: type A, class IN, addr 192.48.79.30
k.gtld-servers.net: type A, class IN, addr 192.52.178.30
l.gtld-servers.net: type A, class IN, addr 192.41.162.30
m.gtld-servers.net: type A, class IN, addr 192.55.83.30
a.gtld-servers.net: type AAAA, class IN, addr 2001:503:a83e::2:30
b.gtld-servers.net: type AAAA, class IN, addr 2001:503:231d::2:30
c.gtld-servers.net: type AAAA, class IN, addr 2001:503:83eb::30
d.gtld-servers.net: type AAAA, class IN, addr 2001:500:856e::30
e.gtld-servers.net: type AAAA, class IN, addr 2001:502:1ca1::30
f.gtld-servers.net: type AAAA, class IN, addr 2001:503:d414::30
g.gtld-servers.net: type AAAA, class IN, addr 2001:503:eea3::30
h.gtld-servers.net: type AAAA, class IN, addr 2001:502:8cc::30
i.gtld-servers.net: type AAAA, class IN, addr 2001:503:39c1::30
j.gtld-servers.net: type AAAA, class IN, addr 2001:502:7094::30
k.gtld-servers.net: type AAAA, class IN, addr 2001:503:d2d::30
l.gtld-servers.net: type AAAA, class IN, addr 2001:500:d937::30
m.gtld-servers.net: type AAAA, class IN, addr 2001:501:b1f9::30
<Root>: type OPT

请求顶级域DNS服务器(192.41.162.30是顶级域DNS服务器l.gtld-servers.net对应的IP)获取权威DNS服务器域名和IP地址:

请求报文:

1
2
3
4
5
6
7
8
9
10
11
12
13
Internet Protocol Version 4, Src: 192.168.31.181, Dst: 192.41.162.30
User Datagram Protocol, Src Port: 41394, Dst Port: 53
Domain Name System (query)
Transaction ID: 0xfb67
Flags: 0x0000 Standard query
Questions: 1
Answer RRs: 0
Authority RRs: 0
Additional RRs: 1
Queries
baidu.com: type A, class IN
Additional records
<Root>: type OPT

响应报文:

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
Internet Protocol Version 4, Src: 192.41.162.30, Dst: 192.168.31.181
User Datagram Protocol, Src Port: 53, Dst Port: 41394
Domain Name System (response)
Transaction ID: 0xfb67
Flags: 0x8000 Standard query response, No error
Questions: 1
Answer RRs: 0
Authority RRs: 9
Additional RRs: 12
Queries
baidu.com: type A, class IN
Authoritative nameservers
baidu.com: type NS, class IN, ns ns2.baidu.com
baidu.com: type NS, class IN, ns ns3.baidu.com
baidu.com: type NS, class IN, ns ns4.baidu.com
baidu.com: type NS, class IN, ns ns1.baidu.com
baidu.com: type NS, class IN, ns ns7.baidu.com
CK0POJMG874LJREF7EFN8430QVIT8BSM.com: type NSEC3, class IN
CK0POJMG874LJREF7EFN8430QVIT8BSM.com: type RRSIG, class IN
HPVV1UNKTCF9TD77I2AUR73709T975GH.com: type NSEC3, class IN
HPVV1UNKTCF9TD77I2AUR73709T975GH.com: type RRSIG, class IN
Additional records
ns2.baidu.com: type A, class IN, addr 220.181.33.31
ns2.baidu.com: type AAAA, class IN, addr 240e:940:603:4:0:ff:b01b:589a
ns3.baidu.com: type A, class IN, addr 153.3.238.93
ns3.baidu.com: type A, class IN, addr 36.155.132.78
ns4.baidu.com: type A, class IN, addr 111.45.3.226
ns4.baidu.com: type A, class IN, addr 14.215.178.80
ns1.baidu.com: type A, class IN, addr 110.242.68.134
ns1.baidu.com: type AAAA, class IN, addr 240e:bf:b801:1002:0:ff:b024:26de
ns7.baidu.com: type A, class IN, addr 180.76.76.92
ns7.baidu.com: type AAAA, class IN, addr 240e:940:603:4:0:ff:b01b:589a
ns7.baidu.com: type AAAA, class IN, addr 240e:bf:b801:1002:0:ff:b024:26de
<Root>: type OPT

请求权威DNS服务器(153.3.238.93是权威DNS服务器ns3.baidu.com对应的IP)获取最终IP地址:

请求报文:

1
2
3
4
5
6
7
8
9
10
11
12
13
Internet Protocol Version 4, Src: 192.168.31.181, Dst: 153.3.238.93
User Datagram Protocol, Src Port: 39906, Dst Port: 53
Domain Name System (query)
Transaction ID: 0x8cfe
Flags: 0x0000 Standard query
Questions: 1
Answer RRs: 0
Authority RRs: 0
Additional RRs: 1
Queries
baidu.com: type A, class IN
Additional records
<Root>: type OPT

响应报文:

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
Internet Protocol Version 4, Src: 153.3.238.93, Dst: 192.168.31.181
User Datagram Protocol, Src Port: 53, Dst Port: 39906
Domain Name System (response)
Transaction ID: 0x8cfe
Flags: 0x8400 Standard query response, No error
Questions: 1
Answer RRs: 4
Authority RRs: 5
Additional RRs: 12
Queries
baidu.com: type A, class IN
Answers
baidu.com: type A, class IN, addr 111.63.65.247
baidu.com: type A, class IN, addr 124.237.177.164
baidu.com: type A, class IN, addr 110.242.74.102
baidu.com: type A, class IN, addr 111.63.65.103
Authoritative nameservers
baidu.com: type NS, class IN, ns ns7.baidu.com
baidu.com: type NS, class IN, ns ns3.baidu.com
baidu.com: type NS, class IN, ns ns2.baidu.com
baidu.com: type NS, class IN, ns dns.baidu.com
baidu.com: type NS, class IN, ns ns4.baidu.com
Additional records
dns.baidu.com: type A, class IN, addr 110.242.68.134
ns2.baidu.com: type A, class IN, addr 220.181.33.31
ns3.baidu.com: type A, class IN, addr 36.155.132.78
ns3.baidu.com: type A, class IN, addr 153.3.238.93
ns4.baidu.com: type A, class IN, addr 14.215.178.80
ns4.baidu.com: type A, class IN, addr 111.45.3.226
ns7.baidu.com: type A, class IN, addr 180.76.76.92
dns.baidu.com: type AAAA, class IN, addr 240e:bf:b801:1002:0:ff:b024:26de
ns2.baidu.com: type AAAA, class IN, addr 240e:940:603:4:0:ff:b01b:589a
ns7.baidu.com: type AAAA, class IN, addr 240e:bf:b801:1002:0:ff:b024:26de
ns7.baidu.com: type AAAA, class IN, addr 240e:940:603:4:0:ff:b01b:589a
<Root>: type OPT

3.3、根DNS服务器

对实验DNS服务器作如下修改,此时其作为根DNS服务器。

配置文件“/etc/bind/named.conf.options”中增加以下配置,关闭递归功能,确保作为纯粹的根DNS服务器:

1
recursion no;

配置文件“/etc/bind/named.conf.local”中增加以下配置,加载作为根DNS服务器核心的ZONE文件:

1
2
3
4
zone "." {
type master; // 这是主DNS服务器
file "/etc/bind/zones/zone.dslztx"; // 区域数据文件的路径和名称
}

上述ZONE文件内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
.                       86400   IN      SOA     dslztx.top. admin.dslztx.top. 2025112201 1800 900 604800 86400


. 518400 IN NS a.root-servers.net.
. 518400 IN NS b.root-servers.net.
. 518400 IN NS c.root-servers.net.

com. 172800 IN NS a.gtld-servers.net.
com. 172800 IN NS b.gtld-servers.net.
com. 172800 IN NS c.gtld-servers.net.

a.gtld-servers.net. 172800 IN A 192.5.6.30
b.gtld-servers.net. 172800 IN A 192.33.14.30
c.gtld-servers.net. 172800 IN A 192.26.92.30

a.root-servers.net. 518400 IN A 198.41.0.4
b.root-servers.net. 518400 IN A 170.247.170.2
c.root-servers.net. 518400 IN A 192.33.4.12

1、实验DNS客户端
执行dig @192.168.31.181 baidu.com +short命令,得到空结果,这是因为实验根DNS服务器未返回最终IP,符合预期。

2、实验DNS服务器

网络抓包结果如下。

请求报文:

1
2
3
4
5
6
7
8
9
10
11
12
13
Internet Protocol Version 4, Src: 192.168.31.143, Dst: 192.168.31.181
User Datagram Protocol, Src Port: 55062, Dst Port: 53
Domain Name System (query)
Transaction ID: 0x2845
Flags: 0x0120 Standard query
Questions: 1
Answer RRs: 0
Authority RRs: 0
Additional RRs: 1
Queries
baidu.com: type A, class IN
Additional records
<Root>: type OPT

响应报文:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Internet Protocol Version 4, Src: 192.168.31.181, Dst: 192.168.31.143
User Datagram Protocol, Src Port: 53, Dst Port: 55062
Domain Name System (response)
Transaction ID: 0x2845
Flags: 0x8100 Standard query response, No error
Questions: 1
Answer RRs: 0
Authority RRs: 3
Additional RRs: 1
Queries
baidu.com: type A, class IN
Authoritative nameservers
com: type NS, class IN, ns a.gtld-servers.net
com: type NS, class IN, ns c.gtld-servers.net
com: type NS, class IN, ns b.gtld-servers.net
Additional records
<Root>: type OPT

参考文献

[1]https://www.iana.org/domains/root/servers
[2]https://zh.wikipedia.org/wiki/%E6%A0%B9%E7%B6%B2%E5%9F%9F%E5%90%8D%E7%A8%B1%E4%BC%BA%E6%9C%8D%E5%99%A8
[3]https://root-servers.org/
[4]https://www.internic.net/domain/root.zone
[5]https://www.iana.org/domains/root/files
[6]https://stackoverflow.com/questions/21836103/how-dns-resolve-root-servers-net

您的支持将鼓励我继续分享!