首页 > 代码库 > DNS(名称解析服务)

DNS(名称解析服务)

DNS and Bind

=========================================================================

概述:

   DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。




相关知识

Sockets:在互联网上基于套接字协议的通信一般都遵循C/S法则;

       Client:客户端,发起应用请求的程序;

       Server:响应请求(提供服务)的程序;

            LISTEN:Socket(ip:port)

★传输层协议:TCP,UDP,SCTP

       TCP:面向连接的协议,双方通信之前需要建立虚连接;

       UDP:无连接的协议,双方无需通信之前事先建立虚连接;

DNS服务

1)介绍

DNS:Domain Name Service 应用层协议

     C/S, 53/udp, 53/tcp(DNS服务在启动的时候会同时开启tcp和udp的53号端口)

DNS作用:

     将主机名解析成IP地址的过程;

     解决了从域名(FQDN)到主机识别的IP地址之间的转换.

本地名称配置解析文件:

  /etc/hosts

技术分享

   缺点:只能作用于本主机,而不能同步更新所有的主机使用,并且当hosts文件很庞大是很难管理,因此就必须有一个统一的组织去记录管理域名和ip的对应关系。

DNS结构

  • DNS是一个分布式、分层次的主机名管理架构,通过配置DNS服务器地址,主机不需要知道对应的ip地址就能通过主机名的形式访问互联网;

  • DNS利用类似倒状树的目录结构将主机名的管理分配在不同层级的DNS服务器当中,经过分层管理,每一级DNS服务器负责部分域名信息,这也就减轻了DNS服务器的负载,同时也方便记录的更新同步。

FQDN(Full Qualified Domain Name):完整主机名

  • 完整主机名由主机名和域名构成。比如,www.taobao.com当中,www就是web网站服务器的主机名,taobao.com就是域名;

  • 主机名和域名之间用实心的点号来表示;


2)DNS域名

  • 根域

  • 一级域名:Top Level Domain: tld(顶级域

         组织域:com, edu, mil, gov, net, org, int,

         国家域:.cn, .ca, .hk, .tw...

         反向域:

  • 二级域名:如,.magedu.com、taobao.com

  • 三级域名:如,.dns.magedu.com

  • 每一级只负责对应下级的域的管理,其中根节点是有分布在世界各地的13台服务器组成,其中10台位于美国,另外3台设置于英国、瑞典和日本。

  • ICANN(The Internet Corporation for Assigned Names and Numbers)互联网名称与数字地址分配机构,负责在全球范围内对互联网通用顶级域名(gTLD)以及国家和地区顶级域名(ccTLD)系统的管理、以及根服务器系统的管理。

  ◆如图所示域名层级结构图:

技术分享

  按其功能命名空间中用来描述 DNS 域名称的五个类别的介绍详见下表中,以及与每个名称类型的示例:

     技术分享



2)DNS解析

解析流程
    1、在浏览器中输入www.qq.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。
    2、如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。
    3、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/ip参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。
    4、如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。
    5、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www.qq.com主机。
    6、如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。
   从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是的交互查询就是迭代查询。

解析流程图如下:

技术分享


3)DNS类型,解析方式

DNS查询类型

   递归查询:客户机和服务器之间的查询

   迭代查询:DNS服务器与DNS服务器之间的查询

DNS名称解析方式:

   名称--->IP : 正向解析

   IP --->名称:反向解析 

  注意:正反向解析是两个不同的名称空间,是两棵不同的解析树


通常我们申请注册的域名是顶级域下的一个二级域(.com),申请成功之后,我们要想在这个域名中添加相应的主机来完成解析服务,还需要相应的DNS服务器,这样才能够完成域名解析服务。

DNS服务器的类型

    ·负责解析至少一个域:

         主DNS服务器:

         辅助DNS服务器:

    ·不负责域解析:

         缓存DNS服务器:转发器

一次完整地解析请求经历的过程

  Client-->hosts文件-->Dns Local Cache-->DNS Server(recursion递归)-->

       自己负责解析的域:直接查询数据库并返回答案;

       不是自己负责的解析域:Server Cache-->iteration(迭代)--> 根--> 顶级域

DNS-->二级域名DNS…

解析答案

    ·肯定答案:

    ·否定答案:请求的条目不存在等原因导致无法返回结果

    ·权威答案:由直接负责的DNS服务器返回的答案;

    ·非权威答案:

主-从DNS服务器:

   ·主DNS服务器:维护所负责解析的域数据库的那台服务器;读写操作均可进行;

   ·从DNS服务器:从主DNS服务器那里或其他的从DNS服务器那里“复制”解析库;但只能进行读操作;

        复制操作的实施方式:

             序列号:解析库版本号,主服务器解析库变化时,其序列号递增;

             刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔;

             重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔;

             过期时长:从服务器联系不到主服务器时,多久后停止服务;

       “通知”机制:主服务器解析库发生变化时,会主动通知从服务器

   ·区域传送

         全量传送:axfr,传递整个解析库;

         增量传送:ixfr,传递解析库变化的数据;

区域(zone)和域(domain)

     magedu.com域:

          FQDN-->IP:正向解析库;正向区域

          IP --->FQDN:反向解析库,反向区域

    注意:

      一般来说一个域由正向区域和反向区域组成,但并不是域就一定大于区域,如:父域的区域可能会比子域要大;

     区域是物理概念,而域是逻辑概念。


DNS是一个网络服务,因此就有对应的网络服务,因此就有对应的端口,其端口是53号,通常DNS在查询的时候是以udp这个快速的数据传输协议来查询的,但是一旦没有办法查询到完整的信息时就会再次以TCP协议来进行重新查询,因此DNS服务在启动的时候会同时开启tcp的53号端口和udp的53号端口

     


区域数据库文件

1)资源记录(Resource Record)简称rr

区域解析库:由众多RR组成

   记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX


  • SOA:(Start Of Authority)起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须为解析库的第一条记录;

  • A:(internet Address)作用,FQDN --> IPv4;

  • AAAA: FQDN --> IPv6;

  • PTR: PoinTeR,IP --> FQDN;反解到的主机名;

  • NS: (Name Server)专用于标明当前区域的DNS服务器,一个区域解析库可以有多个NS记录;

  • CNAME:(Canonical Name)别名记录,一个主机可以有多个别名,但IP地址是一样的;

  • MX:Mail eXchanger,邮件交换器,有优先级,0-99,数字越小优先级越高;


 资源记录的定义格式:    

       语法:name  [TTL]  IN  rr_type  value

   注意:

      (1)TTL就是time to live,表示该记录被其他dns服务器保留到对方服务器上的缓存当中,并保持多少秒,可从全局继承;

      (2)@可用于引用当前区域的名字;

      (3)相邻的两条记录其name相同时,后面的可以省略;

      (3) 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应;

      (4) 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机而已;

=====================================================================================

每一种资源类型的定义方式如下:

SOA记录 

      name: 当前区域的名字,例如“magedu.com.”

      value: 有多部分组成

          (1) 当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字;

          (2) 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换,例如linuxedu.magedu.com

          (3) 主从服务协调属性的定义以及否定的答案的统一的TTL

   例如:

       magedu.com. 86400 IN SOA   ns.magedu.com. nsadmin.magedu.com. (

                  2015042201 ;序列号serial

                  2H           ;刷新时间refresh

                  10M          ;重试时间retry

                  1W           ;过期时间expire

                  1D           ;否定答案的TTL值

       )


NS记录

     name: 当前区域的名字

     value: 当前区域的某DNS服务器的名字,例如 ns.magedu.com.

     注意:一个区域可以有多个NS记录;

  例如:

         magedu.com. IN NS ns1.magedu.com.

         magedu.com. IN NS ns2.magedu.com.

  注意:

     (1) 相邻的两个资源记录的name相同时,后续的可省略

     (2) 对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录


MX记录

     name: 当前区域的名字

     value: 当前区域的某邮件服务器(smtp服务器)的主机名

   注意:

      一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级;数字越小优先级越高

  例如:

         magedu.com.  IN  MX  10  mx1.magedu.com.

         magedu.com.  IN  MX  20 mx2.magedu.com.

   注意:

    (1) 对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录


A记录

       name: 某主机的FQDN,例如www.magedu.com.

       value: 主机名对应主机的IPv4地址

   例如:

         www.magedu.com.  IN  A   1.1.1.1

         www.magedu.com.  IN  A   2.2.2.2

         mx1.magedu.com.  IN  A   3.3.3.3

         mx2.magedu.com.  IN  A   3.3.3.3

   注意:

        *.magedu.com.  IN  A  5.5.5.5

          magedu.com.  IN  A  5.5.5.5

   避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址。


AAAA记录

       name: FQDN

        value: IPv6


PTR记录

        name: IP

             有特定格式,把IP地址反过来写  如:1.2.3.4,要写作4.3.2.1;

             有特定后缀:in-addr.arpa.

                  如:完整写法为:4.3.2.1.in-addra.arpa.

        value: FQDN

    例如:

          4.3.2.1.in-addr.arpa. IN  PTR  www.magedu.com

          简写成:如1.2.3为网络地址,可省

                                  4 IN  PTR  www.magedu.com.

    注意:网络地址及后缀可省略;主机地址依然需要反着写


CNAME记录

        name: 别名的FQDN

        value: 真正名字的FQDN;

  例如:

        www.magedu.com. IN  CNAME  websrv.magedu.com.


































































DNS(名称解析服务)