​   ;DNS是计算机域名系统 (Domain Name System 或Domain Name Service) 的缩写,它是由域名解析器和域名服务器组成的。人们在通过浏览器访问网站时只需要记住网站的域名即可,而不需要记住那些不太容易记得的IP地址。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。其中域名必须对应一个IP地址,一个IP地址可以有多个域名,一个域名也可由对应多个IP地址。而IP地址不一定有域名。DNS服务的工作流程如下:

DNS服务基础与原理

1. 域名结构

​ Internet 的顶级域名由 Internet网络协会域名注册查询负责网络地址分配的委员会进行登记和管理,它还为 Internet的每一台主机分配唯一的 IP 地址。域名就是主机名加上域。如 www.baidu.com 就是域名,而baidu.com就是域。

DNS服务基础与原理

​ 全世界现有三个大的网络信息中心: 位于美国的 Inter-NIC,负责美国及其他地区; 位于荷兰的RIPE-NIC,负责欧洲地区;位于日本的APNIC ,负责亚太地区。全世界只有13台根域名服务器,1个为主根服务器在美国。其余12个均为辅根服务器,其中9个在美国,欧洲2个,位于英国和瑞典,亚洲1个,位于日本。这只是一个逻辑概念,根域名服务器可以由分布在全球的多个服务器组成,形成一个集群,对外统一为1台逻辑的根域名服务器。在root-servers网站上,我们能查到所有的真实服务器分布。截至2018-12-27,根服务器系统由12个独立的根服务器运营商运营的931个实例组成。

DNS服务基础与原理

2. DNS服务器分类

2.1. 主域名服务器

​ 负责维护一个区域的所有域名信息,是特定的所有信息的权威信息源,数据可以修改。

2.2. 辅助域名服务器

​ 当主域名服务器出现故障、关闭或负载过重时,辅助域名服务器作为主域名服务器的备份提供域名解析服务。辅助域名服务器中的区域文件中的数据是从另外的一台主域名服务器中复制过来的,是不可以修改的。

2.3. 缓存域名服务器

​ 从某个远程服务器取得每次域名服务器的查询回答,一旦取得一个答案就将它放在高速缓存中,以后查询相同的信息就用高速缓存中的数据回答,缓存域名服务器不是权威的域名服务器,因为它提供的信息都是间接信息。

2.4. 转发域名服务器

​ 负责所有非本地域名的本地查询。转发域名服务器接到查询请求后,在其缓存中查找,如找不到就将请求依次转发到指定的域名服务器,直到查找到结果为止,否则返回无法映射的结果。

3. DNS查询类型

3.1. 本地解析

​ 客户端可以使用缓存信息就地应答,这些缓存信息是通过以前的查询获得的。如果缓存没有,就会访问hosts文件,每个操作操作系统都有一个hosts文件,由操作系统操作的IP和域名的本地映射文件,一旦查到了指定的域名,就不会继续查找DNS server, 所以可以节省时间,但是hosts设置的IP地址是静态的。

windows操作系统:C:\Windows\System32\drivers\etc\hosts

Linux操作系统: /etc/hosts

DNS服务基础与原理

3.2. 直接解析

​ 直接解析,就是直接由所设定的DNS服务器解析,使用的是该DNS服务器的资源记录缓存或者其权威回答。(如果所查询的域名是该服务器管辖的)。

DNS服务基础与原理

3.3. 递归解析

​ 当局部DNS服务器自己不能回答客户机的DNS查询时,它就需要向其他DNS服务器进行查询。局部DNS服务器自己负责向其他DNS服务器进行查询,一般是先向该域名的根域服务器查询,再由根域名服务器一级级向下查询。最后得到的查询结果返回给局部DNS服务器,再由局部DNS服务器返回给客户端。

DNS服务基础与原理

3.4. 迭代解析

​ 当局部DNS服务器自己不能回答客户机的DNS查询时,也可以通过迭代查询的方式进行解析,局部DNS服务器不是自己向其他DNS服务器进行查询,而是把能解析该域名的其他DNS服务器的IP地址返回给客户端DNS程序,客户端DNS程序再继续向这些DNS服务器进行查询,直到得到查询结果为止。

DNS服务基础与原理

4. DNS迭代解析全过程

DNS服务基础与原理

图中笔记本电脑访问 www.baidu.com 的过程如下:

  1. 笔记本查看缓存中是否有 www.baidu.com 对应的IP。如果有进行TCP连接。如果没有执行2。
  2. 笔记本电脑打开本机文件hosts查看是否有 www.baidu.com 对应的IP。如果有进行TCP连接。如果没有执行3。
  3. 笔记本电脑将请求发送给电脑IP设置中的DNS服务器,DNS查看缓存中是否有 www.baidu.com对应 的IP。如果有发送给笔记本进行TCP连接,如果没有查看自己负责解析的记录中。如果还没有执行4。
  4. DNS服务器将请求转发到根域名服务器,根域名服务器说我不知道 www.baidu.com 的IP是什么,但是.com好像知道 www.baidu.com ,我把他的地址发给你,你问问他吧。
  5. DNS服务器将请求转发到.com一级域名服务器,.com顶级域名称服务器在收到DNS请求报文后,先查询自己的缓存,如果没有就查询baidu.com对应的IP发送给DNS服务器。一级域名服务器说我不知道 www.baidu.com 的IP是什么,但是baidu.com好像知道 www.baidu.com ,我把他的地址发给你,你问问他吧。
  6. DNS服务器将请求转发到baidu.com二级域名服务器,二级名称服务器在收到DNS请求报文后,也先查询自己的缓存,如果没有就查询 www.baidu.com 对应的IP发送给DNS服务器。二级域名服务器说我不知道 www.baidu.com 的IP是什么,但是 www.baidu.com 一定知道 www.baidu.com ,我把他的地址发给你,你问问他吧。
  7. 本地名称服务器在收到baidu.com二级名称服务器的DNS应答报文,得到 www.baidu.com 三级域名所对应的权威名称服务器地址后,就向对应的权威名称服务器发送一条请求解析 www.baidu.com 域名的DNS请求报文。权威名称服务器在收到DNS请求后,在它的DNS区域数据库中查找,最终得出了 www.baidu.com 域名所对应的IP地址。然后向DNS服务器返回DNS应答报文。三级域名服务器说我 www.baidu.com 的IP是xxx.xxx.xxx.xxx。
  8. DNS服务器在收到权威名称服务器后,向笔记本返回一条DNS应答报文,告诉DNS客户端所得到的 www.baidu.com 域名的IP地址。这样DNS客户端就可以正常访问这个网站了。

5. DNS解析类型

5.1. A记录

​ 最简单最常用,添加记录时候填写IP地址即可。A记录是用来指定主机名对应的IP地址记录。通过A记录您可以将该域名指向到自己的网站服务器IP地址。A” 记录用于将主机映射到 IPv4 IP 地址,而 “AAAA” 记录用于将主机映射到 IPv6 地址。

5.2. CNAME记录

​ 别名记录,也称为规范名字(Canonical Name)。这种记录允许您将多个名字映射到同一台计算机。CNAME的目标主机地址只能使用主机名,不能使用IP地址,主机名前不能有任何其他前缀。如https://和http://。比如设置www1.baidu.com,用来指向一个主机 www.baidu.com ,那么以后就可以用www1.baidu.com来代替访问 www.baidu.com

5.3. MX记录

邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据收信人的地址后缀来定位邮件服务器。MX记录也叫做邮件路由记录,用户可以将该域名下的邮件服务器指向到自己的mail server上,然后即可自行操控所有的邮箱设置。例如,当Internet上的某用户要发一封信给 [email protected]时,该用户的邮件系统通过DNS查找163.com这个域的MX记录,如果MX记录存在, 用户计算机就将邮件发送到MX记录所指定的邮件服务器上。 

5.4. NS记录

​ 域名DNS服务器记录,全称Name Server记录,用来指定该域名由哪个DNS服务器来对您的域名进行解析。注册域名时,总有默认的DNS服务器,每个注册的域名都是由一组DNS域名服务器来解析的。例如用户希望由114.114.114.114这台服务器解析www.baidu.com ,则需要设置 www.baidu.com 的NS记录。 NS记录优先于A记录。如果一个主机地址同时存在NS记录和A记录,则A记录不生效。  

5.5. SOA记录

​ SOA记录表明了DNS服务器之间的关系。SOA记录表明了谁是这个区域的所有者。NS记录叫名称服务器记录,用于说明这个区域有哪些DNS服务器负责解析,如www1.baidu.com有NS1记录,www2.baidu.com由NS2记录。SOA记录说明负责解析baidu.com的DNS服务器中哪一个是主服务器。

6. DNS命令操作

6.1. windowsDNS缓存的查看与删除

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
C:\Users\LY\Desktop
λ ipconfig /displaydns #查看缓存

sp1.baidu.com
----------------------------------------
记录名称. . . . . . . : sp1.baidu.com
记录类型. . . . . . . : 5
生存时间. . . . . . . : 464
数据长度. . . . . . . : 8
部分. . . . . . . . . : 答案
CNAME 记录 . . . . . : www.a.shifen.com


记录名称. . . . . . . : www.a.shifen.com
记录类型. . . . . . . : 1
生存时间. . . . . . . : 464
数据长度. . . . . . . : 4
部分. . . . . . . . . : 答案
A (主机)记录 . . . . : 183.232.231.172


记录名称. . . . . . . : www.a.shifen.com
记录类型. . . . . . . : 1
生存时间. . . . . . . : 464
数据长度. . . . . . . : 4
部分. . . . . . . . . : 答案
A (主机)记录 . . . . : 183.232.231.173

C:\Users\LY\Desktop
λ ipconfig /flushdns #清除缓存

Windows IP 配置

已成功刷新 DNS 解析缓存。

6.2. 修改host文件屏蔽网站

1
2
3
4
5
6
7
8
9
10
[email protected]:~# cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 kali
127.0.0.1 www.baidu.com
127.0.0.1 www.qq.com
[email protected]:~# service apache2 stop
[email protected]:~# curl -I www.baidu.com
curl: (7) Failed to connect to www.baidu.com port 80: 拒绝连接
[email protected]:~# curl -I www.qq.com
curl: (7) Failed to connect to www.qq.com port 80: 拒绝连接