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を指定する必要がありますか?
名前付き.confから:
zone "foo.bar" in{
type master;
file "zones/foo.bar";
};
Area/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
答え:はい、すべて同じです。ただし、確認のために実際にこれらのゾーンをDNSサーバーにロードしていません。たとえば、質問を読むときにタイプミスがあった可能性があります。 DNSサーバーにロードしてゾーン転送を許可してから送信すると、まったく同じ結果が得られます。
詳細:
確認してみると 「その他の領域ファイルディレクティブ」BIND9 マニュアルの
$ORIGIN
デフォルト値はnamed.conf
.$ORIGIN
たとえば、サブドメインをより簡単に処理できるように($ORIGIN subdmain.domain.com.
その後、サブドメインのすべてのレコードを定義するために)、主に手動で作成されたファイルでそれを使用します。同じセクションでは、これが
@
現在の原点への近道であることを示します。だからスペルは全く同じです。名前を繰り返さずに同じ名前に対して 2 つのレコードを連続して指定すると、2 番目のレコードは暗黙的に最後のレコードの名前を使用します。見積もりRFC 1035(レコード名を呼ぶ。所有者):
最後の2つの形式はRRを表します。 RRエントリが空白で始まる場合、RRは最後に宣言された所有者が所有していると見なされます。 RRエントリが<domain-name>で始まる場合、所有者名はリセットされます。
(BTW:RFCにも$ORIGIN
あるので、@
同じゾーンファイル形式を使用するBIND以外のサーバーで動作する必要があります。私は1987年より最新の用語にBINDマニュアルを使用しています。)
これは「マスターファイル」形式の便利な機能であり、DNS有線プロトコルとは何の関係もありません。 BINDにファイルをロードすることもできません(たとえば、DNSの更新を許可したために書き換えゾーンファイルをバインドした場合は、#4に近いファイルを書き換えることがわかります)。