为了简化运维人员的负担,使用Master/Slave DNS架构的情况比较好,现在我们来简单叙述一下Master/Slaver DNS的特点

             主DNS服务器:维护所负责解析的域内解析库服务器;解析库由管理员维护;

             从DNS服务器:从主DNS服务器或其它的从DNS服务器那里“复制”(区域传递)一份解析库;

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

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

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

                        过期时长:从服务器时钟联系不到服务器时,多久以后放弃从服务器角度,停止提供服务

                        

                        区域传送:

                                全量传送:传递整个解析库

                                增量传送:传递解析库变化的那部分内容


            

    环境准备

        centso 6.5主机两台

        master主机IP地址192.168.1.1,主机名为master.test.com

        slave主机IP地址为192.165.1.2,主机名为slave.test.com           



 1.master DNS权限的开放

            (1)提供Slave DNS服务器进行zone transfer的服务器为master.test.com.

                  (2) test.com及 1.1.168.in-addr-arpa两个Zone提供给Slave DNS使用。(正解反解都要提供)

                  (3) master.tst.com的named仅提供给slave.test.com这台主机进行zone transfer。

                (4)Slave DNS假设在192.168.1.2这台服务器上面。

                  我们在master.test.com这台服务器中除了named.conf需要调整之外,两个zone file也需要调整,在named.conf当中,需要设置哪个IP可以对我的zone进行传输(allow-yransfer),而在zone file中,只要加入一项NS记录即可。

                 进入到/etc/named.conf,或者是/etc/named.rfc1912.zones文件中。

                 备注:这两个配置文件一个为根域的解析配置文件,一个为用户自定义区域解析文件,二者都可以让用户添加新的区域解析信息。看个人使用习惯,决定在哪个文件中定义新的区域信息。在这里我们使用named.rfc1912.zones文件进行zone记录的添加

                 在named.rfc1912.zones文件中创建两条zone记录test.com以及1.168.192.in-addr.arpa并为其指定配置文件路径

                blob.png  

              备注:其中allow-transfer后面括号中的地址要填写为slave服务器的ip地址,有过个地址的话,中间用分号隔开。

                blob.png    

 2. 然后我们创建两个zone file文件,在/var/named/目录下面创建两个zone file文件

                编辑第一个文件test.com.zone

            blob.png

              备注:其中@表示当前区域主机名称即master.test.com

            编辑反解的192.168.1.zone文件

             blob.png


3.设置完master服务器的配置后,我们来设置slaver服务器的配置文件

               编辑/etc/named.rfc1912.zones文件

               在文件中创建两条zone记录test.com以及1.168.192.in-addr.arpa

               备注:这里因为是从DNS服务器所以type类型要设置为 slave;同时指名masters的正确IP地址。slave DNS的zone filename部分,由于zone file都是从Master取得的,通过named这个程序来主动建立起需要的zone file,因此这个zone file的路径只要设置为slaves/zone name即可。

    

          blob.png


          blob.png

        如此一来Slave DNS就建立起来了,未来如果Master DNS要跟新数据库时,只需要修改过序号,并重新启动named后,这台Slave DNS就会跟着更新。

        

  

    DNS的高级特性

1. bind中基础的安全相关配置:

             acl:把一个或多个地址归并为一个集合,并通过一个同一的名称调用;

             示例:

                    acl mynet{

                        172.16.0.0/16;

                        };


            blob.png

           (1) 访问控制的指令:

                        allow-query {};允许查询的主机;白名单

            blob.png  

            备注:只允许定义的这几个IP地址进行查询。一般来说为any,因为DNS主机应该允许所有人查看其解析的主机,注意将allow-query定义在zone中只能对一个zone生效,定义在/etc/named.conf的options中则对所有的zone都生效

           (2)只允许slaves中定义的主机进行区域传送;

            blob.png

           (3)allow-recursion{}:允许递归的主机;通常定义在options全局配置中;示例:自己定义mynet访问控制列表

           spacer.gifblob.png

          备注: allow-update{}:允许更新区域数据库中的内容;通常设置为none,不允许任何人更新,zone中定义为 allow-update { none; };用YUM下载BIND安装包,默认会启用dnssec,配置文件中dnssec-enable不能注释掉;将后面的yes改为no,父域子域都要做更改。

          dnssec-enable no;

          dnssec-validation no;

        

2.view视图

                  视图:

                        一个bind服务器可定义多个view,每个view可以有一个或多个zone;

                        每个view用来匹配一组客户端;

                        多个view内可能需要对同一区域进行解析,但使用不同的区域解析文件;

                        view VIEW_NAME {

                                match-clients {};  //匹配的客户端

                        };

                        注意:

                        (1)一旦启用了viwe,所有的zone都定义在view中;

                        (2)仅有必要在匹配到允许递归请求的客户所在viwe中定义根区域;

                        (3)客户端请求到达时,是自下而上检查每个view所服务的客户端列表;

                    示例:

                           

                  第一步:将named.conf中根区域的定义删除将它定义到named.rfc1926.zones

                         options定义一个acl

       image.png

               第二步:在named.rfc1925.zones定义view

          image.png

              上图定义的文件表示对匹配到的客户端同时对这些客户端进行递归查询

                  添加一个新的view


          image.png

              配置文件不同,在/var/named/中从新定义一个区域资源文件

              vim external.zone

          image.png      

             这样通过BIND组件的view功能可以根据不同网段的IP请求转发给不同的服务器进行处理