子域授权就相当于是划片管理,是由上至下的授权。由根开始"."。
例如:.com .net 就是由根授权名称空间,其实就是由.决定要划分什么的名称空间,由它委派子名称空间。
DNS中最重要的就是NS记录,其中每个NS里面的负责人就是SOA,在父域上定义一条NS记录和一条A记录就可以完成子域授权了
 
.com IN NS wd.com.
wd.com IN A 10.10.10.1
【这就表示在.com这个片里面有一台主机叫叫wd。以后这个.com这一片就归这个wd这台主机来管理了,哪谁是这台主机呢?下面的A记录就给予很明确的答案,10.10.10.1就是管理.com这个片的这台主机】
 
前提:magedu.com这个域要对tech.magedu.com. fin.magedu.com.这两个子域完成授权, 首先得规划好这两个子域里面是由谁管理的。
注意:子域和父域没有必要在同一个网段,只要能够通信就可以了, 这里只是以正向区域的子域授权为例子。
 
在正向区域文件里面magedu.com.zone
tech.magedu.com. IN  NS dns.tech.magedu.com.
dns.tech.magedu.com.  IN A 172.16.17.1
 
fin.magedu.com. IN  NS dns.fin.magedu.com
dns.fin.magedu.com. IN  A 172.16.18.1
我们这里是授权到子域里面的一个主的服务器,如果,我这里子域里面的服务器要想还有个从的服务器,那这个从的服务器是否在互联网上能使用呢?
    答案是肯定的不能,因为当用户在查询www.tech.magedu.com.的时候.这里的服务器看到后,发现这个不是归自己这里解析的,它会把这个条目提交给跟"."根。根发现这个是.com那个片的,于是会把这个任务交给.com,之后.com发现这个又是它下面的.tech域名服务器。而.tech这里发现具体的负责人就只有172.16.17.1
如果我们想要使用这个子域当中的有多台从服务器,那么就需要给每台从服务器添加NS记录以及对应的A记录。例如ns2是从服务器
 
tech.magedu.com. IN  NS dns.tech.magedu.com.
dns.tech.magedu.com.  IN A 172.16.17.1
tech.magedu.com. IN  NS ns2.tech.magedu.com.
ns2.tech.magedu.com.  IN A 172.16.17.2
 
fin.magedu.com. IN  NS dns.fin.magedu.com
dns.fin.magedu.com. IN  A 172.16.18.1
对于远程的查询时没有主从之分的,主从服务器只是本地管理区域传送的时候有意义,当用户查询的时候,服务器这里是轮循返回信息,这种方式实现负载均衡。
 
先到主服务的正向区域文件完成区域授权
vim /var/namec/magedu.com.zone
tech.magedu.com. IN  NS dns.tech.magedu.com.
tech.magedu.com. IN  NS ns2.tech.magedu.com.
dns.tech.magedu.com.  IN A 172.16.17.1
ns2.tech.magedu.com.  IN A 172.16.17.2
 
fin.magedu.com. IN  NS dns.fin.magedu.com
dns.fin.magedu.com. IN  A 172.16.18.1
【注意在建立的时候这个从服务器ns2可不是随便写的。如果没有的话切忌不要写上去,因为服务器这里是轮循的,第一次查询的时候是有dns负责,第二次查询的时候是由ns2负责,当然第三次又有dns复制查询,如果没有ns2那么用户就不能够查询信息了】
【-----更改过文件后一定要在序列号上面加一否则从服务器是没办法同步的哦!!!-----】
同时用rndc reload也是可以通知从服务器过来同步信息的。
手动通知某一个区域过来同步信息 rndc notify magedu.com
 
配置环境
我们需要第三台主机第三台主机的IP是17.16.17.1用它来做我们的子域服务器主机名dns.tech.magedu.com 主服务器的IP 172.16.16.3,从服务器的IP 172.16.16.1
rpm -e bind-libs bind-utils 【这里我们用的就是bind97做的实验,所用卸载已经安装过的】
yum -y install bind97-libs bind97-utils bind97  【这里要保证yum源能访问或者用本地yum源】
mv /etc/named.conf /etc/named.conf.bar    【将原来的主配置文件更名,这里我们要自己建立这个文件】
vim /etc/namec.conf 【创建过程】
 
options{
        directory "/var/named";
};
zone "." IN {
        type hint;
        file "named.ca"; 【named.ca这个文件会自动生成】
};
zone "localhost" IN{
        type master;
        file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" IN {
        type master;
        file "127.0.0.zone";
};
zone "tech.magedu.com" IN {
        type master;
        file "tech.magedu.com.zone";
zone "17.16.172.in-addr.arpa" IN {
        type master;
        file "172.16.17.zone";
};
      
 
cd /var/named 
我们是在做实验为了方便,我们把这四个文件从原来的地方复制过来
scp  172.16.16.3:/var/named/localhost.zone ./【从172.16.16.3当中把原文件直接复制到当前目录下,不需要更名】
scp 172.16.16.3:/var/named/127.0.0.zone ./【从172.16.16.3当中把原文件直接复制到当前目录下,不需要更名】
scp 172.16.16.3:/var/named/magedu.zone ./tech.magedu.zone 【从172.16.16.3当中把原文件直接复制到当前目录下,并且更名为tech.magedu.zone】
scp 172.16.16.3:/var/named/172.16.zone ./172.16.17.zone
【从172.16.16.3当中把原文件直接复制到当前目录下,并且更名为tech.magedu.zone】
chmod 640 /named.conf
chown :named /etc/named.conf
 
【tech.magedu.com.zone和172.16.17.zone这两个文件我们需要修改】
 
vim tech.magedu.zone
$TTL 86400
$ORIGIN tech.magedu.com.
@       IN      SOA     wd.tech.magedu.com.  admin.tech.magedu.com. (
                        2012102001
                        2H
                        10M
                        11D
                        1D)
        IN      NS      wd
        IN      NS      ns1
        IN NS ns2
IN      MX 10   mail
ns2     IN      A       172.16.17.5
wd      IN      A       172.16.17.1
ns1     IN      A       172.16.17.3
mail    IN      A       172.16.17.2
www     IN      A       172.16.17.1
ftp IN CNAME www
 
 
vim 172.16.17.zone
$TTL 86400
$ORIGIN 17.16.172.in-addr.arpa.
@       IN      SOA     wd.tech.magedu.com.  admin.tech.magedu.com. (
                        2012102001
                        2H
                        10M
                        11D
                        1D
                        )
                IN      NS      wd.tech.maged.com.
                IN      NS      ns1.tech.magedu.com.
IN NS ns2.tech.magedu.com.
1            IN      PTR     wd.tech.magedu.com.
1            IN      PTR     www.tech.magedu.com.
3            IN      PTR     ns1.tech.magedu.com.
2            IN      PTR     mail.tech.magedu.com.
5            IN      PTR     ns2.tech.magedu.com.
 
好了我们的文件已经准备好了,现在检查下是否有语法错误
named-checkconf
named-checkzone "tech.magedu.com" tech.magedu.com.zone
named-checkzone "17.16.172.in-addr-arpa" 172.16.17.zone
 
启动服务
service named start
 
测试
dig -t A www.tech.magedu.com @127.0.0.1 【测试是否可以进行子域解析】
dig -t A www.magedu.com @127.0.0.1 【测试是否可以解析父域】
【经测试发现是无法解析父域的,因为当接到这个查询的时候它会转发给跟"."经过根查询,但是我们并没有联网,所以无法查询。即使我们联网了我们也是没办法查询的,因为我们授权的子域,和"."授权的子域是不一样的,这个在根那里并不承认。因为不是它授权的嘛!】
【当然了如果发现不是自己负责的域,但是我们还想查询怎么办呢?当然就是转发给父域咯】
 编辑当前主机(172.16.17.1)的主配置文件定义转发
 注意这里的forward是有两个参数
 forward fist 递归转发(转发的目标服务器如果没有响应,则自己再到跟服务器发起迭代查询) 
 forward only (仅向目标主机寻求结果,如果目标主机解析不到结果,就认为查询不到结果)
 很显然我们这里使用only,因为fist对于我们来说并没有意义(要记得我们是自己授权的啊)
 
  vim /etc/named.conf
options{
        directory "/var/named";
forward only 【定义转发咯】
forwards { 172.16.16.3; 172.16.16.1; }; 【只向这两台服务器转发】
};
 zone "." IN {
        type hint;
        file "named.ca";
};
zone "localhost" IN{
        type master;
        file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" IN {
        type master;
        file "127.0.0.zone";
};
zone "tech.magedu.com" IN {
        type master;
        file "tech.magedu.com.zone";
zone "17.16.172.in-addr.arpa" IN {
        type master;
        file "172.16.17.zone";
}; 
 
检查主配置文件是否有错误named-checkconf
重启服务service named restart
 
然后再次做测试,此时已经可以解析父域了
dig -t A www.magedu.com @127.0.0.1 
 
以上我们做的是只要不是当前服务器负责的域,都会转发给172.16.16.3和172.16.16.1了,那如果这两台主机也没有联网了呢?那不就没有办法了嘛!所以啊我们也只是把属于父域查询范围的转发给父域,改进一下以上的做法。修改主配置文件。
  vim /etc/named.conf
options{
        directory "/var/named";
};
 zone "." IN {
        type hint;
        file "named.ca";
};
zone "localhost" IN{
        type master;
        file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" IN {
        type master;
        file "127.0.0.zone";
};
zone "tech.magedu.com" IN {
        type master;
        file "tech.magedu.com.zone";
};
zone "17.16.172.in-addr.arpa" IN {
        type master;
        file "172.16.17.zone";
};
 
zone "magedu.com" IN {
        type forward;
        forward only;
forwards { 172.16.16.3; 172.16.16.1; };  
};
zone "16.16.172.in-addr.arpa" IN {
        type forward;
        forward only;
forwards { 172.16.16.3; 172.16.16.1; };
};
 
检查主配置文件是否有错误named-checkconf
重启服务service named restar