今日は奇妙な出来事に遭遇しました。
通常、bind9 ゾーン レコードを設定するときは、NS レコードを ORIGIN と同じにします。ただし、今日、NS レコードが別のドメインを指している、運用サイトで機能している bind9 設定が 1 つ見つかりました。
[データ/cat_com.zone]
$ORIGIN cat.com.
$TTL 600
@ IN SOA ns.tree.com. hostmaster.cat.com. (
2015030200
21600
3600
604800
86400 )
IN NS ns.tree.com.
IN NS ns2.tree.com.
IN MX 10 cat.com.
ns IN A 1.2.3.124
ns2 IN A 1.2.3.124
host19 IN A 1.2.3.66
tree.comの記録では: [data/tree_com.zone]
$TTL 600
@ IN SOA ns.tree.com. hostmaster.tree.com. (
2015030200 ; serial
28800 ; refresh
7200 ; retry
3600000 ; expire
86400 ; default_ttl
)
@ IN NS ns.tree.com.
@ IN NS ns2.tree.com.
@ IN MX 10 mail.tree.com.
tree.com. IN A 1.2.3.66
ns.tree.com. IN A 1.2.3.124
ns2.tree.com. IN A 1.2.3.124
named.conf には次のように記述されています:
zone "tree.com" {
type master;
file "data/tree_com.zone";
};
zone "cat.com" {
type master;
file "data/cat_com.zone";
};
したがって、cat.com、たとえば host19.cat.com の A レコードを解決しようとすると、レコード 1.2.3.66 を取得できます。これは奇妙です。なぜなら、SOA ゾーン ファイルによると、NS レコードは ns.tree.com を指しており、tree.com の SOA ゾーン ファイルには host19.cat.com の情報がないからです。この場合、DNS 解決プロセスはどのようにしてエラーなしで動作するのでしょうか。NS レコードはここで役割を果たしているのでしょうか。それとも、どの SOA ゾーン ファイルを使用するかを決定するのは named.conf のみであり (この場合、cat.com は cat_com.zone ファイルを参照します)、cat.com SOA の NS レコードは何も意味しないのでしょうか。
答え1
ドメイン名/ゾーン ファイルをそのドメイン外のネーム サーバーを指すように設定してもまったく問題ありません。つまり、それをドメインns1.example.com
のネーム サーバーとして使用してもまったく問題ありませんexample.org
。
必要ないということを意味するだけでなくグルーレコードゾーン内ではexample.org
、管理も容易になることが多いです。
ns1.example.com
外部NSレコードは、ドメインのリソースレコードexample.org
もゾーンデータから取得する必要があることを意味すると考えるのは、少し概念的な間違いだと思います。example.com
そうではありません。NSレコードは、ホストそのドメインの名前サービスを実行しますが、リソース レコードはexample.org
ドメイン固有のゾーン データから取得されます。