Возможно ли разместить родительский и дочерний домен на одном сервере привязки?

Возможно ли разместить родительский и дочерний домен на одном сервере привязки?

NB Это репостмой предыдущий вопрос, который был отложен и предложено переформулировать для большей ясности (надеюсь, это имеет больше смысла)


У меня установлен один DNS-сервер bind, который я пытаюсь настроить для размещения родительского домена ( example.org) и двух поддоменов ( cnc.example.orgи report.example.org), чтобы устройства в любом из доменов могли получать DNS-запросы, обслуживаемые одним DNS-сервером.

Мой первый вопрос: возможно ли это?

Если да, то почему я получаю следующие ошибки?

Когда я делаю это nslookup host1с report.example.orgдомена, я получаю

server can't find host1: SERVFAIL

Когда я делаю это nslookup host2с cnc.example.orgдомена, я получаю

server can't find host1: SERVFAIL

топология сети

Настройка выполняется следующим образом:

хост1:

  • IP-адрес 192.168.252.21/24
  • DNS-сервер 192.168.252.22
  • /etc/hostsсодержитhost1.cnc.example.org

хост2:

  • IP-адрес 192.168.252.20/24
  • DNS-сервер 192.168.252.22
  • /etc/hostsсодержитhost2.report.example.org

DNS-сервер:

  • IP-адрес 192.168.252.22/24
  • DNS-сервер 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.

* вывод из /etc/resolv.conf на DNSServer *

  # Generated by NetworkManager
    search example.org
    nameserver 127.0.0.1

* вывод из /etc/resolv.conf на хосте 1 *

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

* вывод из /etc/resolv.conf на хосте2 *

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

* вывод от dig DNSServer на 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

* вывод с dig host1 на DNSServer *

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.org, cnc.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.orgпоэтому nslookupправильно не возвращает вам ответ. В этом случае вам нужно либо заменить domain example.orgв вашем /etc/resolv.confна search 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.

Я предполагаю, что файлы /etc/hostsи /etc/hostnameна хостах host1 и host2 должны быть host1.cnc.example.orgиhost2.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-адрес

Да. Вы указали полностью определенное имя, которое nslookupbind) может быть правильно решено. Это доказывает, что DNS работает хорошо.

Мне нужен один DNS-сервер для обработки любых запросов example.orgи cnc.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.org. CNAMEзаписи могут указывать куда угодно, а не только на хосты в текущем (под)домене.

решение2

Да. Но нет необходимости создавать отдельную конфигурацию для поддомена.

Буква «А» .на конце означает полное доменное имя, а без нее .— поддомен исходного домена.

Добавляйте такую ​​запись только для cnc.example.comконфигурации example.com.

host1.cnc      IN  A   192.168.252.21    

Итак, вам нужны следующие обновления

  1. Удалить cnc.example.orgи report.example.comизnamed.conf.local
  2. Добавьте все записи, соответствующие поддомену без .at в конце конфигурации родительского домена. Вы также можете явно указать их в родительской зоне, например

    host1.cnc.example.com.  IN A  192.168.252.21
    
  3. Удалите соответствующие файлы зоны cnc.example.comи report.example.comперезапустите BINDсервер.

Связанный контент