首页 > 代码库 > 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基础概念

  1. 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详解