龙之介大人

dns子域授权与子域转发
1. 子域授权在一个较大的生产环境中,一般还需要在公司内分多个部门,这些部门负责的域是整个公司所负责的域的子域,这...
扫描右侧二维码阅读全文
25
2019/11

dns子域授权与子域转发

1. 子域授权

在一个较大的生产环境中,一般还需要在公司内分多个部门,这些部门负责的域是整个公司所负责的域的子域,这时公司内除了需要主从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. 先配置基础的区域解析,配置方法参考:dns服务器的搭建
    1. 在配置好的区域解析文件中进行ops子域授权的配置.配置方法如下
#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

2. 子域与转发功能

如果公司要想互联网上的主机能够访问公司内的服务器,就需要在公司内做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

继承以上操作转发ops子域解析父域

集成以上操作,在子域的服务器配置区域转发,把子域服务器需要解析的请求转发到父域服务器上使得子域可以解析父域!
#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定义的区域转发.而后才把其他解析进行全局转发!
  • 注意:需要关闭densec功能,否则能解析无法查看结果!
最后修改:2019 年 11 月 25 日 11 : 44 AM

发表评论