码迷,mamicode.com
首页 > 其他好文 > 详细

DNS基本工作原理,及正反解析,主从同步,子域授权和视图

时间:2015-09-26 18:48:15      阅读:650      评论:0      收藏:0      [点我收藏+]

标签:域名空间   英文缩写   网络通讯   浏览器   工作原理   

   网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址的,所以计算机在网络上进行通讯时只能识别IP地址,而不能认识域名。我们无法记住多个IP地址的网站,所以我们访问网站时,更多的是在浏览器地址栏中输入域名,就能看到所需要的页面,这是因为有一个叫“DNS服务器”的计算机自动把我们的域名“翻译”成了相应的IP地址,然后调出IP地址所对应的网页。  

   什么是DNS?

 DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工作。DNS就是这样的一位“翻译官”。

    DNS域名称

 域名系统作为一个层次结构和分布式数据库,包含各种类型的数据,包括主机名和域名。DNS数据库中的名称形成了一个分层树状结构称为域名空间。域名包含单个标签分割点,例如:www.baidu.com.

完全限定的域名(FQDN)唯一地标识在DNS分层树中的主机的位置,通过指定的路径中点分隔从根引用的主机的名称列表。下面显示主机称为www内mageedu.com DNS树的示例。主机的FQDN是www.magedu.com.

DNS域的名称层次结构技术分享

 DNS域名称空间的组织方式:

  按其功能命名空间中用来描述DNS域名称的五个类别的介绍如下:

技术分享

  DNS和Internet 域   

互联网域名系统由名称注册机构负责维护分配由组织和国家/地区的顶级域在 Internet 上进行管理。 这些域名按照国际标准 3166。 一些很多现有缩写,保留以供组织中,以及两个字母和三个字母的国家/地区使用的缩写使用下表所示。一些常见的DNS域名称有:

com:商业公司 edu:教育机构 net:网络公司 gov:非军事政府机构 Mil:军事政府机构 xx:国家/地区代码(cn代表中国)

   资源记录

DNS数据库中包含的资源记录RR,每个RR标识数据库中的特定资源。我们在建立DNS服务器时,经常会用到SOA,NS,A之类的记录,在维护DNS服务器是,会用到MX,CNAME记录。常见的RR如下所示

技术分享

   Dns服务的工作过程
当 DNS 客户机需要查询程序中使用的名称时,它会查询本地DNS 服务器来解析该名称。客户机发送的每条查询消息都包括3条信息,以指定服务器应回答的问题。
● 指定的 DNS 域名,表示为完全合格的域名 (FQDN) 。
● 指定的查询类型,它可根据类型指定资源记录,或作为查询操作的专门类型。
● DNS域名的指定类别。
    对于DNS 服务器,它始终应指定为 Internet 类别。例如,指定的名称可以是计算机的完全合格的域名,如im.qq.com,并且指定的查询类型用于通过该名称搜索地址资源记录。
    DNS 查询以各种不同的方式进行解析。客户机有时也可通过使用从以前查询获得的缓存信息就地应答查询。DNS 服务器可使用其自身的资源记录信息缓存来应答查询,也可代表请求客户机来查询或联系其他 DNS 服务器,以完全解析该名称,并随后将应答返回至客户机。这个过程称为递归。
    另外,客户机自己也可尝试联系其他的 DNS 服务器来解析名称。如果客户机这么做,它会使用基于服务器应答的独立和附加的查询,该过程称作迭代,即DNS服务器之间的交互查询就是迭代查询。
DNS 查询的过程如下图所示。技术分享

1、在浏览器中输入www.magedu.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服务器地址(magedu.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找magedu.com域服务器,重复上面的动作,进行查询,直至找到www.magedu.com主机。 

6、如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。 

    从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是的交互查询就是迭代查询。

DNS服务器的类型


   主DNS服务器:维护所负责解析的域内的解析库的服务器,解析库由管理员维护;
   辅助DNS服务器:从主DNS服务器或者其他的从DNS服务器那里“复制”(区域传递)一分解析库
   缓存名称服务器
   转发器

   主DNS服务器

   从DNS服务器

      序列号:解析库的版本号:前提:主服务器解析库内容发生变化,其序列递增:

区域传送:
   辅助DNS服务器从主DNS服务器或其他的辅助DNS服务器请求数据传输过程

   完全区域传送:传送区域的所有数据,AXFR
   增量区域传送:传送区域中改变的数据部分,IXFR

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

   重试时间:从服务器从主服务器请求同步解析库失败时,再次尝试的时间间隔

   过期时长:从服务器始终联系不到主服务器时候,多久放弃从服务器角色,停止服务。

DNS的数据库文件(区域数据文件,区域自身有名字):文本文件,只能包含资源记录或宏定义,每行一个

   资源记录的格式:
      name [ttl(缓存时间)] IN 资源记录类型(RRtype)  Value

注意:(1)TTL可从全局继承

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

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

   (4)同一个值可以有多个不同的定义名字:通过多个不同的名字指向同一个值定义:
    例子:
        www          600 IN A 1.2.3.4
       www.magedu.com.  600 IN A 1.2.3.4

    SOA:
        name:只能是区域名称,通常可以简写为@,例如:magedu.com.
        value:有n个数值,最主要的是主DNS服务器的FQDN,点不可省略
        注意:SOA必须是区域数据库文件第一条记录
       value:有多部分组成

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

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

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

例如:

  magedu.com.   86400  IN SOA  ns.mageedu.com.   nsadmin.mageedu.com.(20150914002  ;序列号

                                         2H                 ;刷新时间

                                         10M                ;重试时间

                                         1w                 ;过期时间

                                         1D            ;否定答案的TTL值

                                       
        例子: 
         @ 600 IN SOA  na.magedu.com. 管理员邮箱(dnsadmin.magedu.com.)(
             序列号(serial number) ;注释内容,十进制数据,不能超过10位,通常使用日期,例如2014031001
             刷新时间(refresh time) ;即每隔多久到主服务器检查一次
             重试时间(retry time) ;应该小于refresh time
             过期时间(expire time)
             netgative answer ttl ;否定答案的ttl
         )


  NS:可以有多条
       name:区域名称,通常可以简写为@
       value:当前区域的某DNS服务器的名字,例如ns.magedu.com.:

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

    例如:

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

                          IN    NS       ns2.magedu.com.

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

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

     
 A:只能定义在正向区域数据文件中
       name:某主机的FQDN,例如:www.magedu.com

       value:IP

例如;

       www.magedu.com.   IN    A    1.1.1.1

                     IN    A     1.1.1.2

        mx1.magedu.com.   IN    A     1.1.1.3

        mx2.magedu.com.   IN    A     1.1.1.3
注意:

        *.magedu.com.           IN   A      1.1.1.4

          magedu.com.          IN   A      1.1.1.4

避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址:
       例子:
       www  600(单位s) IN A 1.2.3.4
       www  600(单位s) IN A 1.2.3.5
       可做轮询

       www  600(单位s) IN A 1.2.3.4
       ftp  600(单位s) IN A 1.2.3.4
    但凡以FQDN做为其值的记录,应该给这个值做一条A记录


    MX:可以有多个
       name:区域名称,用于标识smtp服务器
       value:当前区域的某邮件服务器(SMTP)的主机名:

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

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

                   IN   MX 20   mx2.magedu.com.

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

    CNAME:
          name :别名的FQDN
          value :正式的FQDN
       例子:
           web.magedu.com.    IN     CNAME    www.magedu.com.

    PTR:IP --> FQDN,只能定义在反向区域数据文件中,反向区域名称为逆向网络地址加.in-addr.arpa.后缀组成
     name:IP,逆向的主机地址,例如172.16.100.7的name为7.100,完全格式为7.100.16.172.in-addr-arpa.
     value:FQDN 
    例子:
           4.3.2.1.in-addr.arpa.  IN  PTR          www.magedu.com

           简写成:  4        IN  PTR          www.magedu.com.

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

  子域授权:每个域的名称服务器,都是通过其上级名称服务器在解析库进行授权:

类似根域授权tld:

            .com     IN     NS        ns1.com.

            .com     IN     NS        ns2.com.

            ns1.com.   IN   A   2.2.2.1

            ns2.com.   IN   A   2.2.2.2

magedu.com.在.com的名称服务器上,解析库中添加资源记录:

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

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

            magedu.com.   IN   NS    ns3.magedu.com.

         ns1.magedu.com.   IN  A    3.3.3.1

         ns2.magedu.com.   IN  A    3.3.3.2

         ns3.magedu.com.   IN  A    3.3.3.3

      bind:服务脚本:/etc/rc.d/init.d/named  
         主配置文件:定义区域 /etc/named.conf, /etc/named.rfc1912.zones,/etc/rndc.key

         解析库文件:/var/namedZONE_NAME.ZONE

     注意:(1)一台物理服务器可同时为多个区域提供解析;

         (2)必须要有根区域文件:named.ca

         (3)应该有两个(如果包括ipv6的,应该更多)实现localhost和本地回环地址的解析库:

rndc:remote name domain controller:远程名称控制器

默认于blind安装在同一主机,且只能通过127.0.0.1来连接named进程:提供辅助性的管理功能:  953/tcp
    

主配置文件:
   options{
        //全局选项
   }
   zone "zone name" {
      //定于区域
   }
   logging{
       //日志文件
   }
   include:加载别的文件


自定义
optins{
     directory "/var/named";
};
  zone "." IN{
   type{hint(根)|master(主)|slave(从)|forward(转发)}
   file "named.ca"

  }

  注意:任何服务程序如果期望其能够通过网络被其他主机访问,至少应该监听在一个能与外部主机通信的IP地址上

缓存名称服务器的配置:监听外部地址即可:

dnssec:关闭dnssec

主DNS名称服务器:

   (1)在主配置文件配置区域

   这个文件的配置在/etc/named.rfc1912.zones

  zone "." IN{
   type{hint(根)|master(主)|slave(从)|forward(转发)}
   file "你要配置的区域文件的名称,这个名称一般指向/var/named"
  }

   (2)然后在/var/named文件中定义区域解析文件

定义区域解析库文件

           出现的内容:

              宏定义;

              资源记录;

定义区域解析文件中会用到几个命令

  named-checkzone "magedu.com"  /var/named/magedu.com.zone 检查区域文件是否有错误

  named-checkconf:检查主配置文件

  service named restart:重启服务

  service named reload:重读服务

  rndc reload:重读服务

例子:$TTL 600

    $ORIGIN magedu.com.
@    IN     SOA  ns.magedu.com.  lirui.magedu.com. (
                        20150915       ; serial
                         1D          ; refresh
                         1H          ; retry
                         1W          ; expire
                         1D
                                        )
    IN     NS      ns1.magedu.com.
    IN     NS      ns2.magedu.com.
    IN     MX 10   mx1.magedu.com.
    IN     MX 20   mx2.magedu.com.
ns1.magedu.com.  IN  A   192.168.1.1
ns2.magedu.com.  IN  A   192.168.1.3
mx1.magedu.com.  IN  A   192.168.1.4
mx2.magedu.com.  IN  A   192.168.1.5
www.magedu.com.  IN  A   192.168.1.111
www.magedu.com.  IN  A   192.168.1.112
ftp.magedu.com.  IN  CNAME  www.magedu.com.

测试命令:dig的使用

dig [-t type] name  [@SERVER] [query options]

dig用于测试dns系统,因此,不会查询hosts文件进行解析;

查询选项:

+[no]trace:跟踪解析过程

+[no]recurse:进行递归解析

测试反向解析:

dig -x IP @SERVER

模拟区域传送:

 dig -t axfr ZONE_NAME @SERVER

  例如:dig -t axfr magedu.com @172.16.100.11

host命令

host [-t type] name [server]

例如:host -t  A www.magedu.com @192.168.1.111

nslookup命令:

nslookup [-option] [name | -]  [server]

交互式模式:

  nslookup>

        server IP:指明使用哪个DNS server进行查询;

        set  q=RR_TYPE 指明查询的资源记录类型;

        NAME:要查询的名称:

反向区域:

   区域名称:网络地址反写 .in-addr.arpa.

     172.16.100. --> 100.16.172.in-addr.arpa.

  (1)定义区域

zone “ZONE_NAME” IN {

  type {master| slave |forward}

  file "网络地址.zone"

};

(2)区域解析库文件

   注意:不需要MX和A,以及AAAA,以PTR为主

示例:$TTL 600

    $ORIGIN 1.168.192.in-addr.arpa.
@    IN     SOA  ns.magedu.com.  lirui.magedu.com. (
                        20150915       ; serial
                         1D          ; refresh
                         1H          ; retry
                         1W          ; expire
                         1D
                                         )
     IN      NS  ns1.magedu.com.
     IN      NS  ns2.magedu.com.
3  IN   PTR  mx1.magedu.com.
4  IN   PTR  mx2.magedu.com.
111 IN   PTR  www.magedu.com.
112 IN   PTR  www.magedu.com.


主从复制;

1.应该为一台独立的名称服务器;

2,主服务器的区域解析库文件中必须有一条NS记录是指向从服务器;

3.从服务器只需要定义区域,而无需提供解析库文件;解析库文件放置于/var/named/slaves/目录中;

4.主服务器的允许从服务器区域传送;

5.主从服务器时间应该同步,可通过ntp进行;

6.bind程序的版本应该保持一致;否则,应该从高,主低

定义从区域的方法:

    zone“ZONE_NAME" IN {

                     type  slave;

                    masters {master ip;}

                    file "slaves/ZONE_NAME.zone"‘

   };

rndc:

     rndc -->rndc (953/tcp)

rndc  COMMAND:

        reload:重新配置主文件和区域解析库文件

        reload zone:重载区域解析文件

        retransfer zone:手动启动区域传送过程,而不管序列号是否增加

        notify  zone:重新对区域传送发通知

        reconfig:重载主配置文件

        querylog:开启或关闭查询日志

        trace:递增debug级别

        trace LEVEL:指定使用的级别

        status:


子域授权:分布式数据库

正向解析区域子域的方法;

      定义一个子区域:

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

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

       ns1.ops.magedu.com.            IN  A  1.1.1.1

       ns2.ops.magedu.com.            IN  A  1.1.1.2


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

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

       ns1.fin.magedu.com.            IN  A  3.1.1.1

       ns2.fin.magedu.com.            IN  A  3.1.1.2

定义转发服务器:

    注意:被转发的服务器需要能够为请求者做递归,否则,转发请求不予进行;

 (1)全部转发:凡是对非本地所负责解析的区域的请求,统统转发给指定的服务器;

        options {

          forward{first  }

          forwarders

       }

 (2)区域转发:仅转发对特定的区域的请求只某服务器

zone ”ZONE_NAME" IN {

         type forward;

         foreard {only }

         forwards

}

注意:关闭dnssec功能;

          dnssec-enable  no;

          dnssec-validation no;


接下来我给大家演示一下,主从服务器的配置过程:

第一步先配置主服务器:

首先在主配置文件中及/etc/named.conf中做如下操作

技术分享


技术分享然后在主配置文件:定义区域/etc/named.rfc1912.zones

zone "magedu.com" IN {

        type master;

        file "magedu.com.zone";

};

接下来在/var/named中定义解析库文件

技术分享

这样主服务器就配置好了。


这样,我们就可以配置从服务器了,从服务器的配置在192.168.1.108这台主机中配置

监听端口的设置和主服务器的都相同,只不过从服务器,只需要配置区域文件,不需要配置解析库文件而已,因为它的解析库文件是从主服务器上面同步而来的。

区域配置如下

zone "magedu.com"  IN {

         type slave;

         masters {192.168.1.110;};

      file "slaves/magedu.com.zone";

};

这样主从服务器就配置好了,我这个是之前配置好的,我在主服务器的配置文件中增加一条信息,然后给序列号加1。

技术分享

接下来我们来看看从服务器的解析库文件

技术分享

这样一个主从服务器就配置好了,这是主从服务器的正向解析配置,接下来我们来配置一下主从服务器的反向解析配置

我们先来配置主服务器的区域配置

zone "1.168.192.in-addr.arpa" IN {

        type master;

        file "192.168.1.zone";

};

然后来配置解析库文件:技术分享

接下来,配置在192.168.1.108上面配置从服务器

 从服务器的区域配置

zone "1.168.192.in-addr.arpa" {

        type slave;

        masters {192.168.1.110;};

       file "slaves/1.168.in-addr.arpa";

 这样反向的也配置好了。

我们在主服务器上修改消息,然后查看日志

技术分享

然后我们在看从服务的解析库文件中的序列号发生变化没技术分享

这样反向解析也配置好了。

 接下来我们要做的是子域授权的操作,我们现在192.168.1.110这台主机中配置父域的解析库

技术分享

接下来我们在192.168.1.108这太主机中配置子域。

我们先配置区域:

zone "ops.magedu.com" IN {

        type master;

        file "ops.magedu.com.zone";

};

zone "magedu.com" IN {

        type forward;

        forward only;  #####仅转发特定区域的解析请求到某服务器

        forwarders {192.168.1.110;};

然后配置解析库文件

$TTL 600

$ORIGIN ops.magedu.com.

@    IN     SOA  ns.ops.magedu.com.  lirui.ops.magedu.com. (

                                    20150915    ; serial

                                        1D      ; refresh

                                        1H      ; retry

                                        1W      ; expire

                                        1D

                                         )

    IN     NS    ns1.ops.magedu.com.

    IN     NS    ns2.ops.magedu.com.

ns1.ops.magedu.com.  IN  A   192.168.1.108

ns2.ops.magedu.com.  IN  A   192.168.1.120

www  IN  A   192.168.1.119

www  IN  A   192.168.1.110

ftp  CNAME  www


~                                                    

这样的我们的子域授权的部分也配置好了,我们来验证一下我们的配置是否正确和时候能解析地址

技术分享上面是在子域的主机上解析www.magedu.com,可以看到解析是成功的

 接下来我们在父域的主机上解析www.ops.magedu.com看时候能解析成功

技术分享

解析也是成功的


好了接下来,让我们来学习学习view视图的知识(未完待续)

本文出自 “空白格” 博客,请务必保留此出处http://lirui213.blog.51cto.com/4449582/1698409

DNS基本工作原理,及正反解析,主从同步,子域授权和视图

标签:域名空间   英文缩写   网络通讯   浏览器   工作原理   

原文地址:http://lirui213.blog.51cto.com/4449582/1698409

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!