web-dev-qa-db-ja.com

このゾーン構文に違いはありますか?

Ansible経由でバインドゾーンファイルを作成したいのですが。 jinja2テンプレートの構造を決定するには、これらのゾーン構成のいずれかに違いがあるかどうかを知る必要があります。

1.)古き良き方法:

$Origin foo.bar.
@       IN      SOA     dns.foo.bar. hostmaster.foo.bar. (
                        2018111601
                        3H
                        1H
                        604800
                        86400)

        86400   IN      NS      ns01.foo.bar.
        86400   IN      NS      ns02.foo.bar.

www             IN      A       10.0.0.1

-

2.)ゾーン名がすでにfoo.barの場合、$ Originを指定する必要がありますか?

named.confから:

zone "foo.bar" in{
    type master;
    file "zones/foo.bar";
};

ゾーン/foo.barから:

@       IN      SOA     dns.foo.bar. hostmaster.foo.bar. (
                        2018111601
                        3H
                        1H
                        604800
                        86400)

        86400   IN      NS      ns01.foo.bar.
        86400   IN      NS      ns02.foo.bar.

www             IN      A       10.0.0.1

-

3.)頂点を分割し、「@」を複数回使用する

$Origin foo.bar.
@       IN      SOA     dns.foo.bar. hostmaster.foo.bar. (
                        2018111601
                        3H
                        1H
                        604800
                        86400)

www             IN      A       10.0.0.1

@       86400   IN      NS      ns01.foo.bar.
@       86400   IN      NS      ns02.foo.bar.

-

4。)「@」プレースホルダーを使用しない

foo.bar.       IN      SOA     dns.foo.bar. hostmaster.foo.bar. (
                        2018111601
                        3H
                        1H
                        604800
                        86400)

foo.bar.       86400   IN      NS      ns01.foo.bar.
foo.bar.       86400   IN      NS      ns02.foo.bar.

$Origin foo.bar.
www             IN      A       10.0.0.1

-

私はいつもこれを答えとして欲しい:

$ Dig foo.bar ANY +noall +answer
foo.bar.    1784    IN  SOA dns.foo.bar. hostmaster.foo.bar. 2018121401 10800 3600 604800 86400
foo.bar.    86384   IN  NS  ns01.foo.bar.
foo.bar.    86384   IN  NS  ns02.foo.bar.

$ Dig www.foo.bar +short
10.0.0.1

質問:

  • すべてのバリアントが同じDNS回答になりますか?
1
Mario Nette

回答:はい、それらはすべて同じです。確認のためにこれらのゾーンを実際にDNSサーバーにロードしていないことに注意してください。たとえば、質問を読んだときにタイプミスを見逃した可能性があります。それらをDNSサーバーにロードし、ゾーン転送を許可してから転送します。まったく同じ結果が得られるはずです。

詳細:

  • BIND9マニュアルで 「その他のゾーンファイルディレクティブ」 をチェックすると、$Originはデフォルトでnamed.confで指定したゾーンになります。主に、手動で作成したファイルで$Originを使用して、サブドメインの処理を容易にします($Origin subdmain.domain.com.、次にサブドメインのすべてのレコードを定義します)。

  • 同じセクションで、@が現在のオリジンのショートカットであることがわかります。したがって、それを綴ることはまったく同じことです。

  • 名前を繰り返さずに同じ名前の2つのレコードを連続して指定すると、2番目のレコードは暗黙的に最後のレコードの名前を使用します。引用するには RFC 1035 (これは名前をレコードの所有者と呼びます):

    最後の2つの形式はRRを表します。 RRのエントリが空白で始まる場合、RRは最後に指定された所有者によって所有されていると見なされます。 RRエントリが<domain-name>で始まる場合、所有者名はリセットされます。

    (BTW:$Origin@もRFCに含まれているため、同じゾーンファイル形式を使用するBIND以外のサーバーに適用する必要があります。1987年より新しい用語を取得するためにBINDマニュアルを使用しました。 。)

これらはすべて「マスターファイル」形式の便利な機能です—DNSワイヤープロトコルとは何の関係もありません。それらは、ファイルをBINDにロードしても存続しません(たとえば、DNS更新を許可しているために、ゾーンファイルをバインドリライトしている場合、ファイルは#4にはるかに近くリライトされます)。

1
derobert