一、DNS服务器子域授权的实现

   通常自己架设DNS服务器给自己使用的公司都是内部有特殊需求,或者公司内部域名较多,为了方便以后的管理而架设。我们知道一个域名就是一个区域,一般每个区域都会有专人负责管理,当一个公司人员足够多时,这时就会有划分子域给下级部门管理的需求。在一个区域下划分子域,并给子域指定一个新的DNS服务器,这种方法是可以实现的,我们通常称这种划分子区域的方法为子域授权。


实例:给wubinary.com域名划分一个blog.wubinary.com的子域。bind的安装配置及主DNS服务器的架设不再此讨论

1、首先架设一个主DNS服务器,编辑/var/named/wubinary.com.zone文件,主DNS服务器的IP为192.168.0.6,资源记录数据文件如下:

$TTL 600
@   IN  SOA dns.wubinary.com. dnsadmin.wubinary.com. (
            2014031203
            2H
            4M
            1D
            2D )
@   IN  NS  dns.wubinary.com.
@   IN  NS  ns2.wubinary.com.
@   IN  MX  10  mail.wubinary.com.
dns IN  A   192.168.0.6
mail    IN  A   192.168.0.12
www     IN  A   192.168.0.48
ns2 IN  A   192.168.0.80
blog.wubinary.com.  IN  NS  dns.blog.wubinary.com.
dns.blog.wubinary.com.  IN  A   192.168.0.2

注意,以上最后两行为子域的DNS服务器,只要在主DNS服务器定义好了子域的DNS服务器就等于给子域授权了。


2、然后在回到子域的服务器,192.168.0.2上配置子域区域。打开/etc/named.rfc1912.zones文件,在最末尾定义子域的区域。

zone "blog.wubinary.com" IN {
        type master;
        file "blog.wubinary.com.zone";
};


3、接着再定义子域DNS服务器的资源记录文件,/var/named/blog.wubinary.com.zone。

$TTL 600
@   IN  SOA dns.blog.wubinary.com. dnsadmin.blog.wubinary.com. (
                        2014031201
                        1H
                        5M
                        3D
                        1D )
@   IN  NS  dns.blog.wubinary.com.
dns IN  A   192.168.0.2
www IN  A   192.168.0.78
ftp IN  A   192.168.0.23


4、重新启动两边的DNS服务,测试一下子域授权是否成功。

主域机器测试:

DNS服务器(三):子域授权及转发


DNS服务器(三):子域授权及转发


子域机器测试:

DNS服务器(三):子域授权及转发


测试正常,操作成功!


二、DNS服务器域名解析转发

   DNS转发的意义在于,定向查询,一台DNS服务器在获取到查询请求时,自己不尝试解析域名,而转发查询请求给指定的DNS服务器实现此次解析操作。假设,我们现在碰到这么一种情况,我们的DNS服务器是处在一个内网的网段,与外网不能直接通信,在这个局域网中唯一一个能和外网通信的是路由器或者其它的DNS服务器。那么如果我们想要实现通过这台局域网的DNS服务器查询解析外网的域名,就要用到转发的功能了。

转发可以用参数forwarders和forward实现:

forwarders { IP_ADDR1; IP_ADDR; ...};
forward { only|first };

参数说明:

   forwarders:用于定义转发的服务器的IP地址,可以写多个,用分号隔开。

   forward:用于定义转发的操作,only为只作转发操作,有结果则返回结果,没有结果则什么操作也不作;first为先作转发操作,如果没有结果则去递归查找。

全局和区域:

   这两个参数可以放在全局定义,也可放在区域定义,也可以两个同时使用,但不管怎样,放在区域的优先权更高。如果用于特定区域则把转发定义在区域内,如果用于全局,则把转发定义在全局。


转发实例:让上面的区域wubinary.com可以实现解析外网的域名。

1、区域wubinary.com所设的DNS服务器为局域网的IP地址,不可以解析外网域名。

DNS服务器(三):子域授权及转发


2、由上图可以看出wubinary.com区域不能解析51cto.com的NS记录,我们添加一个转发功能。

编辑/etc/named.conf文件,添加转发ip 192.168.0.1

DNS服务器(三):子域授权及转发


3、修改完成后,重启服务,测试一下,可以解析了,转发成功!

DNS服务器(三):子域授权及转发


说明:有的时候,如果我们事先已经知道了某个区域DNS服务器的地址,为了不让当前DNS服务器向根查询结果,那么我们就可以直接使用转发,向当前DNS服务器指定一个地址,让它查询直接向这个地址请求,这样做的好处能明显的提高响应速度。


三、DNS中的访问控制列表

   有的时候我们须要在DNS配置文件中指定n个IP地址,如果全都写在一起的话,每块地方都要写一次,那么相当麻烦,如果使用一个参数定义那一片的IP地址,那么管理起来就相当方便了,这个就是DNS中的ACL,bind支持的访问控制表。

格式:

acl ACL_NAME {
    172.16.0.0/16;
    192.168.0.0/24
    127.0.0.0/8;
    ...
    ...
};

在全局选项中定义ACL,给每个ACL取一个名字,这样以后每次引用,只须在填定IP地址的地方填写那个变量就行了。在bind中有几个事先定义好的ACL:

any: 任何主机
none: 无一主机
local: 本机
localnet: 本机的所在的网络