インターネットの根幹を支えている、世界に13台しかないDNSルートサーバーの1台が、4日間にわたり、他との同期を失う不具合を起こしていたことが分かりました。
同期を失っていたのは、Cogent Communicationsが管理するDNSルートサーバー。DNSとは、Domain Name Systemの略称で、人々がインターネットにアクセスするときに使うドメイン名とIPアドレスの紐付けを管理する役割を果たしています。
インターネットはこのDNSを階層的に構築しており、その最上階層にあるのが13台のルートサーバーです。
たとえば、誰かがブラウザーを開いてWikipediaを閲覧しようと思い、Wikipediaへのリンクをクリックしたとします。するとコンピューターはリンクのコードに記述されたURL「wikipedia.org」にアクセスしようとします。
しかしインターネット上の機器はIPアドレスをもとに通信する仕組みであるため、まずは「wikipedia.org」という名前に紐付けられたIPアドレスは何かという問題を解決しなければなりません。
ここで利用されるのがDNSです。この仕組みでは、まずPCやスマートフォンなどのクライアントとなるコンピューターが、OSやブラウザーに設定された、プロバイダーが指定するDNSサーバーや、またはGoogleなどが独自に提供するパブリックDNSサーバーに「wikipedia.org」のIPアドレスを調べるよう依頼します。
すると、リクエストされたDNSサーバーは再帰的リゾルバーとして13台あるDNSルートサーバーのひとつにアクセスし、トップレベルドメイン(TLD)である「.org」を管理するTLDネームサーバーのIPアドレスを引き出します。
リゾルバーは、今度は「.org」ドメインを管理するTLDネームサーバーに「wikipedia.org」ドメインを管理するネームサーバーのIPアドレスをリクエストし、それを入手します。
さらに、リゾルバーは得られた「wikipedia.org」ドメインを管理するネームサーバーに「wikipedia.org」のIPアドレスを要求し、得られたIPアドレスをクライアントに返します。
このようにしてクライアントは、得られたIPアドレスにアクセスすることで「wikipedia.org」を閲覧できるようになります。
13台のDNSルートサーバーは冗長性を得るため世界中に分散して存在しており、相互に情報を同期して足並みを揃えています。そのため、あるルートサーバーに変更があった場合でも数秒から遅くとも数分以内にはすべてのサーバーの情報が更新されるようになっています。
ところが今回発生した問題では、米国のCogent Communicationsが運用するCルートサーバー(アルファベット順でAからMまである内の3番目)で、なぜかこの更新プロセスが停止してしまいました。
このことを発見したフランスの技術者ステファン・ボルツマイヤー氏は、発見時点でCルートサーバーの情報が、他のルートサーバーより3日遅れていたと指摘しています。
このCルートにおける情報更新の遅延は、発見から2日後には1日分の遅れにまで短縮し、その翌日になってようやく他の12台に追いつきました。
しかしこの問題により、「.gov」および「.int」ドメインを管理するネームサーバーで、DNSの情報に電子署名を施すDNSSECと呼ばれる仕組みに加える予定だった変更作業を延期するなどの影響が発生しています(新しい暗号鍵を均一に展開できないため)。
もし、Cルートが他との情報を同期する前に上記の変更作業を実行すれば、場合によってはインターネット全体でアクセスがおかしくなる可能性があったとのことです。
Cogent Communicationsは声明を発表し、運用しているCルートサーバーの不具合について、その発生から3日間気づかなかったこと、問題の修正に25時間かかったことを明らかにしています。
CogentはCルートに問題が発生している間、他のISPとトラフィックやその他情報の交換する「Peering」と呼ばれる相互接続関係を、インドのTata Communicationsとの間で解消する変更を実施していました。また、Cルートサーバーのウェブページもアクセスできない状態が発生していました。
Cルートサーバーのウェブページの問題は、後にサイトのホスティングに使用していたIPアドレスを、それまでとは別の会社に移転したことが原因だったと判明しています。
しかし、Cルートサーバーにおける情報更新の停止と、Tata CommunicationsとのPeering関係が関連したものであるのか、個別の問題だったのかは、まだはっきりとはしていません。