自分のDNSへの理解を整理する(登場人物整理編)

DNSの話してたら、すぐ「浸透言うな」って言われるんだけど。じゃあなんて言えばいいのって聞いても「勉強しろ」って言われるだけだし、ムカつくんだけど。

じゃあ勉強しましょう!

俺が馬鹿だって言いたいの?第一勉強ったって、何勉強すんのよ。RFCでも読めってか?そんな時間あったら仕事するわ!

確かに。ではまずは考え方の整理だけでもしてみましょうか。そのうえで、自分が何をしているか、何を言っているのか、何を勉強しろって言われてるかを検討してみるぐらいならできるんじゃないでしょうか?

それもめんどくさいけど…じゃあツッコミ入れてやるわ。

お手柔らかに…

前提知識となる登場人物たち

まずはDNSの話をするにあたって、知ってる知識の整理として関係する用語やシステムを確認してみようと思うんですが、どれぐらいあげられますか?

関係する用語?えーっと

  • 名前解決
  • DNSサーバ、ネームサーバ
  • キャッシュ
  • TTL
  • リソースレコード
  • 浸透
  • お名前

ぐらいじゃない?

知ってるもの全部出してもらった感じですかね。ところで、最後の「お名前」っていうのは…?

知らねーの?お名前.com ってところに申し込んでドメイン取らなかったら独自ドメイン使えねーじゃんか。

なるほど、「お名前」というのはレジストラのことなんですね。

レジストラ…?

レジストリとレジストラ

レジストラというのは、「ドメイン名登録サービス業者」のことです。主に

  • ドメイン名の登録代行、維持管理
  • 申請者情報の確認

なんかをしています。

あーそうね、確かに独自ドメイン取るときに金払うわ。で、レジストラから各PCのレジストリの情報を書き換えるから浸透に時間が必要なんだろ?

各PCのレジストリの情報…?もしかしてWindowsのレジストリのことと混同されてるのかもしれませんね。

ここで言うレジストリとは「ドメイン名の一元管理をする機関」のことです。日本のTLDである .jp なら「日本レジストリサービス(JPRS)」がそうですね。

JPRS…そういえばなんか電車の広告で見かけた気がするけど、そことお名前がなんの関係があるの?俺JPRSってところに金払ってないし、使ったこともねーわ。

そうですね、直接JPRSからドメイン名を購入することはないですね。

.jp 下のドメイン名を取得する場合は、JPRSの指定事業者=レジストラである「お名前.com」などを利用して取得することになります。そして、レジストラがレジストリに「このドメイン名は存在し、このネームサーバが管理しています」という情報を登録します。

まずはこれでドメイン名が契約上は確保できることになります。

なるほどなるほど。で、契約したドメイン名が確保された状態から浸透するまでに時間がかかるからなかなか使えないんだよな。72時間とかなげーよなー。

権威サーバ、キャッシュ、リゾルバ

そんなに待たなくても大丈夫ですよ。まずは先に権威サーバを用意しておきましょう。

(権威サーバ…?)

その前に一つ確認させてください。

先程用語のところで「DNSサーバ」をあげられていましたが、これは何をするもののことですか?

え?いや、ネットワークの設定で「DNSサーバ」の設定してなかったらドメイン名でアクセスできねーじゃん。

なるほど、「DNSサーバ」は「リゾルバ」のことをおっしゃっていたのですね。では「リソースレコード」についてはどうですか?

リソースレコードはあれだよ、DNSサーバに登録する情報だよ。例えばWebサーバだったら「www」とか名前つけるじゃん。あれ最初に考えたやつなんで草生やしたんだろうなw

(草…「www」は「World Wide Web」のことなのですが…)

「リソースレコードはDNSサーバに登録する情報」ということは、先程の「ネットワークの設定」で指定したホストに情報を登録する、というご認識ですか?

は?だから浸透が必要なんだろ?

DNSサーバが世界中にたくさんあるのに、俺が登録したリソースレコードが全部のDNSサーバに浸透しなかったら他のPCから俺のドメインにアクセスできねーじゃん。そんなことも想像つかねーの?マジ草wwww

いえいえ、あなたの登録した情報は世界中に広めなくても、リゾルバが勝手に取りに来てくれるんですよ。あなたはご自身のドメイン名を管理する権威サーバに正しい情報(リソースレコード)を登録しておけばよいのです。

そういえばさっきも権威サーバとか言ってたけど、そんな設定聞いたことねーぞ。だいいち、浸透を待つ必要があるのはキャッシュのTTLが残ってるからってのも理由なんだろ?浸透言うな勢から散々言われたわ。「キャッシュが残らないようにTTLを短くしろ!しないで文句ばっか言うな」とかな。うぜーわー。

「キャッシュ」「TTL」も用語としてあげられていましたね。具体的にどのようなものですか?

は?

  • TTL: Time to Liveの略で、有効期限のこと
  • キャッシュ: 問い合わせた結果とかを再利用するために保持しておく情報

だろ。ITパスポートレベルの知識だぜwww

何がどこに問い合わせた結果が、どこに保持されるのですか?

そりゃー俺のPCがDNSサーバに問い合わせた結果が俺のPCにキャッシュされるんだろ。

おや?PCにキャッシュされるのであれば、「TTL短くしてないせいで浸透しない」問題はPCを再起動してキャッシュをクリアすれば解決する、ということになりませんか?

そりゃ屁理屈だろ。だって俺が設定したリソースレコードはDNSサーバに浸透するんだから、キャッシュ関係ねーじゃん。

ではTTLが関係するという「キャッシュ」とはどこに保持されているのでしょう?

だから俺のPC…じゃなくて…DNSサーバのキャッシュだよ。そうそう、DNSサーバ上のキャッシュの話なんだって。

浸透(とは)

「DNSサーバに問い合わせた結果がキャッシュされる」ということでしたが、「あなたが名前解決するために、あなたのPCに設定したDNSサーバに問い合わせた結果を、あなたのPCに設定したDNSサーバとなっているホストがキャッシュする」ということですか?

そそw DNSサーバのキャッシュに残ってるから、浸透しないと新しい情報が有効にならないってわけ。

では、リソースレコードは「DNSサーバのキャッシュ」に浸透するのですか?再利用するために保持しているはずのキャッシュの情報は、再利用されるのではなく置き換えられるものなのですか?

まーTTLが切れたら置き換えになるし、それまでの時間は浸透待ちってことで。

ではDNSサーバがメンテナンスや障害などで再起動してしまったら、キャッシュがクリアされてしまうのでせっかく浸透した情報は消えてしまい、また浸透するまで待つ必要があるということでしょうか?

そうなんじゃない?しらんけど。浸透しきったあとは「つながらない」とか言われたことないからなんかうまいことDNSサーバがやってるんじゃないの?

DNSとデータベース

うまくやってくれてるといいですね。

ところで話題は変わるのですが、memcachedってご存知ですか?

あー、Webシステムで使うやつね。アプリケーションサーバがDBから取得した情報を高速に再利用できるようにするために、キャッシュとして使うあれだろ。こういうのとか。

第1回 memcachedの基本
今回から数回にわたり,最近Webアプリケーションのスケーラビリティの分野で話題になっているmemcachedについて,使い方や内部構造,運用について解説させて頂きます。

お、さすがですね。ところで、memcachedには浸透の仕組みはないのですか?

あるわけねーじゃんw MySQLとかポスグレとかのDBへの更新内容がmemcachedのキャッシュに勝手に反映されたらおかしいだろww

memcachedにはないのに、DNSには浸透の仕組みがあるということですか?

そういうもんなんじゃねーの?俺DNS屋じゃないから知らん。

なるほどだいぶ整理できてきました。

  • 再帰問い合わせ、反復問い合わせ、ルートサーバ
  • レジストリ、レジストラ
  • 権威サーバ、リゾルバ
  • レコード、キャッシュ

あたりをやってみると良さそうですね。

…おい、なんとか問い合わせとかルートサーバなんてさっきまでの話で一度も出てねーぞ、勝手に増やすなよ。

触れないわけにはいかないんですよ。お付き合いください。

続く…はず

コメント

タイトルとURLをコピーしました