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

NS(補足: ns1 と ns2 はどちらも同じ IP を持っているようで、単一障害点がまだ存在するため、2 つのエントリの存在は無意味です。)

ただし、クエリを実行する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) を確立していると仮定すると、次の操作を行う必要があります。

  • 2 つの新しいファイル (フォワード ゾーン ファイルとリバース ゾーン ファイル) を作成し、/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 (Start of Authority) 行の指定子も同様に明らかです。

NS レコードには、ホストの FQDN (完全修飾ドメイン名) が必要です。また、ファイルには、ホストの有効な IP アドレスを含む A レコードも必要です。テストには、ローカルホストの IP アドレス 127.0.0.1 を使用する必要があります。それ以外の場合は、実際の IP アドレスを使用します。

今日 (つまり、実行した当日) の日付を使用し、シリアル番号として 01 から始まるカウンターを追加する必要があります。上記のシリアル番号は、2020.01.22 の最初の変更です。シリアル番号は、ゾーン ファイルが変更されるたびに増加します。このサーバーをプライマリとして使用するセカンダリ ネーム サーバーが存在する場合、シリアル番号が増加しない限り、セカンダリ ネーム サーバーは更新されません。

次に、named.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

digの出力を見ると、返答がGoogleのパブリックリゾルバからのものであることがわかります。

;; SERVER: 8.8.8.8#53(8.8.8.8)

独自のネームサーバーとDNSゾーンをテストする場合は、dig独自のネームサーバーを照会し/etc/resolve.conf

dig ns1.example.com. @127.0.0.1

(またはテストに使用しているネームサーバーの IP アドレス)

関連情報