하나의 바인딩 서버에서 상위 및 하위 도메인을 호스팅할 수 있습니까?

하나의 바인딩 서버에서 상위 및 하위 도메인을 호스팅할 수 있습니까?

참고: 이것은 재포스트입니다.내 이전 질문, 보류되었으며 더 명확하게 설명하기 위해 바꿔 달라고 요청했습니다(이것이 더 이해가 되기를 바랍니다).


DNS 서버가 설치되어 있고 모든 도메인의 장치가 단일 DNS 서버에서 DNS 쿼리를 처리할 수 있도록 상위 도메인( )과 두 개의 하위 도메인( 및 )을 bind호스팅하도록 설정하려고 합니다 .example.orgcnc.example.orgreport.example.org

첫 번째 질문이 가능합니까?

그렇다면 왜 다음 오류가 발생합니까?

내가 받은 도메인 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
  • 도메인 이름 확인 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

* 호스트1의 /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.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.

Host1 또는 Host2에서 나는 다음을 얻습니다.

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.

나는 호스트1과 호스트2의 /etc/hosts합계 파일이 여전히 합계 /etc/hostname여야 한다고 가정합니다.host1.cnc.example.orghost2.report.example.org

/etc/hosts"해야 한다"라고 말할 때 무슨 뜻인지 잘 모르겠습니다 host1.cnc.example.org. 이 /etc/hosts파일은 호스트 이름과 IP 주소를 매핑하는 또 다른 방법입니다. 호스트 이름이 2~3개만 있는 경우 내부 DNS의 복잡성을 피하고 해당 항목을 /etc/hosts. 중앙 집중식 솔루션. (그러나 이것은 nslookup의도적으로 무시 된다는 점을 기억하십시오 /etc/hosts.)

이렇게 하면 어느 호스트에서나 nslookup host1.cnc.example.orgIP nslookup host2.report.example.org주소가 올바르게 확인됩니다.

예. 정규화된 이름을 제공하면 올바르게 확인 nslookup됩니다 bind. 이는 DNS 중 하나가 제대로 작동하고 있음을 증명합니다.

모든 쿼리를 처리하려면 DNS 서버가 필요하며 example.org새 장치가 네트워크에 통신하여 새 명령 실행을 요청할 때 쿼리하고 cnc.example.org( 192.168.252.21) 로 연결되지만 보고서를 네트워크로 다시 보내려고 할 때 도메인을 쿼리 하고 (192.168.252.20) 로 직접 연결합니다.report.example.orgcnc.example.orghost1.cnc.example.orgreport.example.orghost2.report.example.org

이를 위해 CNAMEDNS의 (별칭) 레코드를 사용하여 쿼리를 report.example.org호스트에 매핑합니다 host2.report.example.org. 귀하의 질문에 host2호출하면 안되는 기술적 이유가 없다는 점에 유의하십시오 host2.example.org. CNAME레코드는 현재 (하위)도메인의 호스트뿐만 아니라 어디든 가리킬 수 있습니다.

답변2

. 하지만 하위 도메인에 대해 별도의 구성을 만들 필요는 없습니다.

끝에 있는 "A"는 .전체 도메인 이름을 나타내고, "A"가 없으면 .원래 도메인의 하위 도메인을 나타냅니다.

cnc.example.com해당 항목은 구성에만 추가하세요 example.com.

host1.cnc      IN  A   192.168.252.21    

따라서 다음 업데이트가 필요합니다.

  1. 삭제 cnc.example.org하고report.example.comnamed.conf.local
  2. .상위 도메인 구성에 하위 도메인에 해당하는 모든 항목(후행 없음)을 추가합니다. 부모 영역에서 명시적으로 언급할 수도 있습니다.

    host1.cnc.example.com.  IN A  192.168.252.21
    
  3. cnc.example.com해당 영역 파일을 삭제 하고 서버를 report.example.com다시 시작합니다 .BIND

관련 정보