一、配置解析一个正向区域:

以bucktan.com域为例:

1.1 定义区域

在主配置文件中(/etc/named.conf)或主配置文件辅助配置文件(/etc/named.rfc1912.zones)中实现;

zone  "ZONE_NAME"  IN  {

type  {master|slave|hint(根服务器)|forward(转发)};

file  "ZONE_NAME.zone"; 

};

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

  eg:zone "bucktan.com" IN {

       type master;

       file "bucktan.com.zone";

};

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

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

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


eg:$TTL 3600

    $ORIGIN bucktan.com.

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

          2018010109

          1H

          10M

          1W

          1D )

   @      IN      NS      ns1

   ns1    IN      A       172.18.26.7

   www    IN      A       172.18.26.7

   web    IN      CNAME   www

权限及属组修改:

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

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

eg:-rw-r-----. 1 root  named  362 Apr 16 18:11 bucktan.com.zone

检查语法错误:

# named-checkzone  ZONE_NAME   ZONE_FILE

# named-checkconf 

  1.3让服务器重载配置文件和区域数据文件

# rndc  reload 或

# systemctl  reload  named.service

注:1、在解析时注意修改区域数据文件的权限,因为在解析时是由named用户去解析的且权限最好为640

2、在上述操作完全正常的情况下如果不能正常解析,可以查看配置文件(/etc/named.conf)中监听是否正确,在这里注意如果只监听(通信)某一个主机,则可添加它的ip地址,如果要监听所有的(即与所有的主机通信),则可以将其注释掉。

3、在学习中,建议关闭dnssec

dnssec-enable no;

dnssec-validation no;

dnssec-lookaside no;

与别的主机通信时,注意要注释掉//allow-query     { localhost; };

4、如果自身是不能解析,就检查dns配置文件(/etc/resolv.conf)设置为自己的主机,在实际中设置为可用的dns服务即可


二、配置解析一个反向区域

2.1定义区域

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

   zone  "ZONE_NAME"  IN  {

type  {master|slave|hint|forward};

file  "ZONE_NAME.zone"; 

   };

eg:zone "26.18.172.in-addr.arpa" IN {

       type master;

       file "172.18.26.7.zone";

};

注意:反向区域的名字

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

         如:100.16.172.in-addr.arpa


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

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

eg:$TTL 3600

$ORIGIN 26.18.172.in-addr.arpa.

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

            2018010203

            1H

            10M

            1W

            12H )

       IN      NS        ns1.bucktan.com.

7      IN      PTR       ns1.bucktan.com.

8      IN      PTR       ns2.bucktan.com.

9      IN      PTR       new.bucktan.com.

10     IN      PTR       bbs.bucktan.com.

权限及属组修改:

# chgrp  named  /var/named/172.16.100.zone

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

eg:-rw-r-----. 1 root  named  408 Apr 16 18:38 172.18.26.7.zone

检查语法错误:

# named-checkzone  ZONE_NAME   ZONE_FILE

# named-checkconf 

2.3让服务器重载配置文件和区域数据文件

# rndc  reload 或

# systemctl  reload  named.service

注:反向区域解析跟正向的一样要注意

三、主从服务器:

注意:从服务器是区域级别的概念;主从结构当中,它只是区域级别的概念,如果一台主服务器上面有三个区域,

他们都是主的,如果配置一台服务器做他的从服务器时,是相对于它的某个区域配置的,而不是相对于整台服务器配置的,所以,它如果是第一个区域的从,那么在从服务器上它只有第一个区域的副本,如果想成为三个区域的从,那么三台都要配置。

如果一台服务器它既是正向的主,又是反向的主,它既提供了正向区域的解析又提供了反向区域的解析,那么这个时候从服务器如果只配置了正向区域的从,那么反向区域跟他是没有关系的,就不能解析反向区域,所以,如果要让一台服务器既是正向的也是反向的解析,那么它们就要分别配置。

复制还可以级联,就是第二台服务器可以去主服务器复制,第三台也可作为第二台的从服务器,从而复制

    配置一个从区域:(换一台主机)

On Slave 

       (1) 定义区域

定义一个从区域; 

zone "ZONE_NAME"  IN {

type  slave;

file  "slaves/ZONE_NAME.zone";

masters  { MASTER_IP; };

};

配置文件语法检查:named-checkconf

eg:zone "bucktan.com" IN {

       type slave;

       file "slaves/bucktan.com.zone";

       masters { 172.18.26.7; };

};

(2) 重载配置

rndc  reload

systemctl  reload  named.service

注:/var/named/slaves:此目录专用于从服务器从主服务器那里同步的文件,需要自动的创建文件时使用的。

On Master

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

注意:时间要同步;

ntpdate命令;

eg:$TTL 3600

$ORIGIN bucktan.com.

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

          2018010109

          1H

          10M

          1W

          1D )

@      IN      NS      ns1

@       IN      NS      ns2##此处添加了一个NS记录

ns1    IN      A       172.18.26.7

ns2    IN      A       172.18.26.8##此处添加了一个A记录

www    IN      A       172.18.26.7

web    IN      CNAME   www

只要有主从,那么每更改一次都要改序列号

主从服务中应该注意的事项,和遇到问题时的解决办法:

1.只要有主从,那么每更改一次都要改序列号

2、在学习中,如果不能传送文件时,可以检查防火墙是否关闭,同时也可以通过日志文件(/var/log/messages)查看状况

3、其它的注意的就跟正向区域解析中注意的事项一样

4、在通信连接成功之后要注意时间要同步,可用ntpdate命令。


四、子域授权:

正向解析区域授权子域的方法:定义一个子域

ops.bucktan.com. IN NS  ns1.ops.bucktan.com.

ops.bucktan.com. IN NS  ns2.ops.bucktan.com.

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

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

eg:@       IN      NS      ns2

ops     IN      NS      ns3.ops.bucktan.com. ##此为添加的三级域域名

ns1    IN      A       172.18.26.7

ns2    IN      A       172.18.26.8   ###此为三级域ip

ns3.ops IN     A       172.18.26.20

注:1、在父域里添加一个NS记录以及A记录,如上

   2、子域要用另一个主机(ip),定义一个子域方法跟定义一个正向解析区域一样,

  eg:定义区域

  zone "ops.bucktan.com" IN {

       type master;

       file "ops.bucktan.com.zone";

};

定义区域解析库文件(文件在/var/named/目录下且名字为ops.bucktan.com.zone)

$TTL 3600

$ORIGIN ops.bucktan.com.

@     IN     SOA     ns.ops.bucktan.com.     nsadmin.ops.bucktan.com. (

       2018010301

       1H

       10M

       1W

       10H )

      IN      NS    ns1

ns1   IN      A     172.18.26.20

www   IN      A     172.18.26.20

web   IN      CNAME www

五、定义转发:

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

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

定义方式:

zone  "ZONE_NAME"  IN {

type  forward;

forward  {first|only};

forwarders  { SERVER_IP(转发器); };

};

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

only:只转发;

对于子域而言,它不知道父域在哪里就可以定义一个区域转发

eg:zone "bucktan.com" IN {

       type forward;

       forward  only;

       forwarders { 172.18.26.7; 172.18.26.8; };

};(注:这是在子域的主机172.18.26.20中配置文件定义的)

注:1、父域能解析子域,子域也能解析父域。

子域不能上网的情况下要解析外网就不行,但如果父域主机能上网,这时子域的请求就会转发给父域达到能解析的要求

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

在配置文件中编辑/etc/named.conf

在options中加如下内容:

options {

... ...

        forward  {only|first};

forwarders  { SERVER_IP; };

.. ...

};

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

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

acl  acl_name  {

ip;

      net/prelen(掩码);

};

注:也是将此加在配置文件/etc/named.conf中

示例:

acl  mynet {

172.18.0.0/16;

127.0.0.0/8;

};

bind有四个内置的acl

        none:没有一个主机;

any:任意主机;

local:本机;

localnet:本机所在的IP所属的网络;

访问控制指令:

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

 注:这是允许那些主机可以来查询自己

allow-transfer {};  允许向哪些主机做区域传送;默认为向所有主机;应该配置为仅允许从服务器(为了安全)

注:以上两个可以写在全局和区域中,只是作用范围不同而已

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

一般只允许本地的做递归查询 

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

一般为none

 eg:allow-recursion { mynet }