在现实生活中我们世界互联网中的每个主机并不是在同一个域内,而是通过不同的依据将将其划分到不同的“小域”中,犹如一个倒立的树状结构,由一点出发,一层层的向下分成了多个分支,而这些分支就是其上级域的子域,其上级域就是相对的父域,子域是从父域中划出来的一个域,子域中的主DNS服务器负责这个子域中的地址解析,从而减轻了父域中DNS服务器的压力,这不仅提高了解析服务的效率,同样也提高了解析服务的稳定性,此文,我们就来学习怎样给一个域划分出一个子域,并让这个子域中的DNS服务器能够进行子域中的域名解析服务,这个过程也叫做子域授权。
本次实验我们依然在上次实验的基础上进行,声明一个名为cwlinux.com的域,从cwlinux.com这个域中划分出一个子域test.cwlinux.com,
一、子域授权
(本处只讲解子域在主DNS的划分,从DNS与主DNS相同)
1.在父域cwlinux.com中声明子域test.cwlinux .com
编辑cwlinux.com的文件cwlinux.com.zone 在最后一行加入如下内容;
2.创建子域的主配置文件
编辑 /etc/named.rfc1912.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 "cwlinux.com" IN { type master; file "cwlinux.com.zone"; allow-transfer { 192.168.1.11; }; allow-update { none; }; }; zone "1.168.192.in-addr.arpa" IN { type master; file "192.168.1.zone"; allow-transfer { 192.168.1.11; }; allow-update { none; }; }; 添加下面一条记录 zone "test.cwlinux.com" IN { type master; file "test.cwlinux.com.zone"; allow-update { none; }; };
3、创建子域的区域文件(这里只介绍正向解析,反向解析基本相同)
创建正向区域文件test.cwlinux.com.zone
vim /var/named/test.cwlinux.com.zone,内容如下:
4、重启服务,进行测试
将主机DNS服务器指向自己
修改/etc/resolv.conf
设置nameserver 192.168.1.10
service named restart
正向解析测试,出现如下图所示则为正确;
二、DNS转发功能
我们的DNS在本地指定的DNS找不到解析后,会直接向跟发起请求,为了使根的负载变小,我们可以设置请求转发。
1. 在/etc/named.conf中可以在options段中使用forwarders和forward指令设置DNS转发:
转发格式:
forwarders {
DNS_IP_1;
DNS_IP_2;
};
forwarders指令用于设置将DNS请求转发到哪个服务器,可以指定多个服务器的IP地址。
forward
forward first | only;
forward指令用于设置DNS转发的工作方式:
forward first设置优先使用forwarders DNS服务器做域名解析,如果查询不到再使用本地DNS服务器做域名解析。
forward only设置只使用forwarders DNS服务器做域名解析,如果查询不到则返回DNS客户端查询失败。
测试www.163.com
转发某特定区域:
编辑 /etc/named.rfc1912.zones
zone "特定区域" IN {
type forward;
forwarders { IP; }
forward only|first;
}
上面如果设置 forwaed only,那就会解析失败,因为192.168.1.11DNS中没这个域名,返回失败信息,如下图
四、智能DNS(DNS View):
我们知道网通和电信之间进行访问速度比较慢,现在架设服务器一般都是双线的,我们经过DNS的设置,让DNS自动识别客户端IP是网通的还是电信的,网通就访问网通的服务器电信就访问电信的服务器。这里我们假设网通属于192.168.1.0/24这个网段,电信属于172.16.0.0/16这个网段的
4.1 首先定义访问控制
访问控制列表只有定义后才能使用,通常acl要定义在named.conf的最上方
vim /etc/named.conf
4.2 针对不同的IP范围定义DNS视图
vim /etc/named.conf
acl telecom { 172.16.0.0/16; }; // 电信网段用户 acl unicom { 192.168.1.0/24; }; //联通网段用户 options { // listen-on port 53 { any; }; // 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 { any; }; recursion yes; forwarders { 192.168.1.1; 192.168.1.5; }; forward first; // dnssec-enable yes; // dnssec-validation yes; // dnssec-lookaside auto; /* Path to ISC DLV key */ // bindkeys-file "/etc/named.iscdlv.key"; // managed-keys-directory "/var/named/dynamic"; }; view telecom { match-clients { telecom; }; //声明只允许电信用户查询 recursion yes; //允许递归查询 include "/etc/named.rfc1912.zones";//调用的区域文件zone }; view unicom { match-clients { unicom; }; //声明只允许联通用户查询 recursion yes; //允许递归查询 include "/etc/named.unicom.zones"; //调用的区域文件zone }; view default { match-clients { any; }; //默认其他网段的用户 recursion yes; //允许递归查询 include "/etc/named.rfc1912.zones"; //调用的区域文件zone }; logging { channel default_debug { file "data/named.run";
4.3 配置区域文件
vim /etc/named.rfc1912.zones
添加cwview.com 测试域
创建联通网段的区域文件 /etc/named.unicom.zones
[root@localhostcw ~]# cp -p /etc/named.rfc1912.zones /etc/named.unicom.zones
修改其属组 为named
编辑/etc/named.unicom.zones中的cwview.com域的正向解析文件地址
4.4 创建telecom.cwview.com.zone 和unicom.cwview.com.zone
在/var/named/目录下创建联通,电信的正向解析文件
电信:telecom.cwview.com.zone内容如下
$TTL 600 @ IN SOA dns.cwview.com. dnsadmin.cwview.com. ( 2014031401 6H 30M 15D 3D ) IN NS dns IN MX 10 mail dns IN A 172.16.2.130 mail IN A 172.16.2.131 www IN A 172.16.2.132
联通:unicom.cwview.com.zone 内容如下
$TTL 600 @ IN SOA dns.cwview.com. dnsadmin.cwview.com. ( 2014031401 6H 30M 15D 3D ) IN NS dns IN MX 10 mail dns IN A 192.168.2.130 mail IN A 192.168.2.131 www IN A 192.168.2.132 ~
这2个权限都改成640,属组为named
做完之后进行语法检查named-checkconf,named-checkzone
4.5 重启DNS,测试
dig -t A www.cwview.com @192.168.1.10使用192.168.1.10作为DNS服务器来解析
dig -t A www.cwview.com @172.16.1.2使用172.16.1.2作为DNS服务器来解析
由此可知我们的试验成功,来自不同网络段的IP通过智能DNS(view)解析同一个主机的时候会被解析到不同的Ip上……因此我们的简化版智能DNS配置成功!