DNS子域授权的实现

  • 2019 年 10 月 5 日
  • 笔记

前几天贴的博客上没有子域授权的实验,这里补上。

子域授权的概念:

在原有的域上再划分出一个小的区域并指定新DNS服务器。在这个小的区域中如果有客户端请求解析,则只要找新的子DNS服务器。这样的做的好处可以减轻主DNS的压力,也有利于管理。一般做正向区域的子域授权即可。

正向解析区域子域方法:

假设父域stu13.com,子域是ops.stu13.com,子域内有2台名称服务器ns1。

要注意在父域定义好子域的ns1的A记录,不然子域不知道如何去×××器。

例如:

         ops.stu13.com.                 IN     NS    ns1.ops.stu13.com.

         ns1.ops.stu13.com.         IN     A       192.168.2.100

注意:子域和父域的域名服务器可以不在同一个网络内,只要彼此能通信即可。

2. 定义转发服务器【2种方式】

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

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

        Options {

                            forward{first|only}

                            forwarders{IP_address ; };

                   }

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

                   zone"ZONE_NAME" IN  {

                            typeforward;

                            forward{first|only}

                            forwarders{IP_address ; };

                   }

#说明:

         first表示先转发指定的区域服务器,如果没结果再去找根。

         only是只转发给指定的区域服务器,有没有结果,都不会去找根。

注意:配置子域授权时候,需要关闭dnssec功能,即设置:

         dnssec-enableno;

         dnssec-validationno;

下面正式开始配置

环境搭建:

Server1:192.168.2.7父域

Server2:192.168.2.12子域

父域的DNS配置:(192.168.2.7上)

步骤概要:将其配置成缓存服务器,关闭dnssec,添加本区域,编写本区域解析库文件(其中要加入子域的NS记录、A记录)。

vi /etc/named.conf 修改如下:

options {

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

// 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; };

    recursion yes;

dnssec-enable no;                      //改为no

dnssec-validation no;                //改为no

//  dnssec-lookasideauto;              //注释掉这句

    /* Path to ISC DLV key */

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

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

};

logging {

        channel default_debug{

                file"data/named.run";

                severitydynamic;

        };

};

zone "." IN {

    type hint;

    file "named.ca";

};

include "/etc/named.rfc1912.zones";

include "/etc/named.root.key";

service named start

vi /etc/named.rfc1912.zones,在最后添加如下4行内容

zone "stu13.com" IN {

         typemaster;

         file"stu13.com.zone";

};

cd /var/named

vi stu13.com.zone内容如下:【注意FQDN中的注意点号】

$TTL 1D

$ORIGIN stu13.com.

@     IN     SOA  ns1.stu13.com.        admin.stu13.com. (

                                                                 2015093212

                                                                  1M

                                                                 5M

                                                                 1H

                                                                 1D)

               IN     NS    ns1

               IN     NS    ns2

ns1            IN     A     192.168.2.7

ns2            IN     A     192.168.2.8

www            IN     A     192.168.2.7

*              IN     A     192.168.2.7     ;加了一条泛域名解析记录

;下面加的两条是子域授权要用到的,否则父域找不到子域

ops      IN      NS       ns1.ops

ns1.ops  IN      A        192.168.2.12  ; 子域的dns地址

named-checkzone"stu13.com"  stu13.com.zone              # 检查区域文件

# 修改区域配置文件的权限

chown .named stu13.com.zone

chmod 640 stu13.com.zone

service named restart    #重启dns服务

子域的DNS配置:(192.168.2.12上)

步骤概要:将其配置成缓存服务器,关闭dnssec,添加本区域和父区域,编写本区域解析库文件。

vi /etc/named.conf # 注释掉下面红色字体部分的代码,使其变成缓存服务器

options {

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

// 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; };

    recursion yes;

dnssec-enable no;                      //改为no

dnssec-validation no;                //改为no

// dnssec-lookaside auto;

    /* Path to ISC DLV key */

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

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

};

logging {

        channel default_debug{

                file"data/named.run";

                severitydynamic;

        };

};

zone "." IN {

    type hint;

    file "named.ca";

};

include "/etc/named.rfc1912.zones";

include "/etc/named.root.key";

service named start       #启动named服务

vi /etc/named.rfc1912.zones,在最后添加2个区域:

zone "ops.stu13.com" IN {

         type master;

         file"ops.stu13.com.zone";

};

//定义转发到父域

zone "stu13.com" IN {

 type forward;

    forwardonly;

   forwarders { 192.168.2.7 ;};

};

vi /var/named/ops.stu13.com.zone    写入如下内容:

$TTL 1D

$ORIGIN ops.stu13.com.

@     IN              SOA           ns1.ops.stu13.com.         admin.ops.stu13.com. (

                                                                 2015093201

                                                                 1M

                                                                 5M

                                                                 1H

                                                                 1D )

                IN     NS      ns1

ns1             IN     A       192.168.2.12   ;本机地址

www             IN     A       192.168.2.30

*               IN     A       192.168.2.30

# 修改区域配置文件的权限

chown .named ops.stu13.com.zone

chmod 640 ops.stu13.com.zone

执行rndc reload或者service namedrestart

tail/var/log/messages 查看是否有错误提示。

多次执行dig命令检查:

# 在父域dns服务器上执行:

dig -t awww.ops.stu13.com @192.168.2.7  父域能正常解析子域

# 在子域dns服务器上执行:

dig -t awww.stu13.com @192.168.2.12         子域能解析父域

说明我们定义的子域、父域配置成功了。