本节我将分别对DNS的子域授权、DNS配置转发器、DNS配置转发区域以及DNS的view进行讲解,本节本来是想跟上一节内容一起讲解的,但是由于字数问题我就又分了单独一节来讲。
实验环境:Centos6.5x86_64
主DNS服务器 ns.magedu.com 172.16.6.20
子DNS服务器 ns.sub.magedu.com 172.16.6.50
子域授权(这里只讲解正向解析)
子域授权,顾名思义就是在一个域的基础上又创建子域,当然这个子域必须在父域中进行声明,下面我们就来看下他是怎么实现的。
父域中配置
首先得在父域的解析库文件中添加子域的NS记录以及A记录
[root@localhost ~]# vim /var/named/magedu.com.zone $TTL 3600 @ IN SOA ns.magedu.com. admin.magedu.com ( 2014080609 版本每次务必改 1H 10M 7D 1D ) IN NS ns IN NS ns2 sub IN NS ns.sub 添加子域服务器的NS记录 IN MX 10 mail ns IN A 172.16.6.20 ns2 IN A 172.16.106.20 ns.sub IN A 172.16.6.50 添加子域服务器的A记录 mail IN A 172.16.6.21 www IN A 172.16.6.22 web IN CNAME www
还是版本的问题,每次修改之后必须得改。
子域服务器配置
子域服务器中的/etc/named.conf文件还是跟父域中的一样,只要是修改/etc/named.rfc1912.zones
[root@localhost ~]# vim /etc/named.rfc1912.zones // named.rfc1912.zones: // // Provided by Red Hat caching-nameserver package // // ISC BIND named zone configuration for zones recommended by // RFC 1912 section 4.1 : localhost TLDs and address zones // and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt // (c)2007 R W Franks // // See /usr/share/doc/bind*/sample/ for example named configuration files. // zone "localhost.localdomain" IN { type master; file "named.localhost"; allow-update { none; }; }; zone "localhost" IN { type master; file "named.localhost"; allow-update { none; }; }; 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 { type master; file "named.loopback"; allow-update { none; }; }; zone "1.0.0.127.in-addr.arpa" IN { type master; file "named.loopback"; allow-update { none; }; }; zone "0.in-addr.arpa" IN { type master; file "named.empty"; allow-update { none; }; }; 新添加一条 zone "sub.magedu.com" IN { type master; file "sub.maedu.com.zone"; };
配置好之后检查语法
[root@localhost ~]# named-checkconf
配置子域服务器中的解析库文件
[root@localhost ~]# vim /var/named/sub.magedu.com.zone $TTL 3360 @ IN SOA sub.magedu.com. admin.magedu.com. ( 注意子域的名称 2014080601 1H 10M 1W 2D ) IN NS ns IN MX 10 mail ns IN A 172.16.6.50 www IN A 172.16.6.52 mail IN A 172.16.6.51
配置好之后别忘了语法检查
[root@localhost ~]# named-checkzone "sub.magedu.com" /var/named/sub.magedu.com.zone zone sub.magedu.com/IN: loaded serial 2014080601 OK
确认无误之后就可以进行重新加载了
[root@localhost ~]# rndc reload server reload successful
配置好之后就可以进行测试了
对www.sub.magedu.com 进行测试,结果返回正确结果172.16.6.52
这样一个子域授权就正式完成了并且可以运行了。
DNS配置转发器
下面我们用DNS来配置一个转发器,一旦该服务器本身不能解析,则器会将请求转发给转发器指向的服务器进行解析。
这里我们就对子域服务进行配置转发功能。
转发器的设置非常简单,只需要对/etc/named.conf进行配置
[root@localhost ~]# vim /etc/named.conf 只需要对options进行修改 options { //listen-on port 53 { 127.0.0.1; }; //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 { localhost; }; recursion yes; forward only; 注意格式:这里的only表示转发后无论返回什么答案都选择相信 forwarders { 172.16.6.20; }; 设置转发的服务器 //dnssec-enable yes; //dnssec-validation yes; //dnssec-lookaside auto; /* Path to ISC DLV key */ //bindkeys-file "/etc/named.iscdlv.key"; };
配置完成不要忘记重读配置文件
[root@localhost ~]# rndc reconfig
好了,下面我们来测试一下
我们选择对www.magedu.com进行测试,他不属于子域服务器的管辖范围
测试成功,返回正确值172.16.6.22
DNS配置转发区域
我们不但可以配置转发,而且还可以控制想要转发的区域。
[root@localhost ~]# vim /etc/named.rfc1912.zones 加入一个zone zone "magedu.com" IN { type forward; forward only; forwarders { 172.16.0.1; };为了实验更加直观,这里我们选择一台可以上网的主机 };
配置后重读配置文件
[root@localhost ~]# rndc reconfig
配置成功后进行测试。
在测试之前,这里我们对这个转发区域的意思进行解释,当所查询的地址属于magedu.com.域时,则会将该地址发给172.16.0.1去解析,如果172.16.0.1无法解析,则选择相信,不再查询;如果所查地址不属于该域,则不给于转发,让服务器自己去迭代查询。由于本服务器没有连接网络,而转发后的服务器172.16.0.1能上外网。所以要是我们以www.baidu.com和www.magedu.com为例,理论上来说结果应该是www.baidu.com无法查询到结果,而www.magedu.com能够查询到结果。我们来验证一下。
第一个www.baidu.com无法查询到结果,验证无误,OK。
第二个结果能够得到结果122.10.114.6,验证无误,也OK。
这样,区域转发的功能我们就完成了。
view视图功能
我们知道网通和电信之间进行相互访问速度比较慢,那是因为每一次相互访问都会经过北京的一个机房中唯一的一个通信机房,而带宽是非常有限,因此为了避免没有意义的相互访问,这里我们就引入了view的概念,即脑裂。
下面我们就来配置下:
需要注意的是在写视图时,所有的zone都必须在view里面,所有要把/etc/named.conf里的根的zone也要放到view里去。
[root@localhost ~]# vim /etc/named.rfc1912.zones // // ISC BIND named zone configuration for zones recommended by // RFC 1912 section 4.1 : localhost TLDs and address zones // (c)2007 R W Franks // // See /usr/share/doc/bind*/sample/ for example named configuration files. // acl mwjnet { 172.16.0.0/16; 为了实验更加直观,这里就只对172.16网段的地址进行控制 }; 这里创建一个访问控制列表 view local { match-clients { mwjnet; }; view调用控制列表mwjnet zone "." IN { type hint; file "named.ca"; }; zone "localhost.localdomain" IN { type master; file "named.localhost"; allow-update { none; }; }; zone "localhost" IN { type master; file "named.localhost"; allow-update { none; }; }; type master; file "named.loopback"; allow-update { none; }; }; zone "1.0.0.127.in-addr.arpa" IN { type master; file "named.loopback"; allow-update { none; }; }; zone "0.in-addr.arpa" IN { type master; file "named.empty"; allow-update { none; }; }; zone "sub.magedu.com" IN { type master; file "sub.magedu.com.zone"; 这里文件中定义了www.sub.magedu.com.指向的地址为 }; 172.16.6.52 zone "magedu.com" IN { type forward; forward only; forwarders { 172.16.6.20; }; }; }; view tel { match-clients { any; }; zone "sub.magedu.com" IN { type master; file "magedu.com.2"; 这里文件中定义了www.sub.magedu.com. 指向的地址为 }; 为2.3.4.5 };
配置完成之后先检测语法
[root@localhost ~]# named-checkconf
生成相应的解析库文件,这里只须生成/var/named/magedu.com.2
$TTL 3360 @ IN SOA sub.magedu.com. admin.magedu.com. ( 2014080701 1H 10M 1w 3D ) IN NS ns ns IN A 172.16.6.50 www IN A 2.3.4.5
检测语法并重新加载
当然还要修改权限以及数组,这里我就没有附上操作了
[root@localhost ~]# named-checkzone "sub.magedu.com" /var/named/magedu.com.2 zone sub.magedu.com/IN: loaded serial 2014080701 OK [root@localhost ~]# rndc reload server reload successful
下面就可以进行测试了需要注意的是为了方便测试,我对服务器设置了IP别名,192.168.1.23和172.16.6.50都是指该服务器。
用192网段的地址主机
结果为2.3.4.5
当用172.16网段的主机时
得到的地址为172.16.6.52
这样结果就跟我们预想的一样,不同的网段去到同一个服务器上找到的地址不同,这样我们的视图功能就已经完成并且可以使用。
本节的内容就讲到这里了,讲的不好的地方希望大家多提建议,不对的地方非常欢迎指正,谢谢!