1、dns主从:

     从服务和主服务器拥有一模一样的数据库文件;从dns服务器是区域级别的概念。

    主从同步:需要两台主机的时间一直,否则不能正确完成,命令ntpdate用来指定时间服务器。


2、配置一个正向区域的从DNS服务器的步骤:

    ①、主服务器上配置:

        a、确保区域数据文件中为每个从服务器配置NS记录;

        b、并且在正向区域文件需要为每个从(辅助)DNS服务器的NS记录的主机名配置一个A记录,且此A后面的地址为"真正从(辅助)服务器的IP地址",否则同步过去


    ②、从服务器上配置:

       a、定义一个区域为从区域

        示例:

        zone "zone_name" IN {

            type slave;

            file "slaves/zone_name.zone";   //区域数据文件,放在此位置,不需要自己创建,自动同步过来

            masters { MASTER_IP; }       //指定主DNS服务器ip地址

        }

    为什么辅助区域配置文件放在/var/named/slaves目录下呢?

        [root@localhost slaves]# ps aux | grep named

        named      1980  0.0  1.5 157904 16044 ?        Ssl  19:08   0:00 /usr/sbin/named -u named    //named进程以named身份运行

        [root@localhost slaves]# ls /var/named/ -ld         //named目录的权限 不允许named组用户对其进行写操作,因此不能创建文件

        drwxr-x---. 5 root named 4096 Feb  4 19:07 /var/named/

        [root@localhost slaves]# ls /var/named/slaves/ -ld        //slaves目录允许named进程组用户有RWX权限,避免风险

        drwxrwx---. 2 named named 4096 Dec  5  2012 /var/named/slaves/

        [root@localhost slaves]# 

        


主从dns正向区域配置步骤示例:主dns:192.168.0.107;从dns:192.168.0.102

注意:主从同步要确保关闭了selinux和防火墙,除非策略通过,否则会同步不成功。

    ①、主服务器配置

        [root@localhost /]# cat /var/named/magedu.com.zone

        $TTL 1D

        $ORIGIN magedu.com.

        @              IN SOA @ admin.magedu.com. (

         2018020401     

         1H

         20M

         1D

         1W

        )

        @               IN NS  ns1.magedu.com.

        @               IN NS  ns2.magedu.com.

        ns2              IN A   192.168.0.102

        ns1    IN A  192.168.100.100

        www.magedu.com.     IN A  192.168.100.105

    IN A  192.168.100.106

        web1.magedu.com. IN CNAME www.magedu.com.

        [root@localhost /]# 

        [root@localhost /]# named-checkconf 

        [root@localhost /]# named-checkzone magedu.com /var/named/magedu.com.zone 

            注意:主配置文件中的“allow-query     { localhost; };”注释掉 ;每次更改区域数据配置文件都要手工改动serial(序列号)

        

        [root@localhost /]# systemctl restart named  或:[root@localhost /]# systemctl reload named

        [root@localhost /]# systemctl status named

    ②、从dns服务器配置:

         ]# vim /etc/named.rfc1912.zones  

        zone  "magedu.com"  IN {

                type slave;

                file "slaves/magedu.com.zone";

                masters { 192.168.0.107; };

        };

        [root@localhost slaves]# named-checkconf   //检查区域配置是否有语法错误

        [root@localhost slaves]# rndc reload    //重读配置文件

        [root@localhost slaves]# ls /var/named/slaves/   

        magedu.com.zone     //此文件会自动从主dns服务器通过不过来


    ③、验证:

        [root@localhost slaves]# dig -t a www.magedu.com @192.168.0.102


3、配置一个反向区域的从DNS服务器的步骤:(注意:反向区域要与正向区域的记录对应)

    ①、主服务器上配置:

        a、确保区域数据文件中为每个从服务器配置NS记录;

        b、并且在反向区域文件需要为每个从(辅助)DNS服务器的NS记录的主机名配置一个PTR记录,且此PTR的"name地址"为"真正从(辅助)服务器的IP地址",否则同步过去


    ②、从服务器上配置:

       a、定义一个反向区域为从区域

        示例:

        zone "网段地址.in-addr.arpa" IN {

            type slave;

            file "slaves/zone_name.zone";   //区域数据文件,放在此位置,不需要自己创建,自动同步过来

            masters { MASTER_IP; }       //指定主DNS服务器ip地址

        }

主从dns反向区域配置步骤示例:主dns:192.168.0.107;从dns:192.168.0.102  (要有对应的正向解析区域)

    ①主dns服务器上配置:       

        root@localhost /]# cat /etc/named.rfc1912.zones 

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

        type master;

        file "192.168.0.zone";

        };

     

     主dns反向区域数据文件配置:

        [root@localhost /]# cat /var/named/192.168.0.zone 

        $TTL 3600

        $ORIGIN  0.168.192.in-addr.arpa.

        @     IN  SOA  ns1.magedu.com.  admins.magedu.com. (

         2018020226

         1D

         2H

         30M

         1W

        )

            IN  NS ns1.magedu.com.

            IN  NS ns2.magedu.com.

        102   IN  PTR ns2.magedu.com.

        107   IN  PTR ns1.magedu.com.

        205   IN  PTR www.magedu.com.

        206   IN  PTR www.magedu.com.

        207   IN  PTR www.magedu.com.

        [root@localhost /]#

 

    ②、从服务器反向区域配置:

        [root@localhost slaves]# cat /etc/named.rfc1912.zones                 

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

         type slave;

         file "slaves/192.168.0.zone";

         masters { 192.168.0.107; };

        };

 


    ③、验证:

        [root@localhost slaves]# ls /var/named/slaves/

        192.168.0.zone  magedu.com.zone

        [root@localhost slaves]# 

        [root@localhost slaves]# dig -x 192.168.0.207 @192.168.0.102   //查看102是否可以解析此地址

        [root@localhost slaves]# dig -t axfr 0.168.192.in-addr.arpa @192.168.0.102   //手动同步区域文件

        注意:手动传送存在风险,因为任何人都可以传送,需要访问控制来限制主从间的传送。


4、子域授权配置:

   如:父域:magedu.cn

     子域:ops.magedu.cn


    正向解析区域授权子域的方法:

      配置文件中添加:

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

        ns1.ops.magedu.com.  IN  A IP_ADDR

      注意:如果有多个子域都要在此处添加相应记录。

    

子域授权配置示例:父dns:192.168.0.107;子dns:192.168.0.105

     父域配置:

        区域配置文件

        [root@localhost named]# cat /etc/named.rfc1912.zones           

        zone "magedu.com" IN {

         type master;

         file "magedu.com.zone";

        };

        [root@localhost named]# named-checkconf 


        区域数据配置文件

        [root@localhost named]# cat /var/named/magedu.com.zone 

        $TTL 3600

        $ORIGIN magedu.com.

        @  IN   SOA   @admin.magedu.com. (

         2017020517

         1D

         1H

         1W

         10M

        )

          IN  NS      ns1.magedu.com.

        ns1 IN  A    192.168.0.200

        www IN  A    192.168.0.210

        www IN  A    192.168.0.220

        web   IN  CNAME  www


        ops IN  NS      ns2.ops

        ns2.ops  IN   A    192.168.0.105 

        [root@localhost named]# 


    子域配置:

        子域配置文件:        

        [root@localhost ~]# cat /etc/named.rfc1912.zones

        zone "ops.magedu.com" IN {

         type master;

         file "ops.magedu.com.zone";

        };

        [root@localhost named]# named-checkconf 


        子域数据配置文件:        

        [root@localhost named]# cat ops.magedu.com.zone

        $TTL 3600

        $ORIGIN ops.magedu.com.

        @INsoa  ops.magedu.com. admin.ops.magedu.com. (

         2018020103

         1D

         10M

         1W

         12H

        )

         IN NS  ns1.ops.magedu.com.

        ns1INA   10.10.10.100

        wwwINA   10.10.10.110

        www INA   10.10.10.120

        webINCNAME www

        [root@localhost named]# named-checkzone  ops.magedu.com /var/named/ops.magedu.com.zone        


    验证结果:

        父域可以解析子域:(在107上输入命令)

        [root@localhost named]# dig -t a www.ops.magedu.com  @192.168.0.107   //自己解析子域的资源记录,可以解析

        [root@localhost named]# dig -t a www.ops.magedu.com  @192.168.0.105   //自己主机让105解析资源记录,可以解析

        [root@localhost named]# dig -t a www.magedu.com  @192.168.0.107    //自己解析自己,可以解析

        子域解析父域:(在105上输入命令)

        [root@localhost named]# dig -t a www.ops.magedu.com. @192.168.0.105    //自己解析自己,可以解析

        [root@localhost named]# dig -t a www.ops.magedu.com. @192.168.0.107    //自己让父域解析自己,可以解析

        [root@localhost named]# dig -t a www.magedu.com. @192.168.0.105       //自己不能解析父域

     -------------------------------------------------------------------------------------------------------------------------------------                       

5、定义转发区域

    注意: 被转发的服务器必须允许为当前的服务器做递归

 转发区域分类:  

    ①、区域转发:仅转发对某些特定区域的解析请求   ;一般编辑辅助配置文件(named.rfc1912.zone)            

    ②、全局转发:只要不是自己负责,都转发给递归服务器;反本地没有通过zone定义的区域查询请求,通通转发给某转发器。 ;一般在主文件(named.conf)的option中配置


   区域转发:语法格式如下:(一般编辑辅助配置文件(named.rfc1912.zone)  )

        zone "ZONE_NAME" IN {

            type forward;

            forward {first | only};

            forwarders { SERVER_IP; };

        }

        注意:first:首先转发,转发器不存在时,自己去迭代查询;

            only:只转发,若不成功,则一直处在等待状态 

           转发的地址可以有多个,以分号分开,前后有空格


  示例:如父子域,父域可以解析子域,是因为有指向子域的域名服务器的记录,但是子域不能去解析父域,因为子域和父域是两个不同的域,子域需要转发给根才可以去解析父域的资源记录。

  解决办法:在子域上做区域转发,凡是要解析父域的资源记录,都转向父域的IP地址。如下:为父子域的子域做转发,在子域上配置如下:

        [root@localhost named]# cat /etc/named.rfc1912.zones     

        zone "magedu.com" IN {              //要转发的区域

         type forward;               //区域的类型

         forward only;             //仅转发

         forwarders { 192.168.0.107; };   //转发的IP地址

        };

        [root@localhost named]# rndc reload

        [root@localhost named]# dig -t a www.magedu.com @192.168.0.105  //子域可以成功解析父域资源记录。   

    

 全局转发:语法格式如下:(一般在主文件(named.conf)的option中配置 )

        options {

            ...

            forward only

            forwarders { SERVER_IP; };

            ...

        }

    转发区域查找顺序:先去找zone中的转发,没有在去查找option中的转发


 示例:如父子域,父域可以解析子域,是因为有指向子域的域名服务器的记录,但是子域不能去解析父域,因为子域和父域是两个不同的域,子域需要转发给根才可以去解析父域的资源记录。

  解决办法:在子域上做全局转发,凡是要解析未知的资源记录,都转向父域的IP地址。如下:为父子域的子域做转发,在子域上配置如下:

        options {

                listen-on port 53 { 127.0.0.1; 192.168.0.105; };

                listen-on-v6 port 53 { ::1; };

                directory       "/var/named";

                dump-file       "/var/named/data/cache_dump.db";

                statistics-file "/var/named/data/named_stats.txt";

                memstatistics-file "/var/named/data/named_mem_stats.txt";

              //allow-query     { localhost; 192.168.0.0/24; };

                recursion yes;


                dnssec-enable no;

                dnssec-validation no;

                dnssec-lookaside no;

    

                /* Path to ISC DLV key */

                bindkeys-file "/etc/named.iscdlv.key";


                managed-keys-directory "/var/named/dynamic";

                forward only;

                forwarders { 192.168.0.107; };

        };



6、bind中的安全相关配置:   

    ①、acl:访问控制列表,把一个或多个地址归并一个命名的集合,然后通过此名称对集合内的所有主机实现统一调用。

      acl格式:

        acl ACL_NAME {

            IP;        //可以写多个ip,每行一个

            NET/MASK;    //支持以长度的方式书写掩码 

        }

       注意1:acl要先于options定义,才可在options中进行调用;acl一般在主文件named.conf中配置,但是在辅助配置文件named.rfc1912.zone中也可以引用。

        示例:    

            acl allow_ziyu {

            192.168.0.0/24;

            172.168.100.0/24;

            10.10.10.10;

            };


        注意2:bind有四个内置的acl,如下:

            none:不允许任何主机

            any:允许任何主机

            localhost:本机

            localnet:本地主机IP所属的网络段。


    ②、访问控制指令

        在全局文件named.conf中配置对全局起作用

        在区域文件name.rfc1912.zone中配置仅对当前域起作用。

        注意:区域中的配置会覆盖主文件中的配置。


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

        allow-transfer { }  //允许向哪些主机做区域传送;默认为向所有主机,应该在主服务器上配置仅允许:向从(辅助)dns服务器传送。其他都不允许。

        allow-recursion { }  //允许哪些主机向当前dns服务器发起递归查询请求;白名单

        allow-update { }    //是否允许更新ddns用的,允许动态更新区域数据库文件中的内容,有进程自动更新。如:allow-update { none; };

              


       示例:在options中添加访问控制指令如下:

            options {

                allow-query {  allow_ziyu; };  //可以引用acl、ip。

                allow-transfer { allow_ziyu; };}

                recursion yes    //允许所有递归,也可以写成allow-recursion { }的形式,

            }        


         在区域中做控制:

            zone "magedu.com" IN {

                type master;

                file "magedu.com.zone";

                allow-query { allow_IP; };

                allow-transfer { allow_transfer; };   //仅允许从服务器复制。

            };                


7、bind view:主要用来控制哪些主机访问哪些地址的,如果有两个dns的话。(智能DNS)的实现

   格式:

    view VIEW_NAME {

        zone;

        zone;

        zone;

    };

    

   示例:

    view internal {

        match-client { 172.16.0.0、16;};

        zone "magedu.com" IN {

            type master;

            file "magedu.com/internal";

        };    

}

    view external {

        match-client { any; };

        zone "magedu.com" IN {

            type master;

            file "magedu.com/external";

        };

    };