01--DNS服务器1

DNS介绍

  Domian Name Service

  这是一种协议规范,属于C/S架构,在C/S架构下我们需要套接字的方式来访问这个服务,所以,服务器端必须要拥有一个服务器端口;

  所以,DNS服务使用的端口为 53/tcp 和 53/udp;其中 53/tcp 端口在主从服务器进行解析库同步的时候使用,53/udp 端口在做USL解释的时候使用;

现有DNS架构介绍

  现在又DNS架构由美国 IANA 组织来进行维护,IANA 组织同时也维护IP地址;

  本地域名--hosts文件

    在网络发展之初,我们的网站地址与 域名 之间的对应关系都存放在本地;这时候的网站主机并不多,这时候,添加一台主机,我们只需要将该主机和域名对应关系添加到本地hosts文件即可;

    windows的hosts文件:

      C:WindowsSystem32driversetchosts

1.2.3.4    www.test.com

      添加这个对应关系在最后后面即可

    linux的hosts文件:

      /etc/hosts

      同windows配置

    这样windows和linux就可以实现本地解析了;

  现有dns架构构成过程

    但是,随着互联网中网站服务器的添加,本地hosts添加的数量越来越多,这时候本地再来维护这个庞大的解析库关系,就变得很困难,并且查找起来也异常困难;

    此时,IANA机构提供了一台性能强大的公网服务器,来维护这个数据库,这时候,主机要做域名解析就可以直接找到这台服务器,从它上面获取解析结果;

    但是,数量依然在不停的增加,查找这些解析库成为了一个比较困难的问题;这时候我们IANA机构就引入了分布式的想法,将解析任务交给了它的下级服务器,而这些服务器就是我们的顶级域名服务器;这些服务器每一台服务器负责一个域名区域;

    而客户解析,因为查找麻烦的原因,也不自己来查找域名,而是将这个工作交给了固定的DNS服务器,而自己直接找DNS服务器那去解析结果;

    这种架构,就是我们现有的解析架构了;

  dns树形结构介绍

    根据刚才的描述,我们有了各自的顶级域名服务器

      顶级域名(top level domain-tld)在最初的时候只有7个,包括:

        .com  .edu  .mil  .gov  .net   .org  .int

      而随着时间的推移,IANA开放了所有顶级域名服务器;一般情况下,顶级域名服务器在现有的互联网环境下可以更具三点来划分,包括组织域、国家域、反向域;

    在根域名下就是我们的顶级域名服务器;此时,引入了一个概念--域domian;

    每一个域名管理一个区域内部的服务器;

     所有的域名都是在根下(.),之后则是顶级域名,由根域名服务器进行管理,之后则是一级域名服务器,由顶级域名服务器进行管理;

    公司内部的DNS服务器,则向上级域名服务器进行注册,则此域名服务器,就能解析所有在该区域内的主机(例如.agongsi下的ns1 ns2 www三个主机)

DNS解析过程

  我们在了解域名结构后,之后我们就需要知道在互联网上如何进行域名解析;

  域名查找方式

    默认情况下我们更具区域来进行域名解析;PC在请求域名的时候会直接找到自己的DNS服务器,再由该DNS服务区代理PC去进行这个地址的解析;

    首先就会来到根域名服务器,来进行查找,根域名服务器则会告诉DNS服务器该域名所在的顶级域名区域,例如 .com;

    收到该回复后,DNS服务器则会再去询问顶级域名服务器。这时候,.com 就会回复它的下级域名服务器,例如 .agongsi 的域名给DNS服务器;

    这时候,DNS就去询问 .agongsi 这个区域的负责人,也就是 ns 服务器,这时候就能回复得到对应的IP地址;

    最后,将这个IP地址放回给PC;

    递归查找:

      其中,PC只需要指定dns服务器,向该dns服务器发起解析请求,就能得到解析结果,这个过程我们叫做递归查找;

    迭代查找

      其中,DNS服务器依次去查找了根域名服务器、顶级域名服务器、公司域名服务器;最后才能得到正确的解析结果,这个过程我们叫做迭代查找;

      可知,迭代查找是非常消耗资源的;

    【注意:除了查找DNS外,都有的过程中都会进行DNS解析名称的缓存,这个我们之后再说】

  使用互联网DNS解析域名

    此时,我们要注意一个问题,再上图中,PC所连接的DNS也是公司内部的DNS服务器,也就是说,这台DNS服务器除了为PC做解析以外,同时也可以承当为互联网上其他PC解析本地服务器的责任;

    同理,为了方便我们上网,我们内部并不需要去搭建DNS服务器,可以直接指定互联网上的DNS服务器,让运营商的DNS服务器来为我们进行解析也可以;

    【注意,这里只有一个问题,就是权限问题,我们不可能让每个人公司都去提供一个类似于8.8.8.8的DNS服务器,用来给别人进行解析,所以,我们就需要对DNS做权限管理,这个问题我们之后再说明】

  解析类型

    常见的解析类型由两种,这个在两个不同的区域来实现解析的;所以,在配置的时候,我们使用两个zone来配置;

    正向解析

      Name -->  IP 将域名解析为IP地址

    反向解析

      IP --> Name 将IP解析为 name ;这个技术是以线索提示的方式来实现,这是一种较为复杂的问题,在互联网上大多数的域名都无法行进行反向解析;但是,方向解析是很重要的,例如:它可以用来验证对方有些服务器是否为来及邮件服务器;

DNS服务器的类型

  根据DNS服务器的解析过程,我们由多种DNS服务器,主要包括主备dns服务器,缓存服务器,以及DNS转发器;

  主DNS服务器/(从)辅助DNS服务器

首先,主DNS的解析库是由管理员直接手动维护;
  辅助DNS服务器:从主DNS服务器或其他的从DNS服务器那里“复制”(区域传递)一份解析库;
辅助DNS服务器的解析库的来源则是从主服务器同步而来的,从而避免了人为的失误所导致的解析库不一致的问题;复制过程过要考虑主DNS服务器不断变化的问题;我们通过序列号来确定;
序列号:解析库的版本号;前提:主服务器解析库内容发生变化,其序列号递增;
同步过程又分为两种,区域传递:
1、全量传送:传递整个解析库
2、增量传送:传递解析库变化的那个部分内容;
同步时间间隔--刷新时间:从服务器从主服务器请求同步解析库的时间间隔;
重试时长:从服务器从主服务器请求同步解析库失败时,再次尝试时间间隔;
过期时长:从服务器始终联系不到主服务器时,过多久后就放弃从服务器角度,停止提供服务;
通知机制:主服务器要求辅助服务器主动向服务器及逆行解析库同步
【注意:主从服务器是同时工作的,都会接受请求,所以是可以基于主从服务器进行负载分担的;】

  缓存DNS服务器

为了提高解析速度,我通过本地缓存的方式来实现本地解析;
同时,缓存的域名解析条目会被服务器拿来,随时比对其原本的域名服务器上的域名条目,这就是通过比较hash值的方式,保证缓存的域名条目的正确性;
通过公共缓存的方式来实现上述解析方式;
本地DNS服务器实现本地域名缓存;
PC1访问网站的缓存,保持在本地缓存;
这样就更加提高了服务器的解析速度。

  转发器

    本地DNS服务器直接指定互联网dns服务器,帮助进行DNS条目的解析;

    由图可知,转换器上需要指定公网DNS,这时候所有的DNS请求都会由公网DNS为我们解析;

原文地址:https://www.cnblogs.com/BurnovBlog/p/10947022.html