一、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服务器查询解析外网的域名,就要用到转发的功能了。
转发可以用参数forwarders和forward实现:
forwarders { IP_ADDR1; IP_ADDR; ...}; forward { only|first };
参数说明:
forwarders:用于定义转发的服务器的IP地址,可以写多个,用分号隔开。
forward:用于定义转发的操作,only为只作转发操作,有结果则返回结果,没有结果则什么操作也不作;first为先作转发操作,如果没有结果则去递归查找。
全局和区域:
这两个参数可以放在全局定义,也可放在区域定义,也可以两个同时使用,但不管怎样,放在区域的优先权更高。如果用于特定区域则把转发定义在区域内,如果用于全局,则把转发定义在全局。
转发实例:让上面的区域wubinary.com可以实现解析外网的域名。
1、区域wubinary.com所设的DNS服务器为局域网的IP地址,不可以解析外网域名。
2、由上图可以看出wubinary.com区域不能解析51cto.com的NS记录,我们添加一个转发功能。
编辑/etc/named.conf文件,添加转发ip 192.168.0.1
3、修改完成后,重启服务,测试一下,可以解析了,转发成功!
说明:有的时候,如果我们事先已经知道了某个区域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: 本机的所在的网络