これは何
最近DNSの仕組みについて改めて勉強した上で、「DNSの浸透」という言葉がなぜ不適切なのかを自分の言葉で残しておきたくなったので書いたものです。
わかりやすさ重視で書くので、もしかしたら言葉足らずな部分や、説明不足な部分もあるかもしれません。編集リクエストやコメント等で補足など書いていただけるととても嬉しいです!
DNSの浸透って?
DNSに新しい情報を設定したときなどに、実際に設定通りにDNSが振る舞うようになるまでを「DNSの浸透期間」と呼んだりします。しかし、この表現はしばしば「不適切である」ということが言われます。
なぜこの表現が不適切なのかを解説していきます。
DNSの仕組み
DNSは以下の図のように
- スタブリゾルバー(ブラウザなど)
- フルリゾルバー(キャッシュサーバー)
- 権威サーバー
によって構成されています。ドメインの情報の解決は以下のような流れで行われます。
今回はexample.comを例にした流れを書きます。
より詳しく知りたい方は https://qiita.com/umesour/items/48d5358d92d7cf6ed922 などをご覧ください
- スタブリゾルバーからフルリゾルバーに名前解決要求を行う
- フルリゾルバーが名前解決要求を受け取る
- フルリゾルバーにキャッシュがある時→キャッシュしている情報を結果として返す(終了)
- フルリゾルバーにキャッシュがない時→権威サーバーに名前解決の問い合わせをcomの権威サーバーに行う
- comの権威サーバー(ルートサーバー)が問い合わせを受け取る→exampleの権威サーバーの権威サーバーへの委任情報を結果として返す
- フルリゾルバーが委任情報を受け取る→exampleの権威サーバーに問い合わせを行う
- exampleの権威サーバーが問い合わせを受け取る→キャッシュ時間を指定して結果を返す
- フルリゾルバーが結果を受け取る→指定された時間キャッシュを行い、結果をスタブリゾルバーに返す
- スタブリゾルバーがドメインに対応する結果を受け取る
DNSの浸透の何が問題なのか
簡単にDNSの仕組みを説明した上で、DNSの浸透という表現がなぜ不適切なのかを説明していきます。
浸透のイメージ
みなさんは「浸透」という言葉を聞いてどのようなイメージを持つでしょうか?
僕はどこかに設定した情報が、だんだんとさまざまなサーバーに伝搬していき、全てのサーバーに反映されるまでまだらに情報が更新されていくような、アンコントローラブルなイメージを持ちます。
図にすると以下のようなイメージです。
実際の挙動
DNSは、あくまで
- スタブリゾルバー
- フルリゾルバー
- 権威サーバー
によって、先ほど解説したような処理で名前解決が行われていきます。フルリゾルバーは複数ありますが、そこもキャッシュを行っているだけであり、ブロックチェーンのような、各サーバーごとに情報を持っているような仕組みではありません。情報を持っているのは権威サーバーのみです。
またキャッシュ期間も権威サーバーから指定しているため、情報を更新する前にキャッシュ期間を短く設定して、キャッシュ期間が短くなってから権威サーバーに保存されている情報を更新することで、フルリゾルバーごとに古い情報と新しい情報が混在するような状態も限りなく短くすることが可能であり、コントローラブルに更新処理を行うことができます。
このように、DNSは浸透という表現からはかなりギャップのある挙動をしています。これが「DNSの浸透」という表現が不適切である、といわれる所以です。
まとめ
DNSの浸透、という表現が持つ言葉のイメージと、実際の挙動のギャップについて理解していただけたでしょうか?
今回の記事が読んでくださった方の学びになれば幸いです。
参考文献