正向解析区域、反向解析区域;主/从;子域;基本安全控制

一、背景:

  DNS服务器所提供的服务是完成将主机名和转换为IP地址的工作。为什么需要将主机名转换为IP地址的工作呢?这是因为,当网络上的一台客户机访问某一服务器上的资源时,用户在浏览器地址栏中输入的是人类便于识记的主机名和域名。而网络上的计算机之间实现连接却是通过每台计算机在网络中拥有的惟一的IP地址来完成的,这样就需要在用户容易记忆的地址和计算机能够识别的地址之间有一个解析,DNS服务器便充当了地址解析的重要角色。

 正向解析就是通过域名解析到IP地址而反向解析就是通过IP能解析到域名。

二、正向解析区域、反向解析区域

 1、配置解析域

  配置解析一个正向区域:

   以magedu.com域为例:

 (1) 定义区域

       在主配置文件中或主配置文件辅助配置文件中实现;

   zone  "ZONE_NAME"  IN  {

     type  {master|slave|hint|forward};

     file  "ZONE_NAME.zone"; 

    };

 注意:区域名字即为域名;

 (2) 建立区域数据文件(主要记录为A或AAAA记录)

    在/var/named目录下建立区域数据文件;

    文件为:/var/named/magedu.com.zone

    $TTL 3600

    $ORIGIN magedu.com.

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

               2017010801

                1H

               10M

               3D

               1D )

    IN      NS      ns1

    IN      MX   10 mx1

    IN      MX   20 mx2

    ns1     IN     A     172.16.100.67

    mx1     IN     A     172.16.100.68

    mx2     IN     A     172.16.100.69

    www     IN     A     172.16.100.67

    web     IN     CNAME   www

    bbs     IN     A    172.16.100.70

    bbs     IN     A    172.16.100.71

   权限及属组修改:

   # chgrp  named  /var/named/magedu.com.zone

   # chmod  o=  /var/named/magedu.com.zone

   检查语法错误:

   # named-checkzone  ZONE_NAME   ZONE_FILE

   # named-checkconf 

 (3) 让服务器重载配置文件和区域数据文件

     # rndc  reload 或

     # systemctl  reload  named.service


  配置解析一个反向区域

 (1) 定义区域

  在主配置文件中或主配置文件辅助配置文件中实现;

     zone  "ZONE_NAME"  IN  {

         type  {master|slave|hint|forward};

         file  "ZONE_NAME.zone"; 

      };

  注意:反向区域的名字

  反写的网段地址.in-addr.arpa 

  100.16.172.in-addr.arpa

 (2) 定义区域解析库文件(主要记录为PTR)

    示例,区域名称为100.16.172.in-addr.arpa;

     $TTL 3600

     $ORIGIN 100.16.172.in-addr.arpa.

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

         2017010801(序列号)

           1H (刷新时间间隔)

           10M (重试时间间隔)

           3D  (否定答案的生存时长)

           12H (过期时长))

      IN    NS    ns1.magedu.com.

     67      IN      PTR     ns1.magedu.com. 

     68      IN      PTR     mx1.magedu.com.

     69      IN      PTR     mx2.magedu.com.

     70      IN      PTR     bbs.magedu.com.

     71      IN      PTR     bbs.magedu.com.

     67      IN      PTR     www.magedu.com.

  权限及属组修改:

   # chgrp  named  /var/named/172.16.100.zone

   # chmod  o=  /var/named/172.16.100.zone

  检查语法错误:

   # named-checkzone  ZONE_NAME   ZONE_FILE

   # named-checkconf 

 (3) 让服务器重载配置文件和区域数据文件

   # rndc  reload 或

   # systemctl  reload  named.service 

三、主,从DNS服务器配置

 

  假设我们以上配置的主机为主DNS服务器,在另一台主机配置从服务器。

  从服务器是区域级别的概念;所以是在zone定义的type为slave;所以可以互为主从,例如一个正向解析的DNS服务器A的从服务器是DNS服务器B。DNS服务器B是反向解析的主服务器,DNS服务器A是反向解析的从服务器;

(1)配置从DNS服务器方式

 在从DNS服务器上

  1)定义区域:

    zone "ZONE_NAME" IN {

    type slave;

    file "slaves/ZONE_NAME.zone"; ----> slaves目录的属主是named,确保数据可以写入;

    masters {MASTER_IP;};

    }; 

  2) 重载配置

rndc  reload

systemctl  reload  named.service

    

     [root@COS6 ~]# rndc reload

     server reload successful

 在主DNS服务器上

   确保区域数据文件中为每个从服务配置NS记录,并且在正向区域文件需要为每个从服务器的主机名配置一个A记录,且此后A后面的地址为真正的从服务器的IP。 

注意:时间要同步;ntpdate命令

主服务器的序列号每次修改都要更新!

  [root@COS7 ~]# vim /var/named/flyalways.com.zone

  [root@COS7 ~]# cat /var/named/flyalways.com.zone 

  $TTL 3600

  $ORIGIN flyalways.com.

  @ IN SOA dns.flyalways.com. dnsadmin.flyalways.com. (

2016011002                          -----> 修改序列号

1H

10M

3D

1D )

IN NS dns

IN NS dns2                -----> 添加从服务器的NS记录

IN MX   10 mx1

IN MX   20 mx2

dns IN A 172.16.25.71

dns2 IN A 172.16.25.67        -----> 指明从服务器的地址

mx1 IN A 172.16.25.72

mx2 IN A 172.16.25.73

www IN A 172.16.25.74

web IN A 172.16.25.75  

 [root@COS7 ~]# named-checkconf 

 [root@COS7 ~]# named-checkzone flyalways.com /var/named/flyalways.com.zone 

 zone flyalways.com/IN: loaded serial 2016011002            ----> 序列号已变

 OK

 [root@COS7 ~]# rndc reload

 server reload successful

  从服务器一般而言是为了和主DNS服务器一起做负载均衡的。一旦主DNS服务器失效,从DNS服务器也会停止提供服务。


四、子域授权

  1、 子域授权就相当于是划片管理,是由上至下的授权。由根开始"."。

   例如:.com .net 就是由根授权名称空间,其实就是由.决定要划分什么的名称空间,由它委派子名称空间。

   DNS中最重要的就是NS记录,其中每个NS里面的负责人就是SOA,在父域上定义一条NS记录和一条A记录就可以完成子域授权了

  .com IN NS wd.com.

  wd.com  IN A 10.10.10.1

(这就表示在.com这个片里面有一台主机叫叫wd。以后这个.com这一片就归这个wd这台主机来管理了,哪谁是这台主机呢?下面的A记录就给予很明确的答案,10.10.10.1就是管理.com这个片的这台主机)

注意:子域和父域没有必要在同一个网段,只要能够通信就可以了。

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

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

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

ns1.ops.magedu.com. IN A IP.AD.DR.ESS

ns2.ops.magedu.com. IN A IP.AD.DR.ESS

2、定义转发:

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

(1) 区域转发:仅转发对某特定区域的解析请求;

zone  "ZONE_NAME"  IN {

   type  forward;

   forward  {first|only};

  forwarders  { SERVER_IP; };

};

first:首先转发;转发器不响应时,自行去迭代查询;

only:只转发;

(2) 全局转发:针对凡本地没有通过zone定义的区域查询请求,通通转给某转发器;

options {

... ...

forward  {only|first};

forwarders  { SERVER_IP; };

.. ...

};


五、基本安全控制

  bind中的安全相关的配置

 1、BIND配置文件语法介绍

  (1)acl语句

     acl 语句的定义和使用

     acl 语句给一个地址匹配表赋予了一个象征名称。它的名字来自于地址匹配列表的最基本功能:访问控制表列(ACLs)。

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

acl  acl_name  {

       ip;

       net/prelen;

};

示例:

acl  mynet {

172.16.0.0/16;

127.0.0.0/8;

};

  注意:一个地址表名必须首先在acl中定义了,然后才能在别处使用;提前调用是不允许的。

   acl acl-name { address_match_list };

bind有四个内置的acl:

   any 匹配所有主机

 none 不匹配任何主机

 ocalhost 匹配主机上所有IPV4的网络接口

 localnets 匹配所有IPV4本地网络的主机

2、访问控制指令:

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

  allow-transfer {}; 

  允许向哪些主机做区域传送;默认为向所有主机;应该配置仅允许从服务器;

  allow-recursion {}; 允许哪此主机向当前DNS服务器发起递归查询请求; 

  allow-update {}; DDNS,允许动态更新区域数据库文件中内容;