ドメイン名は親の心子知らず? DNSの委任構造と生まれながらの“業”


 東京・秋葉原の富士ソフトアキバプラザで開催された「Internet Week 2012」において21日、「親の心子知らず? 委任にまつわる諸問題について考える~ランチのおともにDNS~」と題したセッションが行われた。株式会社日本レジストリサービス(JPRS)が主催するこのランチ付き無料セミナーは、もはやInternet Weekに欠かせないプログラムになりつつある。今回のテーマは「委任(delegation)」。

万全ではないDNSの委任

 DNSにおいて「委任(delegation)」とは、ドメイン名の管理構造を階層化する上で極めて重要な仕組みである。委任という仕組みがあるからこそ、「example.jp」というドメイン名の管理者が「www.example.jp」や「mail.example.jp」というホストを自由に作ることができるようになる。しかし、JPRSの森下泰宏氏によれば、DNSの委任には技術的観点から見て注意しなければならない点があるという。DNSの安定運用のためには、その点を理解して対応することが大事になるということだ。

講師の森下泰宏氏と堀五月氏

 委任において注意しなければならない点、すなわち問題を引き起こす可能性がある点とはいったい何なのか? その核心部分の説明は、JPRSの堀五月氏による、委任そのものや委任とゾーン(zone)の関係、委任におけるSOAレコードとNSレコードの取り扱いの話など基礎的な知識についての解説に続き、「委任の特徴とそれに対する注意点」という形で始まった。森下氏はまず、DNSの委任で知っておくべき特徴として、親子それぞれの立場から見た

・親は、子がどんな状況であっても一方的に委任できる
・親は、子の状況が変化しても検知しない
・子は、委任の有無にかかわらず権威を自称できる
・子は、どの親からどのような形で委任を受けているかの情報を持たない

の4つと、委任を複雑にしている仕様

・NSレコードで名前を指定する
・親の委任情報と子の権威情報を同種のリソースレコードで指定する
・権威の根拠が権威の無い情報に依存している

の3つを合わせた合計7つを挙げた。

親子それぞれの立場から見た注意点

 では、これらの特徴がどのような注意に結び付くのか。その説明は、以下のようなものである。

 DNSの委任を親の立場から見た場合、親は、子の準備ができていない(例えば、子の権威DNSサーバーが権威のある情報を返さない)状態でも委任できてしまう。また、子のNSレコードで示される権威DNSサーバーが親のNSレコードに記述されている内容と異なっていても委任できてしまう。前者の場合には、いわゆる“Lame delegation”が発生することになる。また、一方的に委任できるということは、一方的に委任を解除・変更できるということでもあり、“幽霊ドメイン名”問題などを引き起こす場合がある。

 ただし、一方的に委任を解除できるという特徴は運用上の利点ともなりうる。例えば、フィッシングなど不適切な形で使われているドメイン名を、親の委任を解除することで強制的に使用不可能にすることができるのは、この特性によるものである。

 一方、子の側から見た場合、権威のある情報は子が設定・表明するために、親からの委任の有無にかかわらず任意のゾーンに対する権威を自称することができてしまうことになる。このことは、ホスティング事業者などが提供する一部のDNSサービスなど、複数のドメイン名を共用の権威DNSサーバーで管理している場合に問題を引き起こす場合がある。

 また、DNSではその特性上、子はどの親からどのような形で委任を受けているかの情報を持たない。そのため、子は自分がどの親から委任されているか、また、どのゾーンから委任されているか(あるいは、されていないか)という情報を持っていないという特性がある(森下氏によると、今回のタイトル「親の心子知らず」は、この特性から採用したとのことであった)。

 ただし、このことは利点にもなりうる。子は親からどのような形で委任を受けているのかの情報を持たないことから、逆引きDNSの世界的な整理などが行われた(ERXプロジェクト)ことや、.jpにおいて以前実施されたゾーンマージの事例が紹介された。

DNSが生まれながらに背負ってしまった“業”とは何か

 「DNSの設計・仕様において、『NSレコードで権威DNSサーバーを名前で指定していること』『親と子のNSレコードは役割が異なるのに同種のリソースレコードで指定していること』『権威を持つ子のNSレコードが権威を持たない親のNSレコードの存在を前提としていること』の3つが、DNSの委任を複雑にしてしまった。」

 そう語る森下氏は、「うまく設計すれば避けられたかもしれない」としつつ、こうした設計や仕様が「DNSが生まれながらに背負ってしまった“業”であると言える」と続けた。

 NSレコードで名前を指定するということは、当該権威DNSサーバーの情報を得るためにグルーレコードが必要になり、その取り扱いに極めて複雑な処理が必要になるため、そのことがトラブルや脆弱性を誘発する弱点となっている。また、そもそも論として、名前の委任先を名前で指定するという設計は不自然であるという説明も行った。森下氏は、この方式が採用されたことには理由があったが、それでも、名前でなくIPアドレスで指定するようにすればよかったのではないかという案を提示した。

 また、委任情報と権威情報を同種のリソースレコードで指定することは、管理者の誤解や混乱を招きやすいこと、そして、子の権威DNSサーバーの権威の根拠が、親のNSという権威を持たない情報に依拠していることがDNSソフトウェアの実装ミスを誘発しやすいことなども例として挙げている。

本質を理解することの重要さ

 本セミナーで説明された内容の多くはかなり技術的であったが、満員となった会場の参加者は食事を楽しみつつ熱心に耳を傾けていた。森下氏はその中で、「委任の本質を理解することが、委任に由来する不具合の発現を抑制することにつながる」とし、「注意点を知り、DNSきちんと運用することが重要である」とした。


関連情報

(遠山 孝)

2012/11/26 17:18