在一个较大的生产环境中,一般还需要在公司内分多个部门,这些部门负责的域是整个公司所负责的域的子域,这时公司内除了需要主从DNS服务器彼此之间互相协调提供服务之外,还需要为每个子域授权并让各个子域分别管理各自部门的主机,以减轻公司所在域的系统管理员的负担,这就是子域授权。
假设公司内有两个部门,分别是dev和ops,对于itab.com这个域来说,需要分别为dev.itab.com和ops.itab.com这两个子域授权,而在这两个子域下还分别管理www.dev.itab.com和www.ops.itab.com这两台Web服务器。
ops.itab.com. IN NS ns1.ops.itab.com.
ops.itab.com. IN NS ns2.ops.itab.com.
ns1.ops.itab.com. IN A 1.1.1.1
ns2.ops.itab.com. IN A 1.1.1.2
dev.itab.com. IN NS ns1.dev.itab.com.
dev.itab.com. IN NS ns2.dev.itab.com.
ns1.dev.itab.com. IN A 2.1.1.1
ns1.dev.itab.com. IN A 2.1.1.2
这里dev部门所在域的DNS服务器作为ops部门所在域的DNS服务器的从服务器,而ops部门所在域的DNS服务器作为dev部门所在域的DNS服务器的从服务器。对于itab.com这个域来说,存在上层、下属关系,上层DNS所负责的域是.com,而下层DNS就是这里要授权的子域dev.itab.com和ops.itab.com.所有主机都已经安装了bind程序。
#1.在/var/named/itab.com.zone中添加子域ops
[root@master named]# vim itab.com.zone
$TTL 1D
$ORIGIN itab.com.
@ IN SOA ns1.itab.com. admin.itab.com. (
2019112301
1H
5M
3D
1D)
IN NS ns1
IN NS ns2
ns1 IN A 10.10.1.109
ns2 IN A 10.10.1.110
www IN A 10.10.1.109
* IN A 10.10.1.109
ops IN NS ns1.ops
ops IN NS ns2.ops
ns1.ops IN A 10.10.1.157
ns2.ops IN A 10.10.1.158
#2. 检查区域文件后重载
[root@master named]# named-checkzone "itab.com" itab.com.zone
[root@master named]# rndc reload
#添加子域后和未添加状态信息对比
[root@master named]# rndc status <--重载前
....
number of zones: 104 (97 automatic)
....
[root@master named]# rndc status<--重载后,区域并未增加
....
number of zones: 104 (97 automatic)
#1. 在缓存服务器的基础上进行配置子域解析,基本配置此处省略.
[root@slave ~]# vim /etc/named.rfc1912.zones
zone "ops.itab.com" IN { #添加子域文件解析
type master;
file "ops.itab.com.zone";
};
#2. 检查配置文件
[root@slave ~]# named-checkconf
#3. 区域解析数量对比
[root@slave ~]# rndc status <--未重载前的区域数量
number of zones: 103 (97 automatic)
[root@slave ~]# rndc status <--重载后的区域数量,数量在原来的基础上+1
number of zones: 104 (97 automatic)
#4. 添加子域的区域解析文件
[root@slave ~]# vim /var/named/ops.itab.com.zone
ns2 IN A 12.10.1.12
$TTL 1D
$ORIGIN ops.itab.com.
@ IN SOA ns1.ops.itab.com. admin.ops.itab.com. (
2019112401
1H
10M
3D
1D)
IN NS ns1
IN NS ns2
ns1 IN A 10.10.1.157
ns2 IN A 10.10.1.158
www IN A 10.10.1.200
* IN A 10.10.1.200
#5. 检查区域配置文件后重载
[root@slave ~]# named-checkzone "ops.itab.com.zone" /var/named/ops.itab.com.zone
[root@slave ~]# rndc reload
#6. dig测试子域解析结果
[root@slave ~]# dig -t A www.ops.itab.com @10.10.1.157
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-9.P2.el7 <<>> -t A www.ops.itab.com @10.10.1.157
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4784
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.ops.itab.com. IN A
;; ANSWER SECTION:
www.ops.itab.com. 86400 IN A 10.10.1.200
;; AUTHORITY SECTION:
ops.itab.com. 86400 IN NS ns2.ops.itab.com.
ops.itab.com. 86400 IN NS ns1.ops.itab.com.
;; ADDITIONAL SECTION:
ns1.ops.itab.com. 86400 IN A 10.10.1.157
ns2.ops.itab.com. 86400 IN A 10.10.1.158
;; Query time: 0 msec
;; SERVER: 10.10.1.157#53(10.10.1.157)
;; WHEN: Mon Nov 25 00:49:26 CST 2019
;; MSG SIZE rcvd: 129
#无法查询父域的解析记录,因为子域无法得知父域的服务器在哪因此无法解析父域,
#而子域会找根服务器,根服务器没有定义此条所以无法找到
#7. dig在服域上测试子域
#注意:不加norecurs会直接找根服务器,因此我们不需要去根服务器找只需要返回我父域的结果
[root@master named]# dig -t A www.ops.itab.com @10.10.1.109 +norecurs
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-9.P2.el7 <<>> -t A www.ops.itab.com @10.10.1.109 +norecurs
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39861
;; flags: qr ra; QUERY: 1, ANSWER: 0, AUTHORITY: 2, ADDITIONAL: 3
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.ops.itab.com. IN A
;; AUTHORITY SECTION:
ops.itab.com. 86400 IN NS ns2.ops.itab.com.
ops.itab.com. 86400 IN NS ns1.ops.itab.com.
;; ADDITIONAL SECTION:
ns1.ops.itab.com. 86400 IN A 10.10.1.157
ns2.ops.itab.com. 86400 IN A 10.10.1.158
;; Query time: 0 msec
;; SERVER: 10.10.1.109#53(10.10.1.109)
;; WHEN: Mon Nov 25 00:00:42 CST 2019
;; MSG SIZE rcvd: 113
如果公司要想互联网上的主机能够访问公司内的服务器,就需要在公司内做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这个域的主机上(10.10.1.157)解析itab.com域内的主机www.itab.com时,因为www.itab.com这台web服务器不受ops.itab.com这个域管理,因此会自动从根域开始迭代,大费周章。为了解决这一问题,可以在dev.itab.com和ops.itab.com这两个子域的DNS服务器上定义转发功能(forwarding)。
全部转发: 凡是对非本机所有负责解析的区域的请求,统统转发给指定的服务器;
Options {
forward {first|only}
fowwarders
}
区域转发:仅转发对特定的区域的请求至某服务器;
zone "ZONE_NAME" IN {
type forward;
forward {first|only}
forwarders
}
#注意:关闭dnssec功能
dnssec-enable no;
dnssec-validation no;
[root@master ~]# vim /etc/named.conf
forward first; <--添加这几行
forwarders { 10.10.1.1; };
[root@master ~]# rndc reload
#dig解析百度测试
[root@master ~]# dig -t A baidu.com @10.10.1.109
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-9.P2.el7 <<>> -t A baidu.com @10.10.1.109
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54428
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 13, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;baidu.com. IN A
;; ANSWER SECTION:
baidu.com. 259 IN A 39.156.69.79
baidu.com. 259 IN A 220.181.38.148
;; AUTHORITY SECTION:
. 50 IN NS l.root-servers.net.
. 50 IN NS a.root-servers.net.
. 50 IN NS j.root-servers.net.
. 50 IN NS h.root-servers.net.
. 50 IN NS d.root-servers.net.
. 50 IN NS m.root-servers.net.
. 50 IN NS e.root-servers.net.
. 50 IN NS k.root-servers.net.
. 50 IN NS b.root-servers.net.
. 50 IN NS g.root-servers.net.
. 50 IN NS c.root-servers.net.
. 50 IN NS i.root-servers.net.
. 50 IN NS f.root-servers.net.
;; Query time: 0 msec
;; SERVER: 10.10.1.109#53(10.10.1.109)
;; WHEN: Mon Nov 25 07:45:37 CST 2019
;; MSG SIZE rcvd: 281
集成以上操作,在子域的服务器配置区域转发,把子域服务器需要解析的请求转发到父域服务器上使得子域可以解析父域!
#1.编辑子域的/etc/named.rfc1912.zones
zone "itab.com" IN {
type forward;
forward only;
forwarders { 10.10.1.109; };
};
[root@slave ~]# named-checkconf <--检查配置文件
[root@slave ~]# rndc reload
#2.测试在子域上解析父域
[root@slave ~]# dig -t A www.itab.com @10.10.1.157
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-9.P2.el7 <<>> -t A www.itab.com @10.10.1.157
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49532
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.itab.com. IN A
;; ANSWER SECTION:
www.itab.com. 86349 IN A 10.10.1.109
;; Query time: 0 msec
;; SERVER: 10.10.1.157#53(10.10.1.157)
;; WHEN: Mon Nov 25 08:56:09 CST 2019
;; MSG SIZE rcvd: 57
如果配置了全局转发和区域转发,首先转发zone定义的区域转发.而后才把其他解析进行全局转发!
版权属于:龙之介大人
本文链接:https://cloud.tencent.com/developer/article/1619638
本站所有原创文章采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 您可以自由的转载和修改,但请务必注明文章来源和作者署名并说明文章非原创且不可用于商业目的。