子域授权

子域授权:每个域的名称服务器,都是通过其上级名称服务器在解析库进行授权;

 

    类似根域授权tld:

        .com.   IN      NS      ns1.com.

        .com.   IN      NS      ns2.com.

        ns1.com.   IN      A  2.2.2.1

        ns2.com.    IN      A   2.2.2.2

 

    xmdb.com.在.com的名称服务器上,解析库中添加资源记录:

        xmdb.com.  IN NS     ns1.xmdb.com.

        xmdb.com.  IN NS     ns2.xmdb.com.

        xmdb.com.  IN NS     ns3.xmdb.com.

        ns1.xmdb.com.  IN A  3.3.3.1

        ns2.xmdb.com.  IN A  3.3.3.2

        ns3.xmdb.com.  IN A  3.3.3.3

 

 

父域知道子域,子域不知道父域,因为父域定义了子域,但是子域没有定义父域;如客户查询www.baidu.com不直接找.com服务器解析,而是找根解析,当然定义了转发器除外

实际配置:

要求:为xmfb.com,定义子域ops

实验环境:

父域:192.168.0.102

子域:192.168.0.104

 

父域配置:

定义ops子域

[root@DNS ~]# cat /var/named/xmfb.com.zone
$TTL 86400
$ORIGIN xmfb.com.
@   IN  SOAns1.xmfb.com.admin.xmfb.com (
           2015042201
           1H
           5M
           7D
           1D)
        INNS   ns1
        INMX  10 mx1
        INMX  20 mx2
ns1IN  A      192.168.0.102   
mx1IN  A   192.168.0.1
mx2IN  A   192.168.0.2
wwwIN  A   192.168.0.3
wwwIN  A   192.168.0.4
ftpIN  CNAME  www
 
ops    IN      NS      ns1.ops      #子域的定义内容
ops    IN      NS      ns2.ops      #表示子域有两台服务器
ns1.ops IN     A       192.168.0.10
ns2.ops IN     A       192.168.0.20

如果客户端发出请求,那么当请求到达父域的时候,服务就会转发给子区域,由子区域响应请求

 

子域服务器配置

安装软件

[root@localhost ~]# yum -yinstall bind

主配置文件定义

[root@localhost ~]# cat /etc/named.conf
options {
    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";
    recursionyes;
};
zone "." IN {
    type hint;
    file"named.ca";
};
 
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

辅助配置文件定义

[root@localhost ~]# cat /etc/named.rfc1912.zones
zone "ops.xmfb.com" IN {
  typemaster;
  file"ops.xmfb.com.zone";
};

定义区域解析库

[root@localhost ~]# cat/var/named/ops.xmfb.com.zone
$TTL 86400
$ORIGIN ops.xmfb.com.
@    IN    SOA  ns1.ops.xmfb.com. admin.ops.xmfb.com. (
                2015042501
                1H
                10M
                3D
                1D)
     IN    NS ns1
     IN    NS ns2
ns1  IN    A  192.168.0.10
ns2  IN    A  192.168.0.20
www  IN    A  192.168.0.11
*    IN    A  192.168.0.11

配置区域解析库文件属组

[root@localhost ~]# chown :named/var/named/ops.xmfb.com.zone

验证解析

[root@localhost ~]# dig -t A www.ops.xmfb.com@192.168.0.104
 
; <<>> DiG9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6_6.2 <<>> -t A www.ops.xmfb.com@192.168.0.104
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status:NOERROR, id: 63269
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1,AUTHORITY: 2, ADDITIONAL: 2
 
;; QUESTION SECTION:
;www.ops.xmfb.com.       IN  A
 
;; ANSWER SECTION:
www.ops.xmfb.com.86400  IN  A   192.168.0.11
 
;; AUTHORITY SECTION:
ops.xmfb.com.     86400  IN  NS  ns2.ops.xmfb.com.
ops.xmfb.com.     86400  IN  NS  ns1.ops.xmfb.com.
 
;; ADDITIONAL SECTION:
ns1.ops.xmfb.com.86400  IN  A   192.168.0.10
ns2.ops.xmfb.com.86400  IN  A   192.168.0.20
 
;; Query time: 1 msec
;; SERVER: 192.168.0.104#53(192.168.0.104)
;; WHEN: Thu Apr 23 13:30:47 2015
;; MSG SIZE rcvd: 118

定义转发服务器:

为什么使用转发器?

1、当子域解析父域区域记录的时候,由于子域没有父域的记录,那么就回去找根,这样就大大浪费了时间;可以把其他人对子域的请求转给父域让父域代为解析。

2、如果是公司使用可以把客户端请求转发给本地运营商,他们的dns服务器会记录其他人解析的结果;如果dns服务器找运行商,发现有缓存就会直接从缓存中返回答案,提高解析效率。

注意:被转发的服务器需要能够为请求者做递归,否则,转发请求不予进行;

 

    (1)全部转发: 凡是对非本机所有负责解析的区域的请求,统统转发给指定的服务器;

       Options{
           forward{first|only}
           fowwarders
       }

first:先转发,如果没有答案则把请求给根

Only:如果转发服务器没有答案,则把请求给根

 

    (2)区域转发:仅转发对特定的区域的请求至某服务器;

       zone"ZONE_NAME" IN {
           typeforward;
           forward{first|only}
           forwarders
       }

    注意:关闭dnssec功能:

       dnssec-enableno;

       dnssec-validationno;

 

 

dns中基础的安全相关的配置:

acl:把一个或多个地址归并为一个集合,并通过一个统一的名称调用;

    aclacl_name {

        ip;

        ip;

        net/prelen;

    };

    bind有四个内置的acl:

        none:没有一个主机;

        any:任意主机;

        local:本机;

        localnet:本机的IP同掩码运算后得到的网络地址;

 

    注意:只能先定义,后使用;因此,其一般定义在配置文件中options的前面;

 

访问控制的指令:

    allow-query{}: 允许查询的主机;白名单;

    allow-transfer{}:允许区域传送的主机;白名单;

    allow-recursion{}: 允许递归的主机;

    allow-update{}: 允许更新区域数据库中的内容;

 

示例:

acl slaves {
 192.168.0.104;   #定义一个访问控制列表
};
 
zone "xmfb.com" IN {
  typemaster;
  file"xmfb.com.zone";
 allow-transfer { slaves; };  #使用访问控制列表
};

View 视图

将请求者根据其来源进行分类,分类后实现使用不同的区域解析库来解析对某区域主机的请求。目前主要应用于CDN技术领域

 

配置方法:

       viewVIEW_NAME {  #定义视图
       match-clients {  };   #定义视图解析的来源地址
           zone{}    #视图解析的区域
           zone{}  
       }  #视图结束


一个bind服务器可定义多个view,每个view中可定义一个或多个zone;

每个view用一来匹配一组客户端;

多个view内可能需要对同一个区域进行解析,但使用不同的区域解析库文件;

 

 

注意:

    (1)一旦启用了view,所有的zone都只能定义在view中;

    (2)仅有必要在匹配到允许递归请求的客户所在view中定义根区域;

    (3)客户端请求到达时,是自上而下检查每个view所服务的客户端列表;

 

 

实验环境

示例:

内网部署了一台web服务器,要求内网用户通过dns服务器解析,解析结果为web服务器的内网地址;外网用户解析,解析结果为web服务器发布到网关的ip地址。

 

没有定义视图之前内网客户机访问web服务器:

1、访问dns服务器解析web服务器地址,解析到的地址为网关的公网地址

2、访问网关的公网地址

3、网关通过nat转换机制将请求发给web服务器完成访问

p_w_picpath

 

定义视图之后访问内网服务器:

1、访问dns服务器,解析到的地址为内网地址

2、直接访问内网web服务器

p_w_picpath

定义视图的好处就是:内网用户省去了访问网关的转换过程,加快了访问速度

 

拓扑地址说明:

网关:192.168.0.1,开启路由功能

     172.16.0.1

172.16.0.0/16模拟内网地址

192.168.0.0/24模拟外网地址

DNS:172.16.4.100

client:192.168.0.104

 

保证DNS和client,可以ping通即可。

 

服务器配置

DNS服务器配置

[root@DNS ~]# cat /etc/named.conf
options {
    listen-onport 53 { 172.16.4.100; 127.0.0.1; };
    directory "/var/named";
};
 
acl mynet {    #定义acl列表为内网地址
 172.16.0.0/16;
 127.0.0.0/8;
};
 
view internal {  #定义一个内网用户解析的视图
  match-clients { mynet; };   #定义内网客户端列表,由于定义了ACL所以直接使用ACL即可
  allow-recursion { mynet; };  #允许递归
 
zone "." IN {
        typehint;
        file"named.ca";
};
 
zone "xmfb.com" IN {
  typemaster;
  file"xmfb.com.zone";
};
};   #内网视图的结束
 
view external {  #定义一个外网解析的视图 
 match-clients { any; };
zone "xmfb.com" IN {
  typemaster;
  file"xmfb.com.external";
 allow-update { none; };
};
};  #外网解析视图的结束


内网区域解析库

[root@DNS named]# cat xmfb.com.zone
$TTL 86400
$ORIGIN xmfb.com.
@   IN  SOAns1.xmfb.com.admin.xmfb.com (
           2015042201
           1H
           5M
           7D
           1D)
        INNS   ns1
        INMX  10 mx1
        INMX  20 mx2
ns1  IN   A       172.16.4.100
mx1  IN   A   172.16.1.1    
mx2  IN   A   172.16.1.2
www   IN   A   172.16.1.3      
www   IN   A   172.16.1.4
ftp  IN   CNAME  www

外网区域解析库

[root@DNS named]# cat xmfb.com.external
$TTL 86400
$ORIGIN xmfb.com.
@   IN  SOAns1.xmfb.com.admin.xmfb.com (
           2015042201
           1H
           5M
           7D
           1D)
        INNS   ns1
        INMX  10 mx1
        INMX  20 mx2
ns1  IN   A       172.16.4.100
mx1  IN    A   192.168.1.1
mx2  IN   A   192.168.1.2
www  IN   A   192.168.1.3
www  IN    A   192.168.1.4
ftp  IN   CNAME  www

验证

内网解析:

[root@DNS ~]# dig -t A www.xmfb.com @172.16.4.100
 
; <<>> DiG9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6_6.2 <<>> -t A www.xmfb.com@172.16.4.100
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status:NOERROR, id: 14808
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2,AUTHORITY: 1, ADDITIONAL: 1
 
;; QUESTION SECTION:
;www.xmfb.com.           IN  A
 
;; ANSWER SECTION:
www.xmfb.com.     86400  IN  A   172.16.1.4   #解析为内网地址
www.xmfb.com.     86400  IN  A   172.16.1.3
 
;; AUTHORITY SECTION:
xmfb.com.     86400  IN  NS  ns1.xmfb.com.
 
;; ADDITIONAL SECTION:
ns1.xmfb.com.     86400  IN  A   172.16.4.100
 
;; Query time: 1 msec
;; SERVER: 172.16.4.100#53(172.16.4.100)
;; WHEN: Thu Apr 23 19:11:19 2015
;; MSG SIZE rcvd: 96

外网解析:

[root@client ~]# dig -t A www.xmfb.com@172.16.4.100
 
; <<>> DiG9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6_6.2 <<>> -t A www.xmfb.com@172.16.4.100
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status:NOERROR, id: 9925
;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY:1, ADDITIONAL: 1
;; WARNING: recursion requested but not available
 
;; QUESTION SECTION:
;www.xmfb.com.           IN  A
 
;; ANSWER SECTION:
www.xmfb.com.     86400  IN  A   192.168.1.3  #解析为外网地址
www.xmfb.com.     86400  IN  A   192.168.1.4
 
;; AUTHORITY SECTION:
xmfb.com.     86400  IN  NS  ns1.xmfb.com.
 
;; ADDITIONAL SECTION:
ns1.xmfb.com.     86400  IN  A   172.16.4.100
 
;; Query time: 7 msec
;; SERVER: 172.16.4.100#53(172.16.4.100)
;; WHEN: Thu Apr 23 19:15:52 2015
;; MSG SIZE rcvd: 96