可以在一台绑定服务器上托管父域和子域吗?

可以在一台绑定服务器上托管父域和子域吗?

注:这是一个转发我之前的问题,被搁置,并要求重新措辞以使其更加清晰(希望这更有意义)


我安装了一个 DNS 服务器bind,我尝试将其设置为托管一个父域 ( example.org) 和两个子域 (cnc.example.orgreport.example.org),以便任何域中的设备都可以通过单个 DNS 服务器提供 DNS 查询服务。

我的第一个问题这可能吗?

如果是这样,为什么我会收到以下错误?

当我nslookup host1report.example.org我收到的域中执行此操作时

server can't find host1: SERVFAIL

当我nslookup host2cnc.example.org我收到的域中执行此操作时

server can't find host1: SERVFAIL

网络拓扑结构

设置如下:

主机1:

  • IP 192.168.252.21/24
  • 域名解析 192.168.252.22
  • /etc/hosts包含host1.cnc.example.org

主机2:

  • IP 192.168.252.20/24
  • 域名解析 192.168.252.22
  • /etc/hosts包含host2.report.example.org

DNS服务器:

  • IP 192.168.252.22/24
  • 域名解析 127.0.0.1
  • /etc/hosts包含DNSServer.example.org

named.conf.local配置

/
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";

zone "example.org" {
    type master;
    file "/etc/bind/zones/example.org";
#    allow-transfer { 192.168.252.22; };
};

zone "cnc.example.org" {
    type master;
    file "/etc/bind/zones/cnc.example.org";
#    allow-transfer { 192.168.252.22; };
};

zone "report.example.org" {
    type master;
    file "/etc/bind/zones/report.example.org";
#    allow-transfer { 192.168.252.22; };
};

zone "252.168.192.in-appr.arpa" {
     type master;
     file "/etc/bind/zones/reverse/rev.252.168.192";
     allow-transfer { 192.168.252.22; };
};

example.org配置

;
; BIND data for example.org or report.example.org
;
$TTL 3h
@           IN  SOA DNSServer.example.org.  root.example.org. (
                        1       ; serial
                        3h      ; refresh
                        1h      ; retry
                        1w      ; expire
                        1h )    ; minimum
;
; main domain name servers - NS records
                    IN  NS  DNSServer.example.org.


; main domain name servers - A records
DNSServer               IN  A   192.168.252.22


;delegated zones
cnc.example.org.                IN  NS  DNSServer.example.org.
report.example.org.         IN  NS  DNSServer.example.org.

* DNSServer 上 /etc/resolv.conf 的输出 *

  # Generated by NetworkManager
    search example.org
    nameserver 127.0.0.1

* host1 上 /etc/resolv.conf 的输出 *

 # Generated by NetworkManager
    search report.example.org
    nameserver 192.168.252.22

* 主机 2 上 /etc/resolv.conf 的输出 *

  # Generated by NetworkManager
    search cnc.example.org
    nameserver 192.168.252.22

* DNSServer 上的 dig DNSServer 的输出 *

root@DNSServer:/etc/bind/zones/reverse# dig DNSServer

; <<>> DiG 9.10.3-P4-Debian <<>> DNSServer
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 45573
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;DNSServer.         IN  A

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Nov 27 10:47:23 GMT 2017
;; MSG SIZE  rcvd: 38

* 使用 dig DNSServer.example.org 输出 *

   root@DNSServer:/home/osboxes# dig DNSServer.example.org

    ; <<>> DiG 9.10.3-P4-Debian <<>> DNSServer.example.org
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12335
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ;; QUESTION SECTION:
    ;DNSServer.example.org.     IN  A

    ;; ANSWER SECTION:
    DNSServer.example.org.  10800   IN  A   192.168.252.22

    ;; AUTHORITY SECTION:
    example.org.        10800   IN  NS  DNSServer.example.org.

    ;; Query time: 0 msec
    ;; SERVER: 127.0.0.1#53(127.0.0.1)
    ;; WHEN: Mon Nov 27 11:01:19 GMT 2017
    ;; MSG SIZE  rcvd: 79

* DNSServer 上的 dig host1 的输出 *

root@DNSServer:/etc/bind/zones/reverse# dig host1

; <<>> DiG 9.10.3-P4-Debian <<>> host1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 19414
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;host1.         IN  A

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Nov 27 10:48:15 GMT 2017
;; MSG SIZE  rcvd: 40

cnc.example.org配置

;
; BIND data for example.org or report.example.org
;
$TTL 3h
@           IN  SOA DNSServer.example.org.  root.example.org. (
                        1       ; serial
                        3h      ; refresh
                        1h      ; retry
                        1w      ; expire
                        1h )    ; minimum
;
; main domain name servers - NS records
@                   IN  NS  DNSServer.example.org.


; main domain name servers - A records
;DNSServer              IN  A   192.168.252.22


;192.168.252.0/24 - A Records
host1.cnc.example.org.      IN  A   192.168.252.21

report.example.org配置

;
; BIND data for example.org or report.example.org
;
$TTL 3h
@           IN  SOA DNSServer.example.org.  root.example.org. (
                        1       ; serial
                        3h      ; refresh
                        1h      ; retry
                        1w      ; expire
                        1h )    ; minimum
;
; main domain name servers - NS records
@                   IN  NS  DNSServer.example.org.

; main domain name servers - A records
DNSServer               IN  A   192.168.252.22

;192.168.252.0/24 - A Records
host2.report.example.org.   IN  A   192.168.252.20

谢谢

答案1

您可以使用委派,但除非您确实需要它,否则我建议您保持简单并使用包含example.orgcnc.example.org和 的一个区域report.example.org

;
; BIND data for example.org
;
$TTL 3h
@           IN  SOA DNSServer.example.org.  root.example.org. (
                        1       ; serial
                        3h      ; refresh
                        1h      ; retry
                        1w      ; expire
                        1h )    ; minimum
;
; main domain name servers - NS records
                    IN  NS  DNSServer.example.org.

; main domain name servers - A records
DNSServer           IN  A  192.168.252.22

; public targets
cnc                 IN  CNAME  host1.cnc
report              IN  CNAME  host2.report

; hosts delivering services
host1.cnc           IN  A   192.168.252.21
host2.report        IN  A   192.168.252.20

引用评论中的内容:

当我在 DNS 服务器上时,nslookup host1我得到

root@host1:/home/osbixes# nslookup host2
Server: 127.0.0.1
Address 127.0.0.1#53
** server can’t find host2: SERVFAIL

DNSServer 上没有搜索路径,但域是example.org,这意味着所有不合格的名称都必须在该域中。没有正确host2.example.orgnslookup未能返回您的答案。在这种情况下,您要么需要将domain example.org您的替换/etc/resolv.confsearch example.org report.example.org,要么查找nslookup host2.report

从主机1或主机2我得到

root@host1:/home/osbixes# nslookup host2
Server: 192.168.252.22
Address 192.168.252.22#53
** server can’t find host2: SERVFAIL

同样的原因。您的域(搜索路径)/etc/resolv.conf不包含包含的组件,host2因此在任何地方nslookup都看不到不合格的名称host2

我假设host1 和 host2 上的/etc/hosts/etc/hostname文件应该仍然是host1.cnc.example.orghost2.report.example.org

/etc/hosts当你说“应该”时,我真的不知道你的意思是什么host1.cnc.example.org。该/etc/hosts文件是主机名和 IP 地址之间映射的另一种方式。如果您只有两到三个主机名,您不妨避免内部 DNS 的复杂性,只需将这些条目放入/etc/hosts.另一方面,如果您拥有合理数量的主机,那么 DNS 对于本地网络来说是一个很好的集中式解决方案。 (但请记住,这是nslookup故意忽略的/etc/hosts。)

当我这样做时,从任一主机nslookup host1.cnc.example.org,或者nslookup host2.report.example.org它正确解析了 IP 地址

是的。您提供了完全限定的名称,并且nslookup可以bind正确解析。这证明任一 DNS 运行正常。

我需要一个 DNS 服务器来处理 和 的任何查询example.orgcnc.example.org以便report.example.org当新设备与网络通信以请求执行新命令时,它会查询cnc.example.org并定向到host1.cnc.example.org(192.168.252.21),但当它想要发送报告时返回网络,它查询report.example.org域并定向到host2.report.example.org(192.168.252.20)

为此,您将CNAME在 DNS 中使用(别名)记录,以便将 的查询report.example.org映射到主机host2.report.example.org。请注意,您的问题中没有任何技术原因,为什么host2不应该调用host2.example.orgCNAME记录可以指向任何地方,而不仅仅是当前(子)域中的主机。

答案2

是的。但无需为子域创建单独的配置。

末尾的“A”.表示完整域名,没有“A”.则表示原始域的子域。

cnc.example.com仅在配置中添加这样的条目example.com

host1.cnc      IN  A   192.168.252.21    

因此,您需要以下更新

  1. 删除cnc.example.orgreport.example.comnamed.conf.local
  2. .在父域的配置中添加与子域对应的所有条目(不带结尾)。您还可以在父母的区域中明确提及他们,例如

    host1.cnc.example.com.  IN A  192.168.252.21
    
  3. cnc.example.com删除和对应的区域文件report.example.com并重新启动BIND服务器。

相关内容