DNSの実体は超巨大なバケツリレー
12分34秒 | NW基礎FE
基本情報技術者試験の頻出テーマを解説した音声コンテンツです。
トランスクリプト(字幕テキスト)
普段ブラウザのアドレスバーにウェブサイトの名前打ち込みますよね。例えばweb-society.comみたいに。 そうすると、すぐにパッと目的のサイトが表示される。これ、もう当たり前になってますけど、よく考えたらなんか不思議じゃないですか? ええ、そうですよね。だって、コンピューターが本当に理解できるのって、192.0.2.1みたいなあの数字の羅列だけのはずで、 一体誰が私たちが打ち込んだこの名前をコンピューターがわかる数字に翻訳してくれてるんでしょうか。まさにそこが今日の革新ですね。 その仕組みこそが、今回共有してもらった資料のテーマでもあるDNS、ドメインネームシステムです。DNS、よくインターネットの電話帳なんて言われますよね。 ええ、言われますね。ただ個人的にはその例えちょっとだけ実体と違うかなって思ってるんですよ。おお、そうですか?電話帳、すごく分かりやすい比喩だと思ってましたけど。 分かりやすいのは、ええ、間違いないですが、電話帳って聞くとどうしても1箇所に全データがまとまってる、こう中央集権的なものをイメージさせちゃうじゃないですか。 ああ、なるほど。一冊の巨大な台帳みたいな。そうです。もし本当にそんなものが世界のどこかにあったらもうとっくの昔に破綻してます。全世界からのアクセスに耐えきれない。 確かに。DNSの本当の凄さってその逆で、徹底的に責任とデータを分散させた設計にあるんです。なるほど。発想がそもそも違うと。集めるんじゃなくて散りばめる。 その通りです。そしてそのバラバラの情報を繋ぎ合わせて、答えにたどり着くための仕組みが、資料にもあった超巨大なバケツリレーなんですよ。 バケツリレー、面白くなってきましたね。じゃあ早速そのバケツリレー、体験してみましょうか。私がブラウザにwww.web-society.comと打ち込んだその瞬間から、 最初の問い合わせはどこに行くんですか?はい、まずは一番身近な存在ですね。あなたが契約しているプロバイダーなんかが用意しているDNSサーバー。 これはキャッシュDNSサーバーとかフルリゾルバーなんて呼ばれます。キャッシュサーバー、ご近所のサーバーみたいな感じですかかね。 まさに。彼の最初の仕事は自分の記憶、つまりキャッシュを探して、あれ、最近この住所を調べたことあったかなって確認することなんです。もし覚えていれば、旅はコンマ数秒で終わります。 でも今回は初めてアクセスするサイトということにしましょう。キャッシュには何もない。そこでいよいよ外の世界に聞きに行くと。資料によると、まず向かうのはDNS階層の頂点、ルートサーバーとありますね。 ええ。ただここで一つ疑問が湧きませんか?ルートサーバーって世界にたった13系統しかないなんて言われてますけど、世界中からの問い合わせが全部そこに集中したら、 そこがボトルネックになっちゃいそうじゃないですか?まさにそれが気になってました。たった13系統で全世界のトラフィックをさばききれるものなのかなって。 いい視点ですね。その答えがエニキャストっていう技術なんです。物理的には世界中の何百何千という場所にサーバーが分散して置かれてるんですけど、 それらが全部同じIPアドレスを共有してるんですよ。え、同じIPアドレスを?そうです。なのであなたはネットワーク的に一番近いサーバーに自動で接続される。 日本からアクセスすれば日本の近くのルートサーバーが応答するし、ブラジルの人がアクセスすれば南米のサーバーが答える。だから見かけは13系統でも、 実体は数千のサーバー群が負荷を分散してるんで、全然ボトルネックにならないんです。はあ、なるほど。賢い仕組みですね。見えないところでそんな工夫が。 ではそのルートサーバーにたどり着きました。彼が答えを教えてくれる?いえ、それが違うんです。ルートサーバーは世界の管理者ではあるんですけど、個別の住所までは知らないんですね。 彼が知っているのは、各地域の担当者の連絡先だけ。ここで大事なのが、ドメイン名は右側から解決されていくっていう原則なんです。右側から?ええ。 www.web-society.comの場合、まず一番右の .com。この .com を管理している担当者。つまり .com DNSサーバーの場所を教えてくれるんです。 なるほど。答えそのものじゃなくて、次の担当者を指し示すだけと。そうなんです。じゃあその .com サーバーが答えを?それも違うんです。え、まだ何ですか? はい。 .com サーバーはこう言います。私は世界の .com を管理してるけど、web-society.com のことは知らないなと。web-society のことなら、彼ら専属のサーバーがいるから そっちに聞いてくれって。さらに担当者は案内するんです。おお、少し近づいてきた。今度こそその専属サーバーが。ええ、そうです。 最後にたどり着くのが、web-society.com に関する全情報を公式に管理している権威DNSサーバー。このサーバーこそが、最終的な答えを知っている、 いわばドメインの持ち主自身なんです。そしてついにその権威サーバーがIPアドレスは192.0.2.1ですよ、と教えてくれるわけですね。 はい、その通りです。これで一連の名前解決が完了すると。なるほど。まさにたらい回しみたいですけど、ちゃんと役割分担があって、最終的に答えにたどり着くんですね。 ええ。そしてこの一見遠回りに見える階層構造こそがインターネット全体の安定性を支えているんです。もしルートサーバーが全部知ってたら、 新しいドメインが登録されるたびに、世界の頂点の情報を更新しなきゃいけない。それは管理もセキュリティも、すごくリスクが高いんです。ああ、権限を委譲していくことで、 システム全体を柔軟にしていると。まさに。この一連の問い合わせの旅を、専門用語で名前解決と呼びます。文字通り、名前から本来の住所、IPアドレスを解決するという意味ですね。 名前解決。なるほど。ちなみに、その権威サーバーが持ってる情報って、IPアドレスだけなんですか?あ、すごくいい質問です。実は、IPアドレスを記したAレコードっていうのは、 彼が持つ情報の、ごく一部にしかすぎないんですよ。例えば、このドメイン宛のメールは、あそこのメールサーバーに送ってね、と指示するMXレコードとか、 他にもいろいろ、ドメインに関する公式情報をたくさん管理してるんです。へえ、単なる住所録じゃなくて、そのドメインの色々な設定情報が詰まってる、 だから権威サーバーなんですね。ええ、その通りです。で、この名前解決ですけど、資料にもあった正引きと逆引きの話にも繋がってきますね。ええ、ありました。 今やったみたいに、ドメイン名からIPアドレスを引くのが正引きですよね。その逆、IPアドレスからドメイン名を調べる逆引きって、どんな時に必要になるんですか? 例えば、あなたがサーバーを管理してて、ログに不審なIPアドレスからのアクセスが大量に記録されてたとします。はい。その時、このIPアドレスは一体どこの誰だ、って 身元を調べるために逆引きを使うんです。IPアドレスからドメイン名を調べることで、どこの会社のサーバーなのか、とかが分かることがある。サイバー攻撃の調査ではもう必須のテクニックですね。 なるほど。セキュリティ調査の文脈で重要になるんですね。正引きが普段使いの表の顔だとしたら、逆引きは裏だを名乗るための仕組み、という感じか。 まあ、そういう理解でいいと思います。正引きと逆引き、この二つはセットで、DNSの重要な両輪と言えますね。分かりました。でも話を戻しますけど、 やっぱり毎回サイトにアクセスするたびに、この壮大な旅をしていたら、いくらコンピューターでも時間がかかりすぎ。そこでさっき少し出たキャッシュが 決定的な役割を果たすわけですね。まさに。DNSの軽さと効率性は、このキャッシュという仕組みに集約されてます。最初に問い合わせを受けたあの近所のキャッシュDNSサーバーは、 彼は一度苦労して手に入れた web-society.com のIPアドレスは 192.0.2.1 という答えをしばらくの間に自分の記憶にちゃんと保持しておくんです。 だから2回目以降のアクセスは劇的に速くなると。ただ、そのしばらくの間、っていうのが気になりますね。もしサイトのIPアドレスが変わったら、 古い情報を覚えていたらサイトにアクセスできなくなっちゃいますよね。その通りです。そのために存在するのがTTL、タイムトゥライブという値です。 権威サーバーが答えを返すときに、この情報の有効期限は24時間ですよ、みたいに、キャッシュしていい時間をセットで教えてくれるんですよ。なるほど。有効期限付きのメモなんだ。 そうなんです。キャッシュサーバーはその指示にきっちり従って、期限が切れたら情報を捨てて、また権威サーバーまで最新の情報を聞きに行く。 情報の鮮度と表示速度のバランスをこのTTLで絶妙にコントロールしてるわけです。はあ。よくできてますね。でも、その設定を間違えたりすると…ええ。 このTTLの設定ミスは、大規模障害のあるあるでしてね。サーバー移転の計画があるのに、TTLをうっかり1週間とか長い値にしちゃうと、 移転後にIPアドレスを変えても、世界中が古い情報を1週間も持ち続けて、サイトにアクセスできないなんて悲劇が、実際に何度も起きてるんです。 それは怖い。キャッシュの効率性って、このTTLっていう緻密な時間管理の上に成り立ってるんですね。そうなんです。このおかげで、ルートサーバーみたいな 頂点のサーバーへの負荷は最小限に抑えられて、私たちユーザーは快適にブラウジングができる。キャッシュは、インターネットのスムーズな動作を支える ものすごく重要な縁の下の力持ちなんですよ。いやあ、腑に落ちました。つまりDNSは、単なる電話帳なんかじゃなくて、世界中に散らばったサーバーたちが 階層構造と時間管理に基づいて連携する、巨大で洗練された分散システムだったということですね。ええ。その総括が一番しっくりきますね。 そしてこの名前解決は、あなたがリンクをクリックするたびに、文字通り瞬きするよりも速いスピードで世界中で何十億回と実行されてるんです。 インターネットがこれほどスムーズに感じられるのは、この見えにくい、でも非常に洗練された伝言ゲームのおかげなんですね。当たり前の裏にこれほど 壮大な仕組みがあったとは。インターネットの見方が少し変わりました。さて、ここで最後に一つ、思考を深める問いを。このDNSのバケツリレーって、 途中にいるサーバーたちが正しい情報を教えてくれるっていう、絶対的な信頼の上に成り立ってますよね。ええ、そうですね。では、もしこのバケツリレーの途中にいる 誰かが悪意を持って、偽のIPアドレスを教えたらどうなるでしょうか?偽のIPアドレス。つまり、銀行のサイトにアクセスしたつもりが、全く別の偽サイトに 飛ばされちゃうみたいなことですか?まさにそれです。DNSキャッシュポイズニングと呼ばれる、古典的ですけど強力な攻撃ですね。 利用者はアドレスバーのURLは正しいと思ってるのに、裏側でDNSが嘘をついてるから、気づかないうちにフィッシングサイトに誘導されてしまう。 うわ、それは防ぎようがないですね。DNSっていうインフラそのものの信頼性が揺らぐ話だ。ええ。もちろん対策も考えられていて、DNSSEC、 DNSSECという技術があるんです。これはDNSの応答に電子署名をつけることで、その情報が本物で途中で改ざんされてないことを検証できるようにする仕組みです。 バケツリレーの各段階でその署名を確認していくわけですね。なるほど。性善説で動いていたシステムに、後から性悪説を前提とした検証機能を追加していると。 そういうことです。DNSSECの導入も世界的に進んではいますが、まだ完璧とは言えない。私たちの便利なインターネットライフが、いかにこの名前解決の正しさという、 ある意味もろい信頼の上に成り立っているか。そしてその信頼を守るために、今も技術的な進化が続いている。そのことを少しだけ 頭の片隅に置いてウェブを使ってみるのも面白いかもしれませんね。
このコンテンツは Web society で視聴・学習できます。