DNS服务器之子域授权

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DNS服务器之子域授权相关的知识,希望对你有一定的参考价值。

一、子域授权


在一个较大的生产环境中,一般还需要在公司内分多个部门,这些部门负责的域是整个公司所负责的域的子域,这时公司内除了需要主从DNS服务器彼此之间互相协调提供服务之外,还需要为每个子域授权并让各个子域分别管理各自部门的主机,以减轻公司所在域的系统管理员的负担,这就是子域授权。


假设公司内有两个部门,分别是dev和ops,对于itab.com这个域来说,需要分别为dev.itab.com和ops.itab.com这两个子域授权,而在这两个子域下还分别管理www.dev.itab.com和www.ops.itab.com这两台Web服务器。


各DNS服务器关系如下(一共四台主机):

负责管理公司所在域(itab.com)的DNS服务器:
(1)主DNS服务器:192.168.10.140    //主机名为: master
(2)从DNS服务器:192.168.10.128    //主机名为: slave

负责dev部门所在域(dev.itab.com)的DNS服务器:
(1)主DNS服务器:192.168.10.101    //主机名为: dev
(2)从DNS服务器:192.168.10.102    //主机名为: ops

负责ops部门所在域(ops.itab.com)的DNS服务器:
(1)主DNS服务器:192.168.10.102    //主机名为: ops
(2)从DNS服务器:192.168.10.101    //主机名为: dev


父域和子域的关系图:

技术分享

这里dev部门所在域的DNS服务器作为ops部门所在域的DNS服务器的从服务器,而ops部门所在域的DNS服务器作为dev部门所在域的DNS服务器的从服务器。对于itab.com这个域来说,存在上层、下属关系,上层DNS所负责的域是.com,而下层DNS就是这里要授权的子域dev.itab.com和ops.itab.com.所有主机都已经安装了bind程序。


这里负责管理公司所在域(itab.com)的主从DNS服务器已经配置好,并且已经启动了DNS服务,具体如何配置在上一篇博客中《搭建DNS服务器:正向解析区域、反向解析区域、主从DNS》已经介绍。


子域授权步骤:


(1)在负责管理公司所在域(itab.com)的主DNS服务器上配置子域的NS记录和与之对应的A记录。

在192.168.10.140主机上

[[email protected] ~]# vim /var/named/itab.com.zone 
# 在针对itab.com这个域的区域数据库文件中添加如下内容。

dev     IN      NS      ns1.dev.itab.com.    //dev.itab.com这个域的主DNS服务器
dev     IN      NS      ns2.dev.itab.com.    //dev.itab.com这个域的从DNS服务器
ns1.dev IN      A       192.168.10.101
ns2.dev IN      A       192.168.10.102

ops     IN      NS      ns1.ops.itab.com.    //ops.itab.com这个域的主DNS服务器
ops     IN      NS      ns2.ops.itab.com.    //ops.itab.com这个域的从DNS服务器
ns1.ops IN      A       192.168.10.102
ns2.ops IN      A       192.168.10.101

# 注意:主DNS服务器修改区域数据库文件时要将serial增大!


配置完进行语法检测:

[[email protected] ~]# named-checkconf 
[[email protected] ~]#


重载主DNS服务,让从DNS服务器进行同步:

[[email protected] ~]# rndc reload
server reload successful



(2)首先将ns1.dev.itab.com.和ns1.ops.itab.com.这两台服务器都配置为缓存DNS服务器,操作如下。

[[email protected] ~]# vim /etc/named.conf
# 修改配置文件named.conf中的全局配置段里的如下内容。

options {
    ... ...
    listen-on port 53 { any; };
    allow-query     { any; };
    dnssec-enable no;
    dnssec-validation no;
    ... ...
};

在ns1.ops.itab.com.这台DNS服务器(待配置)上做同样处理。



(3)在负责dev部门所在域(dev.itab.com)的主DNS服务器上(待配置),定义dev主区域,并为之配置区域数据库文件。在负责ops部门所在域(ops.itab.com)的主DNS服务器上(待配置),定义dev的从区域。

在192.168.10.101主机上

定义dev主区域:

[[email protected] ~]# vim /etc/named.rfc1912.zones
# 在配置文件named.rfc1912.zones中添加如下内容。

zone "dev.itab.com" IN {
    type master;
    file "dev.itab.com.zone";
    allow-transfer {
        192.168.10.140;
        192.168.10.128;
        192.168.10.101;
        192.168.10.102;
        127.0.0.1;
        localhost; };
};


为dev这个主区域配置区域数据库文件:

[[email protected] ~]# vim /var/named/dev.itab.com.zone

$TTL 3600
$ORIGIN dev.itab.com.
@       IN      SOA     ns1.dev.itab.com.       nsadmin.itab.com    (
                2017040201
                1H
                10M
                12H
                10H )
        IN      NS      ns1
        IN      NS      ns2
ns1     IN      A       192.168.10.101
ns2     IN      A       192.168.10.102
www     IN      A       1.1.1.1


分别检查bind配置文件和区域数据库文件是否有语法错误:

[[email protected] ~]# named-checkconf   
[[email protected] ~]# named-checkzone dev.itab.com /var/named/dev.itab.com.zone 
zone dev.itab.com/IN: loaded serial 2017040201
OK


在192.168.10.102主机上

在负责ops部门所在域(ops.itab.com)的主DNS服务器上(待配置),定义dev从区域:

[[email protected] ~]# vim /etc/named.rfc1912.zones
# 在配置文件named.rfc1912.zones中添加如下内容。

zone "dev.itab.com" IN {
    type slave;
    file "slaves/dev.itab.com";
    masters { 192.168.10.101; };
        allow-transfer {
        192.168.10.140;
        192.168.10.128;
        192.168.10.101;
        192.168.10.102;
        127.0.0.1;
        localhost; };
};


检查配置文件是否有语法错误:

[[email protected] ~]# named-checkconf 
[[email protected] ~]#



(4)在负责ops部门所在域(ops.itab.com)的主DNS服务器上(待配置),定义ops主区域,并为之配置区域数据库文件。在负责dev部门所在域(dev.itab.com)的主DNS服务器上(待配置),定义ops从区域。

在192.168.10.102主机上

定义ops主区域:

[[email protected] ~]# vim /etc/named.rfc1912.zones 
# 在配置文件named.rfc1912.zones中添加如下内容。

zone "ops.itab.com" IN {
    type master;
    file "ops.itab.com.zone";
        allow-transfer {
        192.168.10.140;
        192.168.10.128;
        192.168.10.101;
        192.168.10.102;
        127.0.0.1;
        localhost; };
};


为ops这个主区域配置区域数据库文件:

[[email protected] ~]# vim /var/named/ops.itab.com.zone

$TTL 3600
$ORIGIN ops.itab.com.
@       IN      SOA         ns1.ops.itab.com.       nsadmin.itab.com.   (
                2017040201
                1H
                10M
                12H
                10H )
        IN      NS          ns1
        IN      NS          ns2
ns1     IN      A           192.168.10.102
ns2     IN      A           192.168.10.101
www     IN      A           2.2.2.2


分别检查bind配置文件和区域数据库文件是否有语法错误:

[[email protected] ~]# named-checkconf 
[[email protected] ~]# named-checkzone ops.itab.com /var/named/ops.itab.com.zone 
zone ops.itab.com/IN: loaded serial 2017040201
OK


在192.168.10.101主机上

在负责dev部门所在域(dev.itab.com)的主DNS服务器上(待配置),定义ops从区域:

[[email protected] ~]# vim /etc/named.rfc1912.zones
# 在配置文件named.rfc1912.zones中添加如下内容。

zone "ops.itab.com" IN {
    type slave;
    file "slaves/ops.itab.com.zone";
    masters { 192.168.10.102; };
    allow-transfer {
        192.168.10.140;
        192.168.10.128;
        192.168.10.101;
        192.168.10.102;
        127.0.0.1;
        localhost; };
};


检查配置文件是否有语法错误:

[[email protected] ~]# named-checkconf 
[[email protected] ~]#


(5)启动ns1.dev.itab.com.和ns2.ops.itab.com.这两台DNS服务器,并开始提供服务,操作如下。

# systemctl start named.service


(6)查看日志,这一步省略。


这样就完成了子域授权操作了。接下来开始测试:

在192.168.10.140主机上

在负责管理公司所在域(itab.com)的主DNS服务器上使用dig工具测试:

[[email protected] ~]# dig -t NS dev.itab.com @192.168.10.140

;; ANSWER SECTION:
dev.itab.com.		3600	IN	NS	ns2.dev.itab.com.
dev.itab.com.		3600	IN	NS	ns1.dev.itab.com.

;; ADDITIONAL SECTION:
ns2.dev.itab.com.	3600	IN	A	192.168.10.102
ns1.dev.itab.com.	3600	IN	A	192.168.10.101


[[email protected] ~]# dig -t NS ops.itab.com @192.168.10.140

;; ANSWER SECTION:
ops.itab.com.		3600	IN	NS	ns2.ops.itab.com.
ops.itab.com.		3600	IN	NS	ns1.ops.itab.com.

;; ADDITIONAL SECTION:
ns2.ops.itab.com.	3600	IN	A	192.168.10.101
ns1.ops.itab.com.	3600	IN	A	192.168.10.102


[[email protected] ~]# dig -t A www.dev.itab.com @192.168.10.140

;; ANSWER SECTION:
www.dev.itab.com.	3600	IN	A	1.1.1.1


[[email protected] ~]# dig -t A www.ops.itab.com @192.168.10.140

;; ANSWER SECTION:
www.ops.itab.com.	3600	IN	A	2.2.2.2



验证子域主从DNS服务器轮循解析:

[[email protected] ~]# host -t NS dev.itab.com 192.168.10.140
Using domain server:
Name: 192.168.10.140
Address: 192.168.10.140#53
Aliases: 

dev.itab.com name server ns2.dev.itab.com.    //这一次由ns2.dev.itab.com.解析
dev.itab.com name server ns1.dev.itab.com.
[[email protected] ~]# 
[[email protected] ~]# 
[[email protected] ~]# host -t NS dev.itab.com 192.168.10.140
Using domain server:
Name: 192.168.10.140
Address: 192.168.10.140#53
Aliases: 

dev.itab.com name server ns1.dev.itab.com.    //这一次由ns1.dev.itab.com.解析
dev.itab.com name server ns2.dev.itab.com.


经过测试,子域配置完成,没有问题。



子域与转发功能(forwarding)


如果公司要想互联网上的主机能够访问公司内的服务器,就需要在公司内做DNS服务器,其负责的域是itab.com。对于itab.com这个域的上层DNS也一样,如果公司所负责域(itab.com)的DNS服务器要做到高可用,至少需要两台DNS服务做主从,需要在ISP提供的交互界面上填写两条NS记录以及与之对应的A记录。


而在公司内部,受itab.com这个域所管理的可以是子域或主机,每个子域交由一个部门负责管理。在这个例子中子域就是dev.itab.com和ops.itab.com,负责解析这两个子域的DNS服务器都做了主从,同样实现了高可用。


但这样会出现一个问题,在负责解析ops.itab.com这个域的主机上(192.168.10.102)解析itab.com域内的主机www.itab.com时,因为www.itab.com这台web服务器不受ops.itab.com这个域管理,因此会自动从根域开始迭代,大费周章。为了解决这一问题,可以在dev.itab.com和ops.itab.com这两个子域的DNS服务器上定义转发功能(forwarding)。关于定义转发功能详细解释可参考《Caching only DNS的设置与forwarding功能》做如下操作:


在192.168.10.101主机上

[[email protected] ~]# vim /etc/named.conf
# 在配置文件named.conf中定义全局转发。

options {
    ... ...
    forward only;
    forwarders { 192.168.10.140; 192.168.10.128; };
    ... ...
};


在192.168.10.102主机上

[[email protected] ~]# vim /etc/named.conf
# 在配置文件named.conf中定义全局转发。

options {
    ... ...
    forward only;
    forwarders { 192.168.10.140; 192.168.10.128; };
    ... ...
};


在这两台服务器上:

检查配置文件语法错误:

# named-checkconf


注释掉配置文件/etc/named.conf中的hint区域定义:

#zone "." IN {
#   type hint;
#   file "named.ca";
#};


两台DNS服务器分别重载配置文件:

# rndc reload



在ns1.ops.itab.com.这台DNS服务器(192.168.10.102)上测试:

[[email protected] ~]# dig -t NS itab.com @192.168.10.102

;; ANSWER SECTION:
itab.com.		3284	IN	NS	ns2.itab.com.
itab.com.		3284	IN	NS	ns1.itab.com.

经过测试,没有问题。




本文出自 “Tab” 博客,请务必保留此出处http://xuweitao.blog.51cto.com/11761672/1912627

以上是关于DNS服务器之子域授权的主要内容,如果未能解决你的问题,请参考以下文章

DNS服务子域委派,授权解析,负载均衡等功能原理解析实验(欢迎各位朋友莅临指教讨论)

DNS子域的授权

linux dns子域授权 split分离解析 缓存dns服务器

DNS子域授权

?DNS子域授权view配置详解

CentOS下DNS子域授权