DNS子域授权、view配置详解

子域授权:其实就是将一个比较大的域再分割成小区域,每个小区域可以交由一组或多组服务器管理,这些服务器只解析其管辖范围内的域名,超出其范围的解析请求一般会转发给父域或直接转发给根域。子域是相对而言的,对于根来说顶级域名就是它的子域,依次类推,我们这里讲提到的子域授权是针对二级域名来说的,也就是三级域名授权。

       正向区域的子域授权:使用胶水记录(glue record),也就是在父域中添加一条NS记录和一条A记录即可。如果客户端的请求超出子域的解析范文,那么我们就需要定义转发服务器。

     定义转发服务器:

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

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

                            Options {

                                   forward {first|only}

                                   fowwarders

                            }

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

                            zone "ZONE_NAME" IN {

                                   type forward;

                                   forward {first|only}

                                   forwarders

                            }

配置子域授权:

1、在父DNS服务器的区域解析库中添加如下几条记录

[root@bogon named]# vim czcedu.com.zone

23 ops     IN      NS      ns1.ops

 24 ops     IN      NS      ns2.ops

 25 ns1.ops IN      A       192.168.1.107

 26 ns2.ops IN      A       192.168.1.108

       2、在子域DNS服务器的区域文件中添加子域定义

              [root@bogon ~]# vim /etc/named.rfc1912.zones

60 zone "ops.czcedu.com." IN {

 61         type master;

 62         file "ops.czcedu.com.zone";

 63 };

       3、编辑子域服务器的区域解析库文件

[root@bogon named]# vim ops.czcedu.com.zone

 

  1 $TTL 1d

  2 $ORIGIN ops.czcedu.com.

  3 @       IN      SOA     ns1.ops.czcedu.com.     admin.ops.czcedu.com. (

  4                         2015042701

  5                         1H

  6                         10M

  7                         1W

  8                         1D )

  9         IN      NS      ns1

 10         IN      NS      ns2

 11 ns1     IN      A       192.168.1.107

 12 ns2     IN      A       192.168.1.108

 13 www     IN      A       172.16.200.1

 14 mail    IN      CNAME   www

 15 ops.czcedu.com  A       192.168.1.107

 16 *       IN      A       192.168.1.107

[root@bogon named]# dig -t A www.ops.czcedu.com @192.168.1.107   #测试子域解析是否正确 这里在父域和子域解析都是正确的

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -t A www.ops.czcedu.com @192.168.1.107

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31108

;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:

;www.ops.czcedu.com.        IN   A

;; ANSWER SECTION:

www.ops.czcedu.com.  86400    IN   A     172.16.200.1

;; AUTHORITY SECTION:

ops.czcedu.com.           86400    IN   NS  ns1.ops.czcedu.com.

ops.czcedu.com.           86400    IN   NS  ns2.ops.czcedu.com.

;; ADDITIONAL SECTION:

ns1.ops.czcedu.com.    86400    IN   A     192.168.1.107

ns2.ops.czcedu.com.    86400    IN   A     192.168.1.108

;; Query time: 5 msec

;; SERVER: 192.168.1.107#53(192.168.1.107)

;; WHEN: Fri Apr 24 13:02:47 2015

;; MSG SIZE  rcvd: 120

       4、在子域服务器中添加转发服务器将对父域的解析请求转发给父域服务器

[root@bogon named]# vim /etc/named.conf

44 zone "czcedu.com" IN {

 45         type forward;

 46         forward only;

 47         forwarders { 192.168.1.108; };

 48 };

       5、测试解析父域成功

     Bind中基础的安全相关的配置:

              acl: (访问控制列表)把一个或多个地址归并为一个集合,并通过一个统一的名称调用;

                     acl acl_name {

                            ip;

                            ip;

                            net/prelen;

                     };

                     示例:

                            acl mynet {

                                   172.16.0.0/16;

                            }

                     bind有四个内置的acl:

                            none: 没有一个主机;

                            any: 任意主机;

                            local: 本机;

                            localnet: 本机的IP同掩码运算后得到的网络地址

       Bind中的view实现:

       View的主要作用是将来自不同网络的主机分发到不同网段的服务器上,以提高访问速度降低服务器压力。就以我们国家情况为例,电信和网通用户之间的访问带宽是非常小的,但是它们内部的访问带宽却非常大,所以我们可以将对同一域名的访问通过DNS分发到不同的IP之上,那么就可以实现电信用户访问电信的服务器,联通用户访问联通的服务器,这甚至也是CDN(内容分发网络)的一种解决方法,但是CDN还可以实现将对同一域名的访问只解析到一个IP之上,但是拥有这个IP的服务器不做任何内容的反馈,只是将来自不同区域的IP调度到不同区域的缓存服务器上,这样可以实现高并发高速率的响应用户请求,后续的博客中也会提到。

       配置view:

1、 在DNS服务器中定义acl

2、 定义区域文件view

[root@bogon named]# vim /etc/named.rfc1912.zones

13 view internel {    #定义内网访问策略

 14         match-clients { mynet; };

 15         allow-recursion { mynet; };  #仅允许内网做递归请求

 16

 17 zone "." IN {            #可以做递归请求的网段才需要根提示

 18         type hint;

 19         file "named.ca";

 20 };

 21

 22 zone "localhost.localdomain" IN {

 23         type master;

 24         file "named.localhost";

 25         allow-update { none; };

 26 };

 27

 28 zone "localhost" IN {

 29         type master;

 30         file "named.localhost";

 31         allow-update { none; };

 32 };

 33

 34 zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {

 35         type master;

 36         file "named.loopback";

 37         allow-update { none; };

 38 };

 39

 40 zone "1.0.0.127.in-addr.arpa" IN {

 41         type master;

 42         file "named.loopback";

 43         allow-update { none; };

 44 };

 45

 46 zone "0.in-addr.arpa" IN {

 47         type master;

 48         file "named.empty";

 49         allow-update { none; };

 50 };

62

 63 zone "czcedu.com." IN {

 64         type master;

 65         file "czcedu.com.zone";       #定义内网解析库文件

 66         allow-update { none; };

 67 };

74 };

 75

 76 view internet {  #定义外网视图

 77         match-clients { internet;};

 78         allow-recursion { none; };    #不可做递归请求

 79

 80 zone "czcedu.com." IN {

 81         type master;

 82         file "czcedu.com.internet";  #定义外网解析库文件

 83         allow-update { none; };

 84 };

 85 };

3、 创建两个解析库文件

4、 从不同客户端发出的DNS查询请求返回不同的IP

       好了,到此为止我们DNS服务器的应用就告一段落了,如有错误敬请指正。