DNSの「浸透問題」は都市伝説――正しいサーバー引っ越し法を解説


 東京・秋葉原の富士ソフトアキバプラザで開催中の「Internet Week 2011」で11月30日、「DNS浸透の都市伝説を斬る~ランチのおともにDNS~」と題したセッションが行われた。株式会社日本レジストリサービス(JPRS)が主催するランチ付き無料セミナーという形になっており、その時々のDNS(Domain Name System)に関する話題を丁寧に説明してくれるので人気が高い。

株式会社日本レジストリサービスの森下泰宏氏(左)と民田雅人氏(右)会場の様子

浸透問題とは何か

 「浸透問題」という言葉は単なる通称であって、正式な言葉ではない。しかし、ネットワークに関係している人々の間では、「DNSの浸透が遅い」とか「DNSの浸透待ち」という言い方でサイトにアクセスできない状況を説明するのによく使われている。

 浸透問題は、(DNSのNSレコードを変更する必要が発生する)権威DNSサーバーの引っ越し時に多く発生し、あまりに多くの場面で使われているが、典拠が不明で原因や仕組みなどもよく知られていないのが現状である。では、その正体は何なのか? これが、今回掘り下げる話題の中心だ。セミナーでは、最初にJPRSの森下泰宏氏によって「浸透」という言葉がどのように使われているかが示された。

巷のつぶやき
事業者のウェブサイトでも、浸透という言葉が使われている
海外でも使われている

 そして、「浸透」がどのような時に使われているかの分析に続く。森下氏は、それらの結果から「浸透待ちという言葉が、作業がうまくいっていない場合の言い訳として使われているのではないか」という疑問を投げかけつつ、それ以前の違和感として「皆さん、新しいデータにばかり注目するが、DNSの場合、本質は古いデータにある」とした。

 多くの解説で使われている「新しいデータが反映されない」ではなく、「消えるはずの古いデータが残ってしまう」というのが浸透問題の本質である。そう述べる森下氏の説明は明快だ。

浸透という言葉が使われる場面
浸透問題の本質
古いデータが残ってしまう理由

サーバーの引っ越しと浸透問題の関係

 では、どのようにすれば浸透問題が起こらないようにできるのか? 森下氏は、それを、よくある引っ越しの例として、プロバイダーを変更する場合で説明した。ここはかなり技術的かつ多くのスライドで示されたので概要にとどめるるが、浸透問題が起こる場合の多くは、引っ越し元の権威DNSサーバーのゾーンデータを古いまま変更せずに、親の権威DNSサーバーに登録するNSレコードの切り替えだけを実施してしまうからであることが示されている。

浸透問題が起こりうる引っ越し方法
何がいけないかの解説

 このようなケースでの正しい引っ越し方法は、引っ越し先の権威DNSサーバーやウェブサーバーなどが稼働を始めた段階で、引っ越し元となる権威DNSサーバーのゾーンデータを新しいゾーンデータに書き換え、それから委任情報(DNSのNSレコードなどの情報)の変更をするという手順となる。それを行うことで、引っ越し元の権威DNSサーバーに名前解決依頼が来ても引っ越し先の権威DNSサーバーにそれを向けることができるようになるからだ。

正しい引っ越し方法の説明

 以降、引っ越し元の権威DNSサーバーで指定していたTTL値が満了し、かつ親となる権威DNSサーバーのNSレコードで指定しているTTL値が満了するまでの時間、新旧双方のサーバーを並行運用し、引っ越し元の権威DNSサーバーを停止すればよい。このあたりの詳細については、JPRSのウェブサイトに「JPRSトピックス&コラム DNSサーバーの引っ越し~トラブル発生を未然に防ぐ手順とポイント~」という形で提供されているので、より詳細な情報が必要な方はそちらをご覧いただきたい。

浸透問題の正体とは?

 これまでの説明では、浸透問題と言われる現象が正しくない方法で作業された場合に起こることが示された。そして、「この動作はバグなのか?」と続く。これは、キャッシュDNSサーバーが古いDNSデータを受け取ってしまう問題についての検討をしたものだが、そもそもすでにキャッシュされているデータと同じ信頼度のデータが来た場合にキャッシュDNSサーバーがどのようにふるまうかは決められておらず、DNSプロトコルに違反しているわけではないということが述べられている。

 そのため、浸透問題は「動作が決められていないため実装依存である」ことと、「正しい方法で引っ越しをしていない」ことの双方に起因する、複合問題であるとした。少なくとも、キャッシュDNSサーバーと権威DNSサーバーとの関係という点で見れば、正しい方法で引っ越しをすれば浸透問題は発生しないという点からも、それは明らかであるようだ。

 ここで、森下氏からJPRSの民田雅人氏にマイクが渡され、民田氏によってBINDを使用したキャッシュDNSサーバーの動作デモが行われた。基本的には、実際にキャッシュDNSサーバーを動作させ、IPアドレスがどのタイミングで切り替わるかなどをスクリーンに表示させて見せてくれるものだが、前述の浸透問題が起こりうる引っ越し方法であっても、現在の最新バージョンであるBIND 9.8.1-P1では浸透問題は発生せず、BIND 9.2.2では浸透問題が起きる様子が示された。また、別途BIND 9.2.2を使ったデモではある条件で動作が停止してしまうことなどが披露され、会場からどよめきが起こった。

民田氏のデモ

正しい知識の浸透が浸透問題の発生を減らす

 再び森下氏にマイクが戻されまとめに入ったが、結論としては、浸透問題というものは無く、正しくは「消えない問題」であり、解決方法として新しいデータではなく古いデータに着目すべきであるということ、正しい方法で引っ越しをすること、古いBINDなど、浸透問題を起こすDNSサーバーソフトウェアを使わないことなどが挙げられた。

 ただし、この作業はインターネット全体を見た場合には容易ではない。使えているからというだけの理由で古いバージョンを使い続けているところや、そもそも問題があることすら気付いていない管理者の配下にあるDNSサーバーなどの存在があるからである。JPRSの調査では、インターネットにおけるBIND 9.2系までのシェアはBIND 9全体の約33%もあるという。また、引っ越しの際に他の新しいデータや新しいサーバーのNSレコードを設定させてもらえないプロバイダーの存在も、浸透問題が発生する大きな原因となっている。

 つまり、浸透問題は、技術的に難しいというよりも、運用面や仕組み的に難しいから起こるというのが実情だろう。森下氏は、「古いBINDが無くならない限り、リスクは無くならない。古いBINDは捨てるべきだ」とし、その上で「正しい知識の浸透が浸透問題の発生を減らす」とした。締めくくりの言葉は、「(問題としての浸透ではなく)DNSに対する正しい知識を浸透させましょう」であったが、それに対して会場からは大きな拍手が沸き起こった。

ランチ付き無料セミナーということで、無料で昼食を食べられる点も人気の理由。今年はからあげ弁当(左)と中華弁当(右)だった




関連情報


(遠山 孝)

2011/12/1 16:25