Dns委派

现在有许多大公司下面有许多小公司,他们可能分布世界各地,这时就根据地理位置需要得配置许多dns了,但是整个公司会有一个主要得主域dns,及很多的子域,他们起到了对各个区域内的分别管理
下面我们分别通过windowslinux两种平台来实现:
一、我们首先使用linux平台做父域,windows平台做子域,通过下面的实例来实现下
 

(1) 首先我们做区域的声明,编译/var/named/chroot/etc/named.rfc1912.zones
添加:
zone "ll.com" IN {                             声明父域
        type master;
        file "ll.com.db";
        allow-update { none; };      
};
zone "bj.ll.com" IN {                  声明上海子域
        type master;
        file "bj.ll.com.db";
        allow-update { none; };
};
(2) /var/named/chroot/var/named目录下分别为两个域生成数据库文件,然后编译
[root@localhost named]# cp -p abc.com.db ll.com.db
[root@localhost named]# cp -p abc.com.db bj.ll.com.db
编译ll.com.db
$TTL 86400
@ IN SOA ns.ll.com.       testlt.126.com. (
45 ; serial (d. adams)
2M ; refresh
1M ; retry
1W ; expiry
1D ) ; minimum
        IN NS ns.ll.com.
ns IN A 192.168.20.88
www IN A     1.1.1.1
编译bj.ll.com.db
$TTL 86400
@ IN SOA ns.bj.ll.com.       testlt.126.com. (
45 ; serial (d. adams)
2M ; refresh
1M ; retry
1W ; expiry
1D ) ; minimum
        IN NS ns.bj.ll.com.
ns IN A 192.168.20.88
www IN A     2.2.2.2
做完之后,重读去下,rndc  reload
3)授权,在父域的数据库文件中做为上海子域授权
编译ll.com.db
$TTL    86400
@               IN SOA  ns.ll.com.       testlt.126.com. (
                                        45              ; serial (d. adams)
                                        2M              ; refresh
                                        1M              ; retry
                                        1W              ; expiry
                                        1D )            ; minimum
                IN NS           ns.ll.com.
ns              IN A            192.168.20.88
www             IN A            1.1.1.1
sh.ll.com.      IN NS           ns.sh.ll.com.       (添加最后这两行授权上海子域)
ns.sh.ll.com.   IN A            192.168.20.77
(4) 配置上海子域:
 

 
(5) 配置完成之后,我们测试,各个域的dns服务器都能解析到该域定义的域名,
且父域的dns能解析到所有子域的域名,但是子域之间解析就不能直接解析了。
所以我们需要做子域的转发器,我们可以把在一个子域中的对令一个子域的或者所有域的请求直接转发个父域,然后父域在返回结果;那样能查到其他子域了。步骤如下:
 

 

然后就可以顺利的解析其他子域的了!!!
二、我们再试试,用windows平台做父域,用linux平台做子域,具体实现如下:
 

(1) windows环境下,配置父域及所管辖的北京子域;
 

 

 

 

 
 
(2) linux环境下作上海子区域;
首先为上海区域做声明:编译/var/named/chroot/etc/named.rfc1912.zones
zone "sh.qq.com" IN {
        type master;
        file "sh.qq.com";
        allow-update { none; };
};
/var/named/chroot/var/named目录下为该域生成数据库文件,然后编译
[root@localhost named]# cp -p abc.com.db  sh.qq.com.db
[root@localhost named]# vim sh.qq.com.db 
$TTL    86400
@               IN SOA  ns.sh.qq.com.       testlt.126.com. (
                                        45              ; serial (d. adams)
                                        2M              ; refresh
                                        1M              ; retry
                                        1W              ; expiry
                                        1D )            ; minimum
                IN NS           ns.sh.qq.com.
ns              IN A            192.168.20.88
www             IN A            3.3.3.3
做转发器:
1. 无条件转发器(将所有该dns服务器不能解析的域名都转发到指定的服务器上,让它来解析并告知自己)
编译/var/named/chroot/etc/named.conf
options {
        listen-on port 53 { any; };
        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     { any; };
         forwarders     { 192.168.20.77; };   (添加转发到服务器地址)
        };
这种无条件转发器的做法有很大弊端,那就是增加的目标服务器的负载,转发给它并不一定是最佳选择,我们可以把属于它管辖的域,转发给它,属于另一类的转发给其他的
2. 有条件转发器
首先声明一个到ll.com的都坐转发 编译:/var/named/chroot/etc/named.rfc1912.zones 
zone "ll.com" IN {
        type forward;    设置为转发类型
        forwarders { 192.168.20.77; };   转发到的服务器地址
};
做完之后重新读取一下,就可以实现指向该父域的及其其他子区域的就会转发到指定服务器上进行解析