在现实生活中我们世界互联网中的每个主机并不是在同一个域内,而是通过不同的依据将将其划分到不同的“小域”中,犹如一个倒立的树状结构,由一点出发,一层层的向下分成了多个分支,而这些分支就是其上级域的子域,其上级域就是相对的父域,子域是从父域中划出来的一个域,子域中的主DNS服务器负责这个子域中的地址解析,从而减轻了父域中DNS服务器的压力,这不仅提高了解析服务的效率,同样也提高了解析服务的稳定性,此文,我们就来学习怎样给一个域划分出一个子域,并让这个子域中的DNS服务器能够进行子域中的域名解析服务,这个过程也叫做子域授权。

    本次实验我们依然在上次实验的基础上进行,声明一个名为cwlinux.com的域,从cwlinux.com这个域中划分出一个子域test.cwlinux.com,


一、子域授权

(本处只讲解子域在主DNS的划分,从DNS与主DNS相同)

1.在父域cwlinux.com中声明子域test.cwlinux .com

编辑cwlinux.com的文件cwlinux.com.zone 在最后一行加入如下内容

wKiom1MhMlvz8TqkAAEPbGTB6To489.jpg


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,内容如下:

wKiom1MhNUCRiyICAACvmwFcqTM265.jpg


4、重启服务,进行测试

将主机DNS服务器指向自己  

      修改/etc/resolv.conf

      设置nameserver 192.168.1.10

      service named restart

      正向解析测试,出现如下图所示则为正确;

wKiom1MhNevSjCt9AAJ1o-vqULs512.jpg


wKioL1MhNffgNtdgAAJF7tDO91E471.jpg


二、DNS转发功能

   我们的DNS在本地指定的DNS找不到解析后,会直接向跟发起请求,为了使根的负载变小,我们可以设置请求转发。

   1.  在/etc/named.conf中可以在options段中使用forwarders和forward指令设置DNS转发:

wKiom1MhPT7T4gdTAAErYSEj9FQ769.jpg

转发格式

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

wKioL1MhPnWSLoZDAAM-KQBOeXA427.jpg


转发某特定区域:

编辑 /etc/named.rfc1912.zones

zone "特定区域" IN {

type forward;

forwarders { IP; }

forward only|first;

}

wKioL1MhQLiigYwvAABgGmY5w2I623.jpg

上面如果设置 forwaed only,那就会解析失败,因为192.168.1.11DNS中没这个域名,返回失败信息,如下图

wKioL1MhQZXxagVfAAFP1QcJCPo443.jpg


四、智能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

wKioL1MihwKTUN1LAAEuVRuHaYg814.jpg


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 测试域

wKiom1Mih_CjdWWPAAESwUGVApY183.jpg


创建联通网段的区域文件 /etc/named.unicom.zones

[root@localhostcw ~]# cp -p /etc/named.rfc1912.zones  /etc/named.unicom.zones

修改其属组 为named


编辑/etc/named.unicom.zones中的cwview.com域的正向解析文件地址

wKiom1MiiWSQGspGAAEy_LTgg_g025.jpg


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服务器来解析

wKioL1Mii_Xw20QDAAKhMv05Tds272.jpg

wKioL1MijkTCgjz3AAJHkVkoPOM504.jpg

由此可知我们的试验成功,来自不同网络段的IP通过智能DNS(view)解析同一个主机的时候会被解析到不同的Ip上……因此我们的简化版智能DNS配置成功!