一、子域授权
在一个较大的生产环境中,一般还需要在公司内分多个部门,这些部门负责的域是整个公司所负责的域的子域,这时公司内除了需要主从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增大!
配置完进行语法检测:
[r[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)。做如下操作:
在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.
经过测试,没有问题。