意外と分からないインターネットの仕組み…DNSのキャッシュ時間(TTL)とは

今回は、ホームページなどをWeb上に公開している方向けです。
自分のサイトを持っている方の多くは、”独自ドメイン”をもっている方が多いと思います。

インターネット上で接続先のサーバーを指定する際、本来は192.0.2.1のようなIPアドレスで指定する必要があります。
しかし、数字だけのアドレスは人間からすると非常に覚えづらいですよね。そこで出てきたのが”ドメイン”という仕組みです。

ドメインの詳しい仕組みについては、こちらのサイトにおまかせし、今回は割愛します。
ドメインとは?をわかりやすく解説します – カゴヤのサーバー研究室

このドメインなのですが、IPアドレスとドメインを紐づける”対応表”を公開しているサーバーがあり、このサーバーをDNSと呼びます。
例として、DNSの仕組みをexample.comというドメインのIPアドレスを調べるときの流れをおって説明します。

まず、ユーザーから一番近いDNS(たとえば、自分の所属する組織が管理しているDNS、プロバイダが管理するDNSなど)へ問い合わせが行われます。このDNSをリゾルバと呼びます。最初に問い合わせを受けたDNSは自身が管理するドメインとIPアドレスの対応表にexample.comが存在していないか確認をします。

もし、自身の管理する対応表にドメインが存在していない場合は、最上位のDNSへ問い合わせを行います。このDNSを”ルートDNS”と呼びます。
ルートDNSでは各TLDのついたドメインはどのDNSへ問い合わせれば情報が引き出せるか、という情報のみを持っています。例えば、example.comであれば”.com”のドメインはどこのDNSへ問い合わせればいいのかをルートDNSが教えてくれます。
次にリゾルバは.comを管理するDNSへ問い合わせを行います。ここで、”example.com”とIPアドレスを紐づけているDNSのIPアドレスを教えてくれます。リゾルバはさらにそのDNSサーバーへ問い合わせを行うことで、初めてexample.comのipアドレスを入手することができる仕組みになっています。

このexample.comのIPアドレスを持っているサーバーのことを”権威DNS”と呼びます。
権威DNSでは、具体的に下記のような情報を持っています。

・管理しているドメインのIPアドレス・ホスト名
・Aレコード(ドメインに対応するIPアドレス)
・MXレコード(ドメインに対してメールを送付された際に担当するメールサーバーのホスト名)
・TXTレコード など

これらの情報をひっくるめてレコードと呼びます。
先程のリゾルバにキャッシュ機能がある場合、これらの情報を権威DNSから取得すると、自身の対応表にこの情報をコピーし、再度自身に対して同じドメインの問い合わせが来た場合、自身の対応表の情報を直に渡すことで、問い合わせの時間を短縮しています。
この仕組みをもつDNSを”キャッシュDNS”と呼びます。

例にしているドメインは違いますが、仕組みはこんな感じです。

引用元:cman

今回ご説明するTTLとは、キャッシュDNSが権威DNSからコピーした情報の”有効期限”です。この情報は権威DNSか各レコード情報と一緒に持っています。
有効期限が過ぎた情報は、キャッシュDNS内の対応表にあったとしても無視され、再度ルートDNSへの問い合わせが行われます。

いろいろと説明してしまいましたが、簡単にまとめると
・DNSには元のデータを持つ権威DNSと、データのコピーを持つキャッシュDNSがある。
・DNSがもつIPとドメインの対応情報(レコード)にはTTLという有効期限がある。
・キャッシュDNSは権威サーバーの値をコピーし、有効期限が切れるまでキャッシュDNS内の対応表に保持する。

となっています。
逆に言うと、自分の持っているDNSの情報を書き換えても、このTTLが過ぎるまでは古い情報がキャッシュDNSに保持されている可能性があるということ。

例えば自分のサイトを別のサーバーへ移動する場合を考えた時、IPアドレスをDNSに設定しなおすことになりますが、設定変更した時間から前に指定していたTTL時間が経過するまでは、古いサーバーにもアクセスが来る可能性を考慮しなければいけません。

もし頻繁にIPアドレスが変わる可能性があれば、権威DNSのTTL時間を短くしておくのがおすすめです。
ただし、TTLを短くすると権威DNSや上位のDNSに対してかかる負荷が大きくなるので、注意が必要です。まだ、この理由でTTLの変更を禁止しているホスティング業者もあります。

DNSの仕組みは一見複雑ですが、知っておくと自分のサイトの運営の際、役に立つこともあると思います。
頭の片隅にも入れていただければ幸いです。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG