DNS简介
- DNS(Domain Name System,域名系统),是一个分布式的域名解析系统,服务于应用层协议,实现从域名到IP以及名IP到域名的双向解析。
- DNS运行在UDP协议之上,端口是53。
- DNS的分布式数据库是以域名为索引的,每个域名实际上就是很大的逆向树中路径,这颗逆向树中路径又可以成为域名空间(domain name space),其最大深度不能超过127层,每个节点都有一个可以长达63个字符的文本标号,而且域名总长度不能超过253个字符,其组织结构如下:
DNS解析
按查询类型分为:递归解析和迭代解析
-
递归解析:客户端向所在网络DNS服务器发起请求,DNS服务器发回解析结果的过程
-
迭代解析:当某个DNS服务器无法解析客户端的请求时,从根域名服务器开始,向每层DNS服务器发出请求,并接收每层DNS服务器的查询结果,直至找到权威DNS服务器(存储主机准确IP地址的服务器)的过程
-
递归:客户端只发一次请求,要求对方给出最终结果。
-
迭代:客户端发出一次请求,对方如果没有授权回答,它就会返回一个能解答这个查询的其它名称服务器列表,客户端会再向返回的列表中发出请求,直到找到最终负责所查域名的名称服务器,从它得到最终结果。
-
授权回答:向dns服务器查询一个域名,刚好这个域名是本服务器负责,返回的结果就是授权回答。
从递归和迭代查询可以看出: -
客户端-本地dns服务端:这部分属于递归查询。
-
本地dns服务端—外网:这部分属于迭代查询。
-
递归查询时,返回的结果只有两种:查询成功或查询失败.
-
迭代查询,又称作重指引,返回的是最佳的查询点或者主机地址.
按解析方向解析:
- FQDN(Fully Qualified Domain Name):完全合格域名,主机+全域名路径,逻辑上能够准确表达主机的位置
- 正向解析:FQDN解析为IP
- 反向解析:IP解析为FQDN
- 正向解析和反向解析是两个不同的名称空间,两个不同的解析树
DNS解析过程
- 1.客户端先检查本地缓存和
hosts
文件,如果有直接返回结果 - 2.如果没有缓存就向DNS服务器发起请求解析
- 3.DNS服务器收到请求后先检查本地缓存,如果查到缓存就直接返回结果
- 4.如果没有查到,将请求发送给DNS根服务器请求查询,从跟域找到顶级域,从顶级域找到二级域,从二级域找到三级域,直到最终的IP地址,然后DNS服务器将结果缓存并将结果返回给客户机。
- 5.如果没有找到结果就返回错误。
DNS服务器类型
DNS服务器的类型:
-
主DNS服务器: 做域名的修改变更,master身份
-
从DNS服务器: 是master的slave,并向外提供DNS查询服务
-
缓存DNS服务器: 本地没有zone解析记录,采用递归方式转发客户端查询请求,并返回结果给客户端,同时缓存查询回来的结果,也叫递归服务器
-
转发器: 本地没有zone解析记录,将用户请求转发给别的NDS服务器并得到结果后再返回给客户端,并且自身不缓存结果,也就是每一次客户端请求都是一个完整的解析过程
-
主DNS服务器:管理和维护所负责解析的域内解析库的服务器
-
从DNS服务器:从主服务器或从服务器“复制”(区域传输)解析库副本
- 序列号:解析库版本号,主服务器解析库变化时,其序列递增
- 刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
- 重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
- 过期时长:从服务器联系不到主服务器时,多久后停止服务
-
“通知”机制:主服务器解析库发生变化时,会主动通知从服务器
-
主从服务器解析库更新机制:Push和Pull
- Push:推送,主服务器解析库发生变化时,主动通知从服务器更新
- Pull:拉取,从服务器按照设置每隔一定时间主动同步主服务器的解析库
DNS资源记录
- 区域解析库:由众多RR组成:
- 资源记录:Resource Record, RR
- 记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX
DNS记录类型
-
SOA:(Start Of Authority)记录叫做起始授权机构,就是谁对这个区域有修改权利,是必须要有的一段dns做备注说明的文本,一般与ns保持一致
-
NS:(Name Server’)用来指定该域名由哪个DNS服务器来进行解析
-
MX:(Mail Exchanger)邮件记录,有优先级,值越小级别越高
-
A:(Address)解析域名到IP的记录,这是用的最多的一种解析方式
-
AAAA:IP v6的域名到IP的解析方式
-
PTR:从IP解析到域名,一般说为反向记录(对比A记录)
-
CNAME:映射到别的域名,用于域名切换
资源记录定义的格式
- 语法:name [TTL] IN rr_type value
- 注意:
-
- TTL可从全局继承,如:$TTL 1d
- 使用 “@” 符号可用于引用当前区域的名字
- 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应
- 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机
SOA记录
- name:当前域名,可用"@"代替
- value:包含多部分内容
(1) 当前区域的主DNS服务器的FQDN(无命名要求,只要和相应的A记录匹配即可)
(2) 当前区域管理员的邮箱地址;但地址中不能使用"@“符号,一般用”."替换,例如admin.stduylinux.xyz.
(3) 主从服务器区域传输相关定义,否定结果缓存统一的TTL - 示例如下
studylinux.xyz. 86400 IN SOA ns.studylinux.xyz. nsadmin.stduylinux.xyz. (
2015042201 ;序列号
2H ;刷新时间
10M ;重试时间
1W ;过期时间
1D ;否定答案的TTL值
)
NS记录
- name: 当前区域的名字 可用"@"代替,常省略
- value: 当前区域的某DNS服务器的名字,例如ns.studylinux.xyz.
- 注意:
- 相邻的两个资源记录的name相同时,后续的可省略
- 对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录
- 一个区域可以有多个NS记录
- 范例:
stuylinux.xyz. IN NS ns1.studylinux.xyz.
stuylinux.xyz. IN NS ns2.studylinux.xyz.
MX记录
- name: 当前区域的名字 可用"@"代替,常省略
- value: 当前区域的某邮件服务器(smtp服务器)的主机名
- 注意:
- 一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级;数字越小优先级越高
- 对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录
- 范例:
studylinux.xyz. IN MX 10 mx1.studylinux.xyz.
MX 20 mx2.studylinux.xyz.
A记录
-
name: 某主机的FQDN(完整域名),例如:www.stuydlinux.xyz.
-
value: 主机名对应主机的IP地址
-
特殊写法:
$GENERATE 1-254 HOST$ A 1.2.3.$
:按照序号排列规律的FQDN与IP的对应关系
*.stuylinux.xyz. IN A 5.5.5.5
:泛域名解析,当用户输错地址时,统一解析至某个地址
studylinux.xyz. IN A 6.6.6.6
:当用户没有输入www主机名时解析至地址 -
AAAA记录与A记录相似,只是IP地址为IPv6地址
CNAME别名记录
- name: 别名的FQDN
- value: 真正名字的FQDN 例如:
www.study.xyz. IN CHAME webserv.studylinux.xyz.
PTR记录
- name:特定格式IP+特定后缀
- IP地址反过来写:如1.2.3.4写作4.3.2.1
- 特定后缀:in-addr.arpa.
- 完整写法:4.3.2.1.in-addr.arpa.
- 注意:网络地址及后缀可省略;主机地址依然需要反着写
- value:FQDN
子域授权
- 每个域的名称服务器,都是通过其上级名称服务器在解析库进行授权,类似根域授权tld
- glue record:粘合记录,父域授权子域的记录
范例:
.com. IN NS ns1.com.
.com. IN NS ns2.com.
ns1.com. IN A 2.2.2.1
ns2.com. IN A 2.2.2.2
# magedu.org. 在.com的名称服务器上,解析库中添加资源记录
magedu.org. IN NS ns1.magedu.org.
magedu.org. IN NS ns2.magedu.org.
magedu.org. IN NS ns3.magedu.org.
ns1.magedu.org. IN A 3.3.3.1
ns2.magedu.org. IN A 3.3.3.2
ns3.magedu.org. IN A 3.3.3.3
完