DNS(Domain Name System)是互联网上的一项服务,它作为将域名和 IP 地址相互映射的一个分布 式数据库,能够使人更方便的访问互联网。
DNS 系统使用的是网络的查询,因此需要有监听的 port。DNS 使用的是 53 端口号,在 /etc/services(搜索domain)这个文件中能看到。通常 DNS 是以 UDP 这个较快速的数据传输协议 来查询的,但是没有查询到完整的信息时,就会再次以 TCP 这个协议来重新查询。所以启动 DNS 时, 会同时启动 TCP 以及 UDP 的 53 端口。
DNS 实际上是域名解析协议,将域名转化为 IP 地址。

1.DNS的作用

通常识别主机的方式为主机名或者 IP 地址。人们更倾向于去记忆主机名,类似于 www.baidu.com
,而 IP 地址复杂且难记。为了解决这种问题,我们使用 DNS 域名解析服务,对 IP 地址进行解析,将可用的 IP 地址转化为域名,域名系统作为将域名和 IP 地址进行相互映射的一个分布式数据库,基 于 C/S 架构,服务端口号为 tcp53 和 udp53。实际上每台 DNS 域名解析服务器都只负责一个有限的范围(只负责自己范围内的解析)。

2.解析过程

域名解析包含两种查询方式,分别是递归查询和迭代查询,两种查询方式都可以得到结果,但是递归只需要询问一次即可得到结果,迭代需要询问多次才可以得到结果。

2.1 递归查询

是指 DNS 服务器在收到用户发起的请求时,必须向用户返回一个准确的査询结果。如果 DNS 服务器本地没有存储与之对应的信息,则该服务器需要询问其他服务器,并将返回的查询结构提交给用户。

一般是客户机和本地 DNS 服务器之间属于递归查询,即当客户机向 DNS 服务器发出请求后,若 DNS服务器不能解析,则会向另外的 DNS 服务器发出查询请求,得到最终的肯定或否定的结果后转交给客户机。此查询的源和目标保持不变,为了查询结果只需要发起一次查询。

递归算法:客户端向 LocaIDNS 发起域名查询 -> locaIDNS 不知道域名对应的 IP -> 但它知道谁
知道 -> 他代为帮客户端去查找 -> 最后再返回最终结果。

递归:客户端只发一次请求,要求对方给出最终结果。

2.2 迭代查询

是指 DNS 服务器在收到用户发起的请求时,并不直接回复查询结果,而是告诉另一台 DNS 服务器的地址,用户再向这台 DNS 服务器提交请求,这样依次反复直到返回查询结果。
一般情况下(有例外)本地的 DNS 服务器向其它 DNS 服务器的查询属于迭代查询。如若对方不能返回权威的结果,则它会向下一个 DNS 服务器(参考前一个DNS服务器返回的结果)再次发起进行查询,直到返回查询结果为止。此查询的源不变,但查询的目标不断变化,因此查询结果一般需要发起多次查询。

迭代算法:客户端向 LocaIDNS 发起域名查询 -> locaIDNS 不知道域名对应的 IP -> 但它知道谁
知道并推荐客户端应该找谁 -> 客户端自己去找它。

迭代:客户端发出一次请求,对方如果没有授权回答,它就会返回一个能解答这个查询的其它名称服务器列表,客户端会再向返回的列表中发出请求,直到找到最终负责所查域名的名称服务器,从它得到最终结果。

3.语法格式

3.1 记录格式

DNS 记录(RR,Resource Record)定由一系列语法编写的文本文件组成,每个 DNS 记录都是一个单独的行。记录通常遵循以下格式:

NAME [TTL] CLASS TYPE VALUE

参数说明:

  • NAME:要解析的域名,可以使用“@”符号表示引用当前区域的域名
  • TTL:“生存时间”,表示记录可以临时存储在缓存中的时间,默认单位为秒,可以是天(D)、小时(H)、周(W)等,可从全局继承
  • CLASS:理论上 DNS 记录有不同的类别,但实际中记录通常是 Internet(即 IN)
  • TYPE:记录类型
  • VALUE:解析出的域名信息(例如 IP 地址),同一个名字可以通过多条记录定义多个不同的值,此时 DNS 服务器会以轮询方式响应
www.example.com. 69288 IN A 93.184.216.34

这代表着该条记录可以在缓存中存储 69288 秒,它涉及 Internet 上的 DNS 记录(IN),并指向了
A 类记录,同时域名被解析为 IP 地址(93.184.216.34)。

3.2 记录类型

3.2.1 SOA 记录

SOA(Start Of Authority)起始授权记录包含区域文件或 DNS 服务器的区域信息。因为 DNS 区域
传输是将 DNS 记录数据从一个主名称服务器发送到一个辅名称服务器的过程,而 SOA 记录会首先被传输,所以每个 DNS 区域都需要一个 SOA 记录。一个区域解析库有且仅能有一个SOA(起始授权)记录,且必须为解析库的第一条记录。

example.com. 86400 IN SOA ns1.example.com. admin.example.com. (
                                            2024091801 ; 序列号,每次修改值要变大,不能超过10位,格式为 yyyymmddnn
                                                    1D ; 刷新时间,表示从服务器向主服务器一天拉取一次数据库
                                                    1H ; 重试时间,当从服务器向主服务器拉取数据库失败后,一小时后再次尝试拉取
                                                    1W ; 过期时间,当从服务器始终联系不到主服务器时,一周以后放弃从主服务器同步并停止向外提供服务
                                                    1D ; 否定答案的缓存时长,表示一天之内不需要查询上次没查到的记录
)


上面的定义可使用如下的来替换:
@ 86400 IN SOA ns1.example.com. admin.example.com. ( 2015042201 1D 1H 1W 1D
)

3.2.2 NS 记录

NS(域名服务器)记录会明确特定区域的管辖权,用于标明当前区域的 DNS 服务器。一个域通常会有多个 NS 记录,这些记录可指示该域的主要和辅助域名服务器。正确配置的 NS 记录能告诉互联网可从哪里找到域的 IP 地址,从而完成加载网站或应用程序。简单来说:一个 NS 记录对应一个 DNS 服务器,每个 NS 记录应该有一个 A 记录。作用是专用于标明当前区域的DNS服务器 。

example.com. 86400 IN NS ns1.example.com.

ns1 86400 IN A 192.168.72.11

3.2.3 MX 记录

MX 记录是指邮件交换或 SMTP 电子邮件服务器,MX 记录可以存在多个,通过指定优先级来确定使用顺序,取值范围 0-99,值越小优先级越高。每个 MX 记录应该有一个对应的 A 记录。

example.com. IN MX 5 mail1.example.com.

mail1 86400 IN A 192.168.72.13

3.2.4 A 记录

Internet 上大部分 DNS 解析都是通过 A 类记录进行的,并指向一个 IPv4 地址。通过这个记录,
用户在浏览器中输入域名后,客户端向相应的 IP 地址发送 HTTP 请求。由于 IPv4 地址的大小始终为 4 个字节,因此 rdlength 的值始终为 4。作用是将特定的主机名映射到对应主机的IP地址上。

# 轮询
web.example.com. IN A 192.168.10.13
web.example.com. IN A 192.168.10.14
# 一个IP可配置多个主机名
bbs.example.com. IN A 192.168.10.15
ftp.example.com. IN A 192.168.10.15
# 通过泛域名解析进行解析至某特定地址
$GENERATE 17-200 server$ IN A 192.168.10.$
*.example.com. IN A 192.168.10.16

上述配置中最后倒数第二行表示将server17.example.com. 解析的地址为192.168.10.17,
server18.example.com. 解析的地址为192.168.10.18,server19.example.com. 解析为
192.168.10.19,....,server200.example.com. 解析为192.168.10.200。

3.2.5 AAAA 记录

AAAA 记录,也称为“quad A”,功能与 A 记录相同。但是,它指向的是 IPv6 地址。因为 IPv6 的
长度为 128 位(16 字节),所以这里也预定义了 rdlength 为 16。

web.example.com IN AAAA ff03:0:0:0:0:0:0:c1

3.2.6 CNAME 记录

CNAME 记录也叫别名记录,是将记录值指向一个别名域而不是 IP 地址。对于这种类型,域名可以继续指向下一个域名或 IP 地址。

w .example.com. IN A 192.168.10.10
w .example.com. IN CNAME w .example.com.

3.2.7 PTR 记录

PTR 记录是允许反向查找的 DNS 记录。与“A”记录恰好相反,它可以通过 IP 地址来查找对应的域
名。

# 实例
10.10.168.192.in-addr.arpa. IN PTR w .example.com.
# 简写网络地址
10 IN PTR w .example.com.
Logo

纵情码海钱塘涌,杭州开发者创新动! 属于杭州的开发者社区!致力于为杭州地区的开发者提供学习、合作和成长的机会;同时也为企业交流招聘提供舞台!

更多推荐