首页 > 代码库 > DNS详解
DNS详解
概述
互联网访问绝大多数都是基于域名的访问,互联网访问的基础是基于IP来实现的,因此,需要有一种将域名解析成IP的机制,让用户在利用域名访问时,自动将域名转换成为对应的IP,这就是DNS的功能,本章将介绍一些DNS相关的内容,具体分为:
1、DNS的基础概念
2、配置DNS作为缓存DNS服务器
3、DNS的正向解析区域
4、DNS的反向解析区域
5、主从DNS实现
6、子域授权
7、区域转发
8、DNS安全相关的配置(ACL及安全配置项)
9、智能DNS(DNS的view)
一、DNS基础概念
DNS
domain name service 区域名称服务或者domain named system 区域名称系统,是互联网最基础的服务,分为正向域名解析(将域名解析为IP地址)和反向域名解析(将IP地址解析为域名)两部分、分别监听在tcp/udp的53号端口上,TCP用来进行区域传送、UDP用来解析请求
2. 域名分类
根域 .
TLD(top level domain顶级域):
组织域:.com、.net、.org、.gov、.mil
国家域:.iq、.tw、.hk、.jp、.cn
二级域:就是在顶级域上个人或组织申请的名称
3.DNS查询过程
递归查询:
客户端向自己所指定的DNS服务器请求的过程,是递归的,也就是说客户端向服务器请求时,服务器返回的必须是一个明确的结果,要么找到,要么找不到
迭代查询:
是指当客户端请求到达直接指定的DNS服务器后,如果该服务器上没有缓存相关的条目,则需要向根域请求,根域返回给DNS服务器一个顶级域的地址,然后DNS服务器又根据返回的顶级域地址去找,顶级域又返回一个二级域的地址,而后,DNS服务器又向二级域去请求,追踪返回出一个明确的解析结果给DNS服务器,这个DNS一级一级去查找的过程就是迭代查询
4.DNS名称解析方式
正向解析:
名称 –> IP
正向解析时,给的地址是,如:www.magedu.com.
反向解析:
IP –> 名称
反向解析时,给的地址是,如:4.3.2.1.in-addr.arpa.
解析的实际地址是1.2.3.4
注意:正向解析和反向解析的名称空间,不是同一个空间,也就是不是同一颗树形结构;因此也不是同一个解析库
5.DNS服务器类型
主DNS服务器:
维护所负责解析的域内解析库服务器,解析库由管理维护
辅助DNS服务器:
从主DNS服务器或其它的从DNS服务器那里“复制”(区域传递)一份解析库;
缓存DNS服务器:
可以提高DNS访问速度,对局域网上网实现快速解析
转发器:
全部转发: 凡是对非本机所有负责解析的区域的请求,统统转发给指定的服务器;
区域转发:仅转发对特定的区域的请求至某服务器;
注意:被转发的服务器需要能够为请求者做递归,否则,转发请求不予进行;
6.DNS解析的答案类型:
肯定答案:
有解析出来的结果
否定答案:
不存在查询的键,因此,不存在与其查询的键对应的值
注意:对于肯定答案和否定答案都可以进行缓存,也都可以指定缓存时长
权威答案:
由直接负责的DNS服务器给出的答案,也就是给出的结果是自己负责解析域时,给出的答案
非权威答案:
给出的答案是缓存中的缓存下来的条目,此时因为缓存还在有效期,而后端真实的结果可能已经改变,但是由于有缓存,则依然用缓存响应请求,此时返回的就是非权威答案
7.完整的请求过程
1)客户端一旦希望以主机名与对方主机通信,此时就需要名称解析,其会先查本地的hosts文件
2)如果host文件中没有对应的名称和地址的对应关系,则客户端会查DNS服务的本地缓存
3)如果本地DNS服务的缓存没有命中,则客户端会向客户端所指向的DNS服务器发送查询请求,此时的请求是递归请求(recursion请求)
4)DNS服务器收到请求后,如果客户端请求的就是自己负责的域,则直接查询数据库,并返回答案
,如果客户端请求的不是自己负责解析的域,则先找服务器自己的缓存,如果缓存没命中,则基于迭代的方式先找根域,然后再找顶级域,然后找二级域,一步一步完成查询请求,并最终返回答案给客户端
8.区域传送
全量传送:
axfr,传送整个数据库;一般在从服务器第一次向主服务器同步数据时
增量传送:
lxfr,进传送变化的数据
9.区域资源类型
资源记录:Resource Record, RR
记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX
SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,而必须为解析库的第一条记录;
A:internet Address,作用,FQDN --> IP
AAAA: FQDN --> IPv6
PTR: PoinTeR,IP --> FQDN ,完全合格域名
NS: Name Server,专用于标明当前区域的DNS服务器
CNAME:Canonical Name,别名记录
MX: Mail eXchanger,邮件交换器
10.资源记录定义的格式:
语法:name [TTL] IN rr_type value
(1) TTL可从全局继承;
(2) @可用于引用当前区域的名字;
(3) 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应;
(4) 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机而已;
SOA:
name: 当前区域的名字,例如“magedu.com.”;
value: 有多部分组成
(1) 当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字;
(2) 录前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换,例如linuxedu.magedu.com;
(3) (主从服务协调属性的定义以及否定的答案的统一的TTL)
序列号:serial
也就是解析数据库的版本号,一旦主服务器的数据库内容发生改变时,其版本号递增。从服务器会每隔一段时间,就向主服务器请求其版本号,如果发现版本号与其不匹配,则执行同步
刷新时间间隔:refresh
从服务器每隔多久到主服务器或其他从服务器上检查序列号,用于判断更新的状况
重试时间间隔:retry
当从服务器尝试与主服务器进行通信,获取其序列号时,发现无法联系上主服务器,则进行重试,两次重试之间的时间间隔
注意:重试时间间隔应该小于刷新时间间隔,而且要远小于刷新时间间隔
过期时长:expire
从服务器始终联系不上主服务器时,多久之后,放弃从主服务器同步数据;从服务器也就停止提供服务
否定答案的缓存时长:TTL
当结果是明确的无法解析到时,此类否定答案缓存多长时间
待补充
DNS详解