DNS(クライアント & サーバー)について『私が』『周囲の人に』知っておいてほしいことリスト


これは何でないか

  • 何かのオフィシャルではないし、何かを代表して公的に発言しているものではありません。

これは何であるか

  • 『私が』顧客とか、自社の人間に説明するとき、同じことを何度も書きたくないし、言いたくないためのメモです。

DNSについて他人に説明するとき、気をつけてほしいこと

  • コンテンツサーバ運用と、キャッシュサーバ利用の話をごっちゃにしてはいけない。
    • コンテンツサーバと、キャッシュサーバがそれぞれ何なのかくらいは、自分で調べてください。
    • 両方をまとめて「DNSサーバ」と呼ぶと、相手は混乱します。「DNSコンテンツサーバ」「DNSキャッシュサーバ」と呼ぶとよいでしょう。
  • コンテンツサーバ引っ越しの話と、自身の管理しているゾーンの中のAレコード書き換え等のスコープをごっちゃにしてはいけない。
    • 早合点しない。相手のことばを遮らず、ちゃんと最後まで「本当は何をしたいのか」を聞く。
  • 相手が納得いくまで、ちゃんと最後までケツを拭き、なんならトイレットペーパーを買い与えてやる、まで面倒を見るつもりがないのなら、説明してはいけない。
  • 自分を不当廉売しない。お金を取るべきシーンではちゃんとお金を取る。

本題

  • DNSは、多数のゾーン(管理責任範囲)を、多数の組織で、「分散して管理することができる」仕組み。
    • 分散しない選択もできる。
  • 毎回問い合わせをしていたら、(リゾルバも、ルートサーバーも)負荷が恐しいことになる。なのでキャッシュという仕組みがある。
    • キャッシュが永遠に切れなかったら、設定変更できないので、TTLという仕組みがある。
    • TTLはレコードに対して設定されており、キャッシュサーバのキャッシュ機構(および、実装されていればスタブリゾルバのそれでも)の上で減算されていく。
    • TTLがたとえば「1日」と設定されている場合、そのキャッシュが捨てられるまでの時間も当然「1日」かかるので、コンテンツサーバ側でゾーンのレコードを修正して「5分」に変更したとしても、そんな事はキャッシュサーバは知りようがない。なので、「仮に、TTL短縮直前にクライアントがキャッシュした」と想定して、「1日」かかると考えておく。
  • コンテンツサーバと、それに問い合わせをするキャッシュサーバは、まったく結合していない。つまり、push通知みたいなモノは無い。
    • だから、キャッシュサーバは、自分の好きなとき(クライアントからリクエストが来たとき)に問い合わせを送出してくるし、何かをキャッシュサーバ側に強制することは、コンテンツサーバ管理側にはできない。
      • たとえば、「今すぐキャッシュを破棄してTTLを5分ということにしてくれ!」みたいなことはできない。
  • 「ドメイン管理」と「DNSゾーン管理」はほぼ同じことをやっている。NSレコード・グルーA書き換えという観点では。
    • これをわかるには、自分でドメインを取得して、親ゾーンA、子ゾーンBをそれぞれ別のDNSホスティングサービスに載せ、権限委譲設定をしてみるとわかりやすい。
    • おすすめはGoogle Cloud DNS。なぜかというと、同じサービスなのに、別ゾーンに対して異なるホスト名を割り振ってくれるので。
  • オライリーのバッタ本 を読めば必要なことは凡そ書いてある。
    • 読みたくなければ、おカネを信頼できる業者に払って委託してください。