D. J. Bernstein [Translated into Japanese by MAENO Toshinori]
Internet publication
djbdns

1. Domain Name Systemに関するノート

1.1. グルーなし(Gluelessness)

君が DNS キャッシュだとして、 www.espn.tvのアドレスを知りたいとしよう。 たまたま、.tvのネームサーバのアドレスを知っていたので、 そこにwww.espn.tvのアドレスを問合せてみた。 そしたら、「私は知らない。でも、 .espn.tv には二つのネームサーバがある。 ns-1.disney.corpとns-2.disney.corpだ。 そっちに尋ねてみたら。」という返事だった。

そこで、ns-1.disney.corpに尋ねることにする。 でも、ns-1.disney.corpのアドレスはしらないぞ。 ns-1.disney.corpのアドレスを調べる間は 元々の質問は棚上げしておくしかない。 たまたま.corpネームサーバのアドレスは知っていたので、 そこにns-1.disney.corpのアドレスを問合せた。 そしたら、「私は知らない。でも、 .disney.corpには二つのネームサーバがあることを知っている。 zone.espn.tv と night.espn.tvだ。 そっちに尋ねててみたら。」という返事だった。

最低線: espn.tvには到達できない。 そして、disney.corpにも到達できない。

もしzone.espn.tvが .espn.tvのネームサーバだったなら、 .tvサーバはzone.espn.tvのグルー(glue) つまり、zone.espn.tvのIPアドレスを教えてくれただろうに。 それなら、zone.espn.tvにコンタクトできたろうに。 RFC 1034 では ゾーン内のネームサーバ参照 (この場合に限ってglue という語を使う人々もいる。) には必ずグルーをつけることを要求している。

しかしながら、管理範囲外のネームサーバに対するレファラル(参照)に関しては、 RFC 1034 ではグルーは不要だとあり、 RFC 1537 も同様、 RFC 1912 も同様である。(訳注:RFC 1537 は1912によりobsoleteになった。) comp.protocols.tcp-ip.domainsの FAQには 「グルーレコードは不要である。また、事実、つけるのはとても悪い考えである。」 とある。(これは事故による毒入れを参照しているが、もう古い; 前出)

DNS サーバ(訳注:クライアント)の実装には デフォルトでは管理範囲外グルーを無視するものもある。 それゆえ、グルーなしドメインである espn.tv と disney.corp は 規定には従っている。でも、どちらにも到達できないのだ。

ループがない場合でさえ、トラブルは起きうる。 次の状況で、BIND キャッシュがwww.espn.tvを解決しようと するものとせよ。

     espn.tv NS ns-1.disney.corp
     espn.tv NS ns-2.disney.corp

     disney.corp NS ns-1.disney.corp
     disney.corp NS ns-2.disney.corp

BIND は www.espn.tvがns-1.disney.corp へ グルーなしで委譲されているのをみて、 www.espn.tvの問合せは「無視(drop)」する。 そして、 www.espn.tvの問合せが再度来るまでに ns-1.disney.corpのアドレスがキャッシュされているように ns-1.disney.corpの 問い合わせ(sysquery)を開始する。 (BIND の開発者たちはこのバグのことを no query restartと呼んでいる。) 一般にクライアントは4回までしかリトライしないので、 グルーなしが4段続くと最初のドメインの問合せは失敗に終る; グルーなしが3段続のときも最初のドメインの問合せは失敗に終る可能性が高く、 成功するとしても非常に遅いであろう。

2000年には以下のように書いた。 「私の知る限りでは、インタネット全体としてはまだ グルーなしが理由でドメインは失なわれてはいない。」 しかし、 グルーなしドメインは『増えつつある』。 私は グルーなしネームサーバ(複数)を持ったグルーなしドメインを一つ見つけた。 キャッシュはどの程度のグルーなしを許容すべきだろうか。 現在、dnscache は 3 段までのグルーなしを許している。 現状ではこれでも十分だが、将来も十分なのだろうか。」と。

その後、www.monty.deについて知った。 それはあまりに多くの段数のグルーなしがあったため、 BIND キャッシュには解決不能だった:

     monty.de NS ns.norplex.net
     monty.de NS ns2.norplex.net

     norplex.net NS vserver.neptun11.de
     norplex.net NS ns1.mars11.de

     neptun11.de NS ns.germany.net
     neptun11.de NS ns2.germany.net

     mars11.de NS ns1.neptun11.de
     mars11.de NS www.gilching.de

     gilching.de NS ecrc.de
     gilching.de NS name.muenchen.roses.de

dnscache は www.monty.deのアドレスを見つけられたが、 しかしそれには いくつものサーバに 14 回もの問い合わせをしなければならなかった。

すべてのネームサーバをグルーつきゾーン内ネームサーバとすることを推奨する。 外部名から内部名へ自動的にコピー(なんらかの安全な方法を使うことが望ましいが) したアドレスレコードをつけて、 外部ネームサーバには内部名を与えてやるべきだ。

NS レコードや MX レコードにおいては名前ではなく、アドレスを持つように DNS を設計すべきであった。 
DNS応答の``additional section'' はなくすべきだった。 

RFC 1035 の以下の観察は正しい。
 NS の間接参照と MX の間接参照はアドレスの整合性を保つ; ``insure [sic] consistency'' でも、この間接参照はクライアントではなく、サーバで処理されるべきであった。

この観点から A6 と DNAMEについて論じたページを 別に作った。 2002-02-12 訳:前野年紀

1.2. history


CategoryDns CategoryWatch CategoryTemplate

MoinQ: djbdns/DNSについてのノート/グルーなし (last edited 2024-10-19 01:53:47 by ToshinoriMaeno)