- PR -

BINDの資源レコードとCNAMEついて

1
投稿者投稿内容
katsu
会議室デビュー日: 2005/03/30
投稿数: 2
投稿日時: 2005-03-30 01:18
BINDのゾーンファイルを書いていて,質問があります.

まず,ネームサーバはnsという機能名ではなくホスト名hogeをAレコードで振りました.

1.
上位のDNSにサブドメインsubのネームサーバを登録したいのですが,
上位のゾーンファイルに,ns.subというNSレコードと
ns.sub解決のためのAレコードがペアで記述してあれば,
下位のゾーンファイル中でどんなホスト名(e.g. CNAME)だろうと問題無いのでしょうか?

2.
資源レコードにCNAMEを使うなという原則は同一のファイル内での話であって,
上位と下位では関連が無いのでしょうか?

3.
逆引きのためのゾーンファイル中にはSOA/NSレコードに書くホスト名のための
Aレコードは存在しませんが,これは実は適当で良いということなのでしょうか.
それとも,正引きのAレコードと関連しているので,
やはり正引き中のCNAMEを指定するのはまずいのでしょうか?

[ メッセージ編集済み 編集者: katsu 編集日時 2005-03-30 01:21 ]
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-03-30 10:57
引用:

1.
上位のDNSにサブドメインsubのネームサーバを登録したいのですが,
上位のゾーンファイルに,ns.subというNSレコードと
ns.sub解決のためのAレコードがペアで記述してあれば,
下位のゾーンファイル中でどんなホスト名(e.g. CNAME)だろうと問題無いのでしょうか?


下位(自身で管理するサーバ)でも、同一の NS レコードが必要です。
でもって、NS に指定したドメインが他ドメインでなければ、同一の A レコードも必要です。
場合によっては、それ以外の NS, A を加えることもあるでしょうが…(グレーだと思いますが)、最低限、上位に登録した NS,A が下位に無いのは問題です。
ちなみに、A の代わりに CNAME を使うのも N.G. です。

引用:

2.
資源レコードにCNAMEを使うなという原則は同一のファイル内での話であって,
上位と下位では関連が無いのでしょうか?


上位/下位や、ゾーンファイルに関わりの無い原則です。
なので、例えばセカンダリDNSサービスを受けているとして、

  @ IN NS secondary.example.com.

とゾーンファイルにかく場合、secondary.example.com. がサービス提供元で CNAME として登録されていると N.G. です。

引用:

3.
逆引きのためのゾーンファイル中にはSOA/NSレコードに書くホスト名のための
Aレコードは存在しませんが,これは実は適当で良いということなのでしょうか.
それとも,正引きのAレコードと関連しているので,
やはり正引き中のCNAMEを指定するのはまずいのでしょうか?


いや、適当で良いということは無いでしょう。
ただ、正引きで使っている NS を流用する場合、これは他ドメインのレコードになりますから、対応する A は書く必要がない…、といいますか、書いてはいけません。
流用しないで、xxx.xxx.xxx.in-addr.arpa. 内のドメインを NS に充てる場合は、正引きの時と同じく A が必要ですね。こちらの方が分かりやすくて良いと思います。

例: zone "0.168.192.in-addr.arpa" に対して

 @ IN NS ns       → 対応する A が必要
 ns IN A 192.168.0.1   → 対応する A (矛盾さえなければ、192.168.0.X に拘る必要も無い)
 @ IN NS ns.example.com. → 対応する A は書かない

のような感じで。
※実際は困ったことに、逆引きでは CNAME が多用されまくってますから、ややこしいことになりそうですが。

私が重要だと思うのは、「CNAMEは原則使用しない」ですね。使う必要が出てくる場面はほとんどありませんから。
あんとれ
ぬし
会議室デビュー日: 2004/01/14
投稿数: 556
投稿日時: 2005-03-30 11:28
CNAME は標準名を与えるレコードですが、その標準名が別名であることは許されていません。NS レコードや MX レコードの値も標準名である必要がありますので、CNAME で与えた別名を使用することはできません。

また、上位のネームサーバで CNAME を使ってしまったなら、下位のネームサーバでは CNAME を使うことはできません。ルートサーバからの検索に始まり、目的のアドレスにたどり着くまでに、CNAME は1度以上現れてはいけません。

以上のようなことから、さらにはパフォーマンスの観点から、私としてはできるだけ CNAME は使用しないことをお勧めします。

質問内容を十分に理解できていないので的を得ていない回答かもしれませんが・・・

[ メッセージ編集済み 編集者: あんとれ 編集日時 2005-03-30 11:32 ]
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-03-30 11:52
katsuさんへ

念のためですが…。

・O.K.な例
 @ IN NS ns
 ns IN A 192.168.0.1
 hoge IN A 192.168.0.1

・N.G.な例
 @ IN NS ns
 ns IN CNAME hoge
 hoge IN A 192.168.0.1

また、一般的に

・O.K.な例
 host1 IN A 192.168.0.1
 host2 IN A 192.168.0.1

・問題ないが非推奨
 host1 IN A 192.168.0.1
 host2 IN CNAME host1

・止むを得ない例
 host IN CNAME example.another-domain.example.com.
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2005-03-30 12:42
こんにちわ.
引用:

あんとれさんの書き込み (2005-03-30 11:28) より:

CNAME は標準名を与えるレコードですが、その標準名が別名であることは許されていません。NS レコードや MX レコードの値も標準名である必要がありますので、CNAME で与えた別名を使用することはできません。


「できません」でしたっけ?
「できるけどやるべきではない」ではなく?
NS はともかく,MX は結構やる人がいませんか?
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-03-30 13:33
引用:

「できません」でしたっけ?
「できるけどやるべきではない」ではなく?
NS はともかく,MX は結構やる人がいませんか?



RFC 1912(日本語訳)の2.4章によると、MXもN.G.ですね。

「できるけどやるべきではない」というのは、ある意味正しいです。なぜなら BIND 等のソフトは、そういう状況があったとしても、エラーとして排除しないため、「できる」からです。
# ただ、NS と CNAME の組み合わせは BIND でも N.G. だったように思います。
# MX 等に関して、今のバージョンはどうでしょう? これは把握していません。

とりあえず、私には、なぜ CNAME を使いたがる人がいるのか良く分からない…。
メリットが何かあるのかな? デメリットを上回るだけの。
CNAME はむしろ忘れた方が心安らかだと思いますけども。
# クラスレス逆引き委譲は、… やっかいですね。あまりにも広まってますから。

そうそう、djbdns関連のサイトでも説明がありますね。
ご参考まで。

[ メッセージ編集済み 編集者: angel 編集日時 2005-03-30 13:41 ]
katsu
会議室デビュー日: 2005/03/30
投稿数: 2
投稿日時: 2005-03-31 00:39
レス有難うございます.

>ルートサーバからの検索に始まり、目的のアドレスにたどり着くまでに、
>CNAME は1度以上現れてはいけません。
結局,これがあると,他のネームサーバでCNAMEを確実に使っていないと期待できないので,
「自分の管理するゾーンでも原則使わないでおく」ということに帰着してしまいそうな気がしますね・・・


>例: zone "0.168.192.in-addr.arpa" に対して
>
> @ IN NS ns       → 対応する A が必要
> ns IN A 192.168.0.1   → 対応する A (矛盾さえなければ、192.168.0.X に拘る必要も無い)
> @ IN NS ns.example.com. → 対応する A は書かない
1,2番目は単純なnsという表記だとドメイン?"0.168.192.in-addr.arpa."に解決する義務が生じるからAが必要ということですよね.

つまり,
1.自ドメインの名前は自ドメインで解決する.
2.他ドメインの名前は書きっぱなしで構わない.
3.とはいえ,資源レコードの名前は確実に標準名を指定しておく.
という事で良いのでしょうか.

標準名に機能を表す別名をつけたくてCNAMEを使おうと思ったのですが,
Aレコードを増やすだけで対応できるようなので,そっちにしておきます・・・
1

スキルアップ/キャリアアップ(JOB@IT)