子域授权:其实就是将一个比较大的域再分割成小区域,每个小区域可以交由一组或多组服务器管理,这些服务器只解析其管辖范围内的域名,超出其范围的解析请求一般会转发给父域或直接转发给根域。子域是相对而言的,对于根来说顶级域名就是它的子域,依次类推,我们这里讲提到的子域授权是针对二级域名来说的,也就是三级域名授权。
正向区域的子域授权:使用胶水记录(glue record),也就是在父域中添加一条NS记录和一条A记录即可。如果客户端的请求超出子域的解析范文,那么我们就需要定义转发服务器。
定义转发服务器:
注意:被转发的服务器需要能够为请求者做递归,否则,转发请求不予进行;
(1) 全部转发: 凡是对非本机所有负责解析的区域的请求,统统转发给指定的服务器;
Options {
forward {first|only}
fowwarders
}
(2) 区域转发:仅转发对特定的区域的请求至某服务器;
zone "ZONE_NAME" IN {
type forward;
forward {first|only}
forwarders
}
配置子域授权:
1、在父DNS服务器的区域解析库中添加如下几条记录
[[email protected] 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服务器的区域文件中添加子域定义
[[email protected] ~]# vim /etc/named.rfc1912.zones 60 zone "ops.czcedu.com." IN { 61 type master; 62 file "ops.czcedu.com.zone"; 63 };
3、编辑子域服务器的区域解析库文件
[[email protected] 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
[[email protected] 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.INA ;; ANSWER SECTION: www.ops.czcedu.com.86400INA172.16.200.1 ;; AUTHORITY SECTION: ops.czcedu.com.86400INNSns1.ops.czcedu.com. ops.czcedu.com.86400INNSns2.ops.czcedu.com. ;; ADDITIONAL SECTION: ns1.ops.czcedu.com.86400INA192.168.1.107 ns2.ops.czcedu.com.86400INA192.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、在子域服务器中添加转发服务器将对父域的解析请求转发给父域服务器
[[email protected] 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:
- 在DNS服务器中定义acl
- 定义区域文件view
[[email protected] 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服务器的应用就告一段落了,如有错误敬请指正。