DNS总结

1.DNS的概念及作用

DNSDomain Name Service领域名称服务)DNS通过UDP53号端口提供服务,同时也监听TCP53号端口,换句话说DNS不仅工作在UDP协议上而且还工作在TCP协议上。

DNS的作用:DNS主要作用是实现名称解析,这里说的名称解析说的是主机名称、域名和IP地址之间的相互转换。就是解决网络服务器的域名与IP地址之间的(相互)转换问题,即:FQDN<-->IP的相互转换

  完成域名IPIP域名的翻译(解析)的软件称为DNS服务系统

  负责域名解析的计算机称为域名服务器DNS

  实现域名与IP地址转换的过程称为域名解析

那什么是解析?

通俗的讲,我们说的解析就是转换,转换成一个我们容易理解、易记的名称代号而已

2.DNS框架结构:

DNS的结构和我们的linux目录结构是一致的,均是树状结构。DNS从上到下依次分为:根、顶级域、二级域。根是所有的起始点。

顶级域:是能够向外分配并使用的域名,顶级域可以划分成二级域,能够为个人和组织使用,所以二级域是我们才能申请使用的域;而顶级域是由ICANN组织来决定是否开辟顶级域的。

顶级域分为:组织类、国家类、反向类  这三类称为TLD(Top level Domain)

组织类的顶级域:com, net, org, mil, edu, gov

国家类的顶级域:比如:cn, jp, us, uk, iq....

反向解析顶级域:反向解析的层次结构使用起来非常困难,他也是使用指针类数据库完成的。在DNS刚刚产生的时候,只能实现正向解析,而无法实现反向解析。当在后来引入了线索追踪方式(数据库的追踪方式),才实现了反向解析,因此可以理解说成正向解析和反向解析彼此之间完全没有关系,是两个不同的层次结构,只不过我们可以组织在同一台服务器上完成而已。

现在反过来说DNS的结构和Linux目录的区别,目录的名称是自上而下的,eg:/etc/issue 。 而我们的DNS名称追踪方式是自下而上的,最下层的是主机,可以称为叶子节点(不能再向下分叉的),那么能分叉的可以理解称为域(可以理解成为范围),不能分叉的叶子节点可以称为主机。

那么主机名称是怎么来的呢?比如:www.google.com. 需要注意的是在DNS服务器的配置中,www.google.com.中最后的"."是万万不可省略的,这就是名称,自底向上进行追溯。所以当想查www.google.com.这个主机名时,DNS是怎么解析的呢?我们可以这样理解,每个域只解析和他直接相关的下级机构(这个务必需要谨记的),即根只解析顶级域,顶级域只解析二级域...一直层层解析,直到找到叶子节点的主机名。

解析类型:

    正向解析:FQDN-->IP

注释:FQDN的定义:FQDN就是完整意义上的主机名称。eg:www.google.com.

    反向解析:IP-->FQDN

查询类型:

    所谓查询就是我们的客户端需要解析名称的时候发起的一个解析请求,那么查询完成的方式有两类:迭代查询和递归查询

迭代查询:

   eg:如果我们的一个客户端client要向A服务器查询www.google.comIP地址,但是A告知说不知道,但是B知道,那么client就先去询问AA把知道的信息告诉clientclient再去询问B,依次下去,直到最后查询到www.google.comIP地址。这种方式就叫做迭代查询。

递归查询:

   eg:同上面的例子,当clientAwww.google.comIP地址时,A告知说不知道,但是可以帮助去找,A去找BB再去找C,直到找到结果,然后C把结果反馈给BB把结果再反馈给AA最后把结果给client。这就是递归查询。

 

引入缓存概念:

如果我们每一次要这样查询的话,每次现场解析就需要大量的时间,所以为了加速这个过程,既可以加速客户端的请求,又能降低服务器的负担,因此在DNS当中就引入了缓存的概念。他把每次查询的结构都缓存起来,如果下一次查询相同的东西时,就可以大大缩短查询时间,但是查询的内容是有变化的,换句话说,第一次查www.google.comIP地址为a,然后缓存起来,等第二次再查询www.google.comIP地址时,人家早就把IP地址换成了b,那么我们缓存的内容就无效了,因此我们在这里引入了缓存有效期的概念。这个缓存的有效期是由具体负责的服务器来决定的,所以在服务器定义每一个条目的时候,定义了一个TTL(缓存时长),用于指定查询者可以缓存多长时间。

3.区域类型

服务器的角色:

     在实际生产生活中,为了一个域的安全可靠性,我们为一个域提供两台以上的服务器,这两台服务器就有了主从的角色。

      主服务器:负责解析的服务器,称为master

      辅助服务器: slave

那么当Client向服务器发送请求时,两台服务器会同时响应请求,实现负载均衡。

主从服务器在任何时候都是必须完全相同的,比如说两台服务器的系统时间。

关于主从服务器的概念:如果当主服务器的数据发生改变时,数据会同步到从服务器上面去

区域类型的划分

区域类型分为三类:主区域、从区域、转发区域和根区域

   完全区域传送:eg:当我们的主服务器运行了一段时间,里面已经存储了1000个条目的时候,加入了从服务器,那么就需要完整全部的从主区域同步过来。这就是完全区域传送,称为:axfr

   增量区域传送:eg:当主从服务器数据实现同步后,主服务器的条目增加了一条,变成1001后,为了减少带宽,增加更新速度,那么只同步变化的条目即可,这就是增量区域传送,称为:ixfr

   转发区域:client通过子区域查询时,子区域上没有任何对应的数据库,那么子区域就直接转发到父域上面,这种区域类型就叫做转发区域。

   根区域:任何一个DNS服务器解析不了时,都要转发到根区域上去,所以简洁的说,根区域就是告诉我们根服务器的位置。

 区域传送是以从的为主。从服务器是请求数据;主服务器主要是通知机制,如果有数据更新的话,会通知从服务器来获取数据

4.引入DNS区域概念

  任何一个DNS服务器均可以提供正向解析、反向解析,或许两者都提供。

  正向解析:提供正向解析的叫做正向库

  反向解析:提供反向解析的叫做反向库

虽然正向库和反向库是不同的概念,但是对应于逻辑条件来讲,两者可以在同一个域中,然而对应于物理文件来讲,正向数据文件叫做正向区域,反向数据文件叫做反向区域。(区域是以文件来划分的,而域是按照逻辑概念来划分的,这就是域和区域的区别,千万不要混淆)

  域:我们用domain来表示

  区域:我们用zone来表示

引入子域的概念:

     子域:我们一般都叫做子域授权,或者委派。

区域类型是从物理文件角色来看待的,那么从服务器的角色来:

   DNS服务器:提供主区域数据文件的服务器

   DNS服务器:提供从区域数据文件的服务器

那么既不提供主区域数据文件又不提供从区域数据文件的服务器可以分为两类,

    缓存DNS服务器:只提供缓存数据文件的服务器,他不负责任何解析,纯碎将用户的请求发出去并缓存在本地

   转发器:内部客户端无法或者不方便访问互联网的时候,将用户的请求通过前端网关,为了方便防火墙规则定义,而特意设立的一个服务器

 

那我们现在回过头来再说一下子域的授权,委派,当我们完成授权以后,父域是知道子域在什么地方的,但是子域是不知道父域的位置,如果想要知道的话,只能通过根域来查找,除非你要明确的配置才可以。

 

5.剖析DNS数据库文件的格式:

   数据库文件就是为了完成命令解析,所以数据库文件中只能包含两类内容:宏定义和数据库条目(解析条目)

数据库条目中,每一条记录叫做资源记录(Resource Record,RR)

资源记录的本身是有一定格式的:

name      [ttl]      CLASS(IN)     RTYPE          RDATA

名称      ttl     类别       资源记录类型  资源记录数据

                                         

注释:ttl:客户端获得结果后可以缓存的时长

CLASS类别,用于指定对应工作条目的工作范围,这个CLASS都是ININ:Internet addr 互联网地址

 RTYPE:资源类型,满足多种不同需求的功能

最常用的功能:

A:FQDN-->IP  从主机名称(FQDN)IP地址转换的我们叫做A类型记录 Aaddress  这是IPv4专用的

AAAA: FQDN-->IP(v6)

PTR:IP-->FQDN IP地址到FQDN   PTRpoint 指针

NS:用于指定当前区域DNS服务器是谁的  格式:DOMAIN_NAME     TTL IN     NS  FQDN

CNAME:正式名称,可以理解为别名

MX:Mail exchanger 邮件交换器,就是说你的区域内有一个邮件服务器,如果区域内有多台邮件服务器,那么就需要有优先级(0-99),数字越小,级别越高,格式: MX 10

SOA:Start Of Authority,起始授权记录,就是定义一个区域的权威服务器是谁的,谁来负责这个区域的名称解析,以及主从服务器是如何进行同步的。所以对于任何区域文件来讲,SOA必须定义在第一条。

 SOARDATA的定义:

 

FQDN(指定主NSFQDN) contact(mailbox,一个邮箱联系人,不能使用@,.代替

                     serial number 版本号,序列号

                     refresh time   刷新时间

                     retry time    重试时间

                     expire time    过期时长

                     nagetive anawer ttl  否定回答的ttl 

 

RDATA资源记录数据

       A: IP

       AAAA: IP

       PTR:FQDN

       NS:只能是主机名,即FQDN

       CNAME:FQDN

       MX:FQDN

      

name:

       A:FQDN

       AAAA:FQDN

       PTR:IP

       NS:zone name

       MX:zone name(不出现在反向区域中)

       CNAME:FQDN

      

需要注意的事项:

在一个区域文件中定义一个资源记录:

   任何FQDN必须以"."结尾;

   记录不能换行,每一条记录必须在同一行中

   第一条记录只能是SOASOA可以换行)

宏:就是变量,我们常用的两个宏:$TTL   $ORIGIN

$TTL  86400  定义了一天

$ORIGIN   insprion.com.   定义了我们这个区域的名称附加后缀是什么