Linux服务器--DNS服务器的子域授权、转发和视图

一.DNS服务器子域授权:

Linux DNS服务器的子域授权,是在原有的域上再划分小的区域并指定新的DNS服务器,在子区域的DNS服务器中,如果有客户端请求,则只要找到子DNS服务器即可,从而减轻了主DNS服务器的解析压力,也有利于管理。

实验环境:两台Linux主机,IP 分别为172.16.99.1(父域)  172.16.99.2(子域)。

DNS服务器子域授权的配置:(在原有的DNS服务器上创建)

1.在原有的父域正向区域数据解析文件中添加子域的NS记录和A记录:如

      Linux服务器--3.DNS的子域授权,转发和视图

在父域名服务器的配置文件/etc/named.conf 中,把dnssec-validation no;修改为no,应为这些域名都是自己试验随意设置的,都没有授权,不是权威域名,更谈不上在查询过程中是否加密一说和DNS 解析的请求者无法验证它所收到的应答信息的真实性。不修改为no将父域将无法解析子域的查询。

         dnssec-enable yes;
       dnssec-validation no;

    重新启动父域名服务器:# service named restart

2.在172.16.99.3主机上安装bind, bind-utils 软件包,然后进行相关的配置

a.编写named的主配置文件/etc/named.conf:编写和添加内容如下:

        options {
            listen-on port 53 { 172.16.99.3; };
            directory       "/var/named";
            dump-file       "/var/named/data/cache_dump.db";
            listen-on port 53 { 172.16.99.3; };  //监听端口和IP        
            allow-query     { 172.16.0.0/16; }; //允许此服务解析的网段
            recursion yes;允许递归查询
            dnssec-enable yes;
            dnssec-validation no;
            };
        zone "zz.zkchang.com" IN {
            type master;
            file "zz.zkchang.com.zone";
        };  //子域的区域名定义

b.添加正向解析数据库文件和编写:

        $TTL 1D        
        zz.zkchang.com. IN      SOA     ns1.zz.zkchang.com.     admin.zz.zkchang.com. (
                                2015091801
                                1H
                                5M
                                2D
                                1D)
                        IN      NS      ns1.zz.zkchang.com.
        ns1             IN      A       172.16.99.3
        www             IN      A       172.16.99.101
        ftp             IN      A       172.16.99.102

c.分别检查语法是否有误,无误启动服务。

3.测试:

a.子域测试解析:

Linux服务器--3.DNS的子域授权,转发和视图

b.父域测试解析:

Linux服务器--3.DNS的子域授权,转发和视图

4.总结:

发现测试成功,在子域授权后,子域是无法解析父域内的主机的,因为,当前区域无法解析此记录,会将此记录转发给根,而外网并没有给此区域授权,所以是无法解析的。

二.转发

通过子域授权可知,子域是不知道父域在什么地方的,当然也不能解析父域内的主机。此时用转发机制就可以完成子域转发父域内的主机。

转发机制有两种方式,一种是在NDS配置文件中全局设置,二是在DNS配置文件中的区域设置中设置。如:

        1.options {        
            .......
            forward first;  设置的转发模式为first,默认为only
            forwarders { 172.16.99.1; };
        };

only为递归请求,只是用forwarders DNS 服务器做域名解析,如果查询不到则返回DNS客户端查询失败

first:设置优先使用forwarders DNS 服务器做域名解析,如果查询不到再使用本地DNS服务器再次去查询。

        2.zone “zkchang.com” IN {        
            type forward;
            forward first;
            forwarders { 172.16.99.1; };
        };

在子域主配置文件内定义一个转发区域,当客户端要解析zkchang.com这个区域里的主机时会转发到172.16.99.1这个IP

option设置的转发机制是对全局设置的,导致所有通过子域查询其他区域的主机都会经过父域去查找请求,这样会增大父域服务器的负担,因此使用单独制定的转发区域。

实验设置如下:

在子域的主配置文件中添加如下几行并将dnssec-validation no;设置为no

            zone "zkchang.com"  {        
                type forward;
                forward first;
                forwarders { 172.16.99.1; };
            };

检查配置文件是否有误,重新加载服务,进行测试:

Linux服务器--3.DNS的子域授权,转发和视图

测试:

查看子域是否能解析父域内地的主机:

Linux服务器--3.DNS的子域授权,转发和视图

三. View

Linux DNS服务器中实现智能解析的方法为acl + view ,其中acl是访问控制列表,是将就有相同目的的IP写到一起,进行共同管理。例如,在DNS服务器中我们将允许递归查询的一些IP段,写到一个acl定义的列表中,进行统一管理。如:

Linux DNS服务器中实现智能解析的方法为acl + view ,其中acl是访问控制列表,是将就有相同目的的IP写到一起,进行共同管理。例如,在DNS服务器中我们将允许递归查询的一些IP段,写到一个acl定义的列表中,进行统一管理。如:

acl netip {

172.16.0.0/16;

10.0.0.0/8; };

options中:

options {

.......

allow-recursion { netip; };

};

Linux NDS view就是将不同的IP地址段发来的查询响应到不同的DNS解析。

view 运用的实际场景如:

获取各个运营商的IP列表

web服务器配置多个网络出口(IP

配置智能解析DNS

定义view:一旦view,多有域都必须定义在view中。

实例:一台DNS服务器,给不同网段客户端进行解析时,解析出对应的内容。如,网段172.16.0.0上的主机解析www.zkc.com网段时,会对应其网段进行解析。

实验环境,ip eth0172.16.99.1

acl INNET { 172.16.0.0/16; };  为了实验方便只是用其中的一个IP172.16.99.1

        acl OUTNET { 192.168,1.0; };  为了实验方便使用一个IP172.16.99.3

               即当在主机99.3上进行域名解析zkc.com上的主机时,会给出相对应得IP,详细过程在实验中。

a.在主配置文件/etc/named.conf配置如下:(这里只给出了正向解析)

    acl neiwang {    
            172.16.99.1; };
    acl waiwang {
            172.16.99.3; };
    options {
            listen-on port 53 { 172.16.99.1; };
    directory       "/var/named";
    allow-query     { any; };
    recursion yes;
      };
    view "INNET" {
            match-clients { neiwang; };
            recursion yes;
            zone "." IN     {
                    type hint;
                    file "named.ca"; };
            zone "zkc.com" IN {
                    type master;
                    file "zkc.com.zone1"; };
            include "/etc/named.rfc1912.zones";
            include "/etc/named.root.key";
    };
    view "OUTNET" {
            match-clients { waiwang; };
            recursion yes;
            zone "." IN {
                    type hint;
                    file "named.ca"; };
            zone "zkc.com" IN {
                    type master;
                    file "zkc.com.zone2"; };
            include "/etc/named.rfc1912.zones";
            include "/etc/named.root.key";
    };

b.在/var/named/目录下编写两个正向解析数据库文件:zkc.com.zone1  zkc.com.zone2

1.zkc.com.zone1

Linux服务器--3.DNS的子域授权,转发和视图

2.zkc.com.zone2

Linux服务器--3.DNS的子域授权,转发和视图

c.启动DNS服务,进行测试:

# service named restart

测试:

1.在ip 172.16.99.1主机上测试,会对应解析www.zkc.com 的结果为172.16.99.101:

Linux服务器--3.DNS的子域授权,转发和视图

2.在ip 172.16.99.3主机上测试,会对应解析www.zkc.com 的结果为192.168.1.3:

Linux服务器--3.DNS的子域授权,转发和视图

四.总结:

1.子域授权:

每个域的名称服务器,都是通过其上级名称服务器在解析库进行授权。

定义一个子区域:

ops.zkchang.com. IN NS ns1.ops.zkchang.com.

ops.zkchang.com. IN NS ns2.ops.zkchang.com.

ns1.ops.zkchang.com. IN A 1.1.1.1

ns2.ops.zkchang.com. IN A 1.1.1.2

2.转发

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

 

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

Options {

....

forward {first|only}

fowwarders

}

 

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

zone "ZONE_NAME" IN {

type forward;

forward {first|only}

forwarders

}

 

注意:关闭dnssec功能:

dnssec-enable no;

dnssec-validation no;

3.view视图;

一个bind服务器可定义多个view,每个view中可定义一个或多个zone

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

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

 

view VIEW_NAME {

match-clients {  };

....

zone......

}

 

注意:

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

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

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