DNS 영역 파일을 만드는 방법

DNS 영역 파일을 만드는 방법

내 도메인은 easydata.ir이고 내 도메인에 대한 영역 파일을 생성했지만 "dig" 명령을 사용하면 다음이 반환됩니다.

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-9.P2.el7 <<>> ns1.easydata.ir
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 41395
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;ns1.easydata.ir.               IN      A

;; Query time: 136 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Wed Jan 22 00:17:20 EST 2020
;; MSG SIZE  rcvd: 44

그래서 구성 파일을 넣었습니다. 올바르게 설정하는 방법을 알려주세요.

$TTL 86400;
@ IN SOA ns1.easydata.ir. root.easydata.ir. (
  2013042201 ;Serial
  3600 ;Refresh
  1800 ;Retry
  604800 ;Expire
  86400 ;Minimum TTL ) ; add nameservers
@ IN NS ns1.easydata.ir. 
@ IN NS ns2.easydata.ir. ;IN MX 10 mail.easydata.ir.
ns1 IN A 198.143.181.237
ns2 IN A 198.143.181.237
www IN A 198.143.181.237
ftp IN A 198.143.181.237

Hera는 내 /etc/named.conf 파일입니다. 그것이 맞는지 알려주세요.

options {
        listen-on port 53 { 127.0.0.1; 198.143.181.237;};
        #listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        allow-query     { localhost; 87.107.219.167; };

        /*
         - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
         - If you are building a RECURSIVE (caching) DNS server, you need to enable
           recursion.
         - If your recursive DNS server has a public IP address, you MUST enable access
           control to limit queries to your legitimate users. Failing to do so will
           cause your server to become part of large scale DNS amplification
           attacks. Implementing BCP38 within your network would greatly
           reduce such attack surface
        */
        recursion no;

        dnssec-enable yes;
        dnssec-validation yes;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.root.key";

        managed-keys-directory "/var/named/dynamic";

        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
        type hint;
        file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

zone "easydata.ir" IN {
                type master;
                file "easydata.ir.zone";
                allow-update { none; };
        };

답변1

문제의 도메인을 잠깐 살펴보면 위임이 다음과 같은 모습임을 알 수 있습니다.

;; AUTHORITY SECTION:
easydata.ir.            1440    IN      NS      ns1.easydata.ir.
easydata.ir.            1440    IN      NS      ns2.easydata.ir.

;; ADDITIONAL SECTION:
ns1.easydata.ir.        1440    IN      A       198.143.181.237
ns2.easydata.ir.        1440    IN      A       198.143.181.237

(참고: ns1과 ns2는 모두 동일한 IP를 갖고 있으므로 NS여전히 단일 실패 지점이 있기 때문에 두 항목의 존재는 의미가 없습니다.)

그러나 쿼리하면 198.143.181.237상태가 포함된 응답이 반환됩니다 REFUSED(예: 네임서버가 이 영역에 대한 쿼리를 허용하지 않도록 구성되었거나 해당 영역이 전혀 존재하지 않음).

$ dig @198.143.181.237 easydata.ir NS +norec

; <<>> DiG 9.11.14-RedHat-9.11.14-2.fc31 <<>> @198.143.181.237 easydata.ir NS +norec
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 49376
;; flags: qr; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 921222c5e444e2602d3491645e282d41475c2ae33ad32e29 (good)
;; QUESTION SECTION:
;easydata.ir.                   IN      NS

;; Query time: 106 msec
;; SERVER: 198.143.181.237#53(198.143.181.237)
;; WHEN: Wed Jan 22 11:08:49 UTC 2020
;; MSG SIZE  rcvd: 68

$

구성( named.conf또는 다음을 사용하여 참조된 파일)을 확인하세요.include), 특히 관련zone항목이 제자리에 있고 있는지 여부allow-*쿼리를 허용하지 않는 zone또는 섹션 의 지시어 .options

특히 구성의 이 줄은 이름 서버에 쿼리할 수 있는 사람을 심각하게 제한하므로 문제가 있는 것처럼 보입니다.

allow-query     { localhost; 87.107.219.167; };

해당 줄을 완전히 주석 처리하거나 제거하는 것이 아마도 가장 깨끗한 해결책일 것입니다.

답변2

해당 도메인에 대한 신뢰할 수 있는 소스인 기본 이름 서버가 이미 있고 도메인을 설정하기 위해 Named.conf를 변경했다고 가정하면(예: example.com) 다음을 수행해야 합니다.

  • /var/named 디렉터리에 배치할 정방향 및 역방향 영역 파일이라는 두 개의 새 파일을 만듭니다. 이 위치는named.conf 구성 파일의 "directory" 지시문에 의해 지정됩니다.

정방향 영역 파일 만들기

정방향 영역 파일에는 해당 영역의 호스트 이름(도메인)과 해당 IP 주소를 쌍으로 연결하는 "A" 레코드가 포함되어 있습니다. 또한 A 레코드의 실제 호스트 이름에 대한 별칭인 CNAME 레코드와 메일 서버의 MX 레코드가 포함될 수도 있습니다.

기본 정방향 영역 파일 /var/named/example.com.zone을 만들고 다음 줄을 추가해야 합니다. 영역 파일은 아래 샘플과 같아야 합니다.

; Authoritative data for example.com zone
;
$TTL 1D
@   IN SOA  serv.example.com   root.serv.example.com. (
                                       2020012201      ; serial
                                       1D              ; refresh
                                       1H              ; retry
                                       1W              ; expire
                                       3H )            ; minimum

$ORIGIN         example.com.
example.com.            IN      NS      serv.example.com.
epc                     IN      A       127.0.0.1
server                  IN      A       192.168.2.1
www                     IN      CNAME   server
mail                    IN      CNAME   server
test1                   IN      A       192.168.2.24
t1                      IN      CNAME   test1

; Mail server MX record
example.com.            IN      MX      10      mail.example.com.

주석이 아닌 첫 번째 라인은 TTL이며, 이 경우 모든 레코드에 대해 1일입니다(D는 Day를 나타냄). SOA(권한 시작) 줄의 지정자도 마찬가지로 명확합니다.

NS 레코드에는 호스트의 FQDN(정규화된 도메인 이름)이 있어야 합니다. 또한 호스트에 대한 유효한 IP 주소가 있는 파일에 A 레코드가 있어야 합니다. 테스트하려면 로컬 호스트 IP 주소 127.0.0.1을 사용해야 합니다. 그렇지 않으면 실제 IP 주소입니다.

오늘 날짜(현재 날짜와 동일)를 사용하고 일련 번호에 01부터 시작하는 카운터를 추가해야 합니다. 위 일련번호는 2020.01.22의 첫 번째 변경사항입니다. 일련번호는 영역 파일이 변경될 때마다 증가됩니다. 이를 기본 이름 서버로 사용하는 보조 이름 서버가 있는 경우 일련 번호가 증가하지 않으면 업데이트되지 않습니다.

이제 명명된.conf에 정방향 영역 파일을 추가해야 합니다.

그러나 DNS 서버가 작동하기 전에 /etc/named.conf에 새 영역 파일을 가리키는 항목을 만들어야 합니다. 최상위 힌트 영역 항목 아래, "include" 줄 앞에 다음 줄을 추가합니다.

zone "example.com" IN {
        type master;
        file "example.com.zone";
};
  • 다시 시작이라는 이름의
  • dig 및 nsloookup 명령을 사용하여 테스트합니다.

    test1.example.com을 파헤쳐 보세요

    dig mx example.com

    nslookup test1.example.com

    www.amd.com을 파헤쳐 보세요

/etc/resolv.conf 파일에 example.com의 도메인 및 검색 항목이 제공되는 한 nslookup 명령을 제외하고 이러한 명령에 FQDN을 사용해야 합니다. 그렇지 않은 경우 모든 테스트에 FQDN을 사용하세요.

그런 다음 필요한 경우 루트 이름 서버 사용을 시작할 준비가 되어 있어야 합니다.

답변3

발굴 결과에서 얻은 응답이 Google 공개 리졸버로부터 온 것임을 알 수 있습니다.

;; SERVER: 8.8.8.8#53(8.8.8.8)

dig자신의 이름 서버와 DNS 영역을 테스트할 때 자신의 이름 서버를 쿼리하고 다른 이름 서버를 사용하지 않도록 지시해야 합니다 /etc/resolve.conf.

dig ns1.example.com. @127.0.0.1

(또는 테스트 중인 이름 서버의 IP 주소가 무엇이든)

관련 정보