メインコンテンツへスキップ
見出し画像

DNS変更が反映されない理由とは?TTL・キャッシュの仕組みと確認方法を解説

    Webサイトのサーバーを移転したり、ドメインのDNS設定を変更したりしたとき、「設定を変更したのに新しいサーバーへ接続されない」という経験はないでしょうか。

    管理画面では正しく設定されているのに、古いサイトが表示される。自分のPCでは新しいサイトが開くのに、別の人のPCでは古いサイトが表示される。

    こうした現象には、DNSの「キャッシュ」と「TTL」という仕組みが深く関係しています。

    DNSはドメイン名をIPアドレスに変換する仕組み


    私たちはWebサイトへアクセスするとき、「example.com」のようなドメイン名を入力します。

    しかし、コンピューターが通信先を判断するときにはIPアドレスが必要です。

    例えば、

    example.com
    ↓
    192.0.2.10

    というように、ドメイン名からIPアドレスを調べる仕組みがDNSです。

    Webサイトを別のサーバーへ移転する場合は、この対応関係を変更します。

    変更前:192.0.2.10
    変更後:198.51.100.20

    ※上記は説明用のIPアドレスです。

    本来なら変更後のIPアドレスへ接続してほしいところですが、実際にはすべての利用者が同時に新しいIPアドレスを取得するわけではありません。

    DNSキャッシュが古い情報を保持している


    DNSの問い合わせは、毎回最初から行われるわけではありません。

    例えば、PCがドメインのIPアドレスを調べるときには、OSやブラウザのキャッシュ、利用しているDNSリゾルバーなどに保存された情報が再利用される場合があります。

    これは、名前解決を高速化し、DNSサーバーへの問い合わせ回数を減らすためです。

    しかし、ここで問題が発生します。

    DNSの設定を新しいIPアドレスへ変更しても、DNSリゾルバーが古いIPアドレスをキャッシュしていれば、しばらく古いサーバーへ接続されることがあります。

    つまり、DNS設定自体は正しくても、利用者が参照している情報が古い場合があるのです。

    TTLとは何か?


    DNSキャッシュの保持時間を制御する重要な値が「TTL(Time To Live)」です。

    例えばDNSレコードに、

    TTL:3600

    と設定されている場合、基本的には3,600秒、つまり1時間キャッシュできることを意味します。

    ここで重要なのは、TTLはDNSを変更した瞬間から数え始めるものではないという点です。

    DNSリゾルバーが古い情報を取得した時点から、キャッシュの有効時間が進みます。

    そのため、同じDNS設定を変更しても、利用者によって反映タイミングが異なることがあります。

    また、TTLを変更した場合でも、すでにキャッシュされている古いTTLが即座に短縮されるわけではありません。

    サーバー移転を予定している場合は、事前にTTLを短く設定し、以前のTTLが経過してから切り替えると影響を減らしやすくなります。

    DNS変更後に確認する方法


    DNSの状態を確認するときに便利なのが「nslookup」や「dig」です。

    Windowsでは、コマンドプロンプトから次のように実行できます。

    nslookup example.com

    MacやLinuxでは、次のコマンドも利用できます。

    dig example.com

    特定のDNSサーバーへ問い合わせたい場合は、

    dig @8.8.8.8 example.com

    と指定できます。

    これにより、普段利用しているDNSサーバーとGoogle Public DNSで異なる結果が返るか比較できます。

    さらに、DNSの階層的な問い合わせ先を調べたい場合は、

    dig +trace example.com

    も便利です。

    ただし、dig +traceは通常のキャッシュ付き名前解決をそのまま再現するものではなく、DNSの委任経路を確認するためのコマンドです。

    キャッシュ以外が原因になることもある


    DNS変更が反映されない原因はTTLだけではありません。

    例えば、ドメイン管理会社で設定しているネームサーバーと、実際にDNSレコードを編集しているサービスが一致していないケースがあります。

    この場合、DNSレコードをいくら変更しても、インターネット上で参照されているDNSサーバーには変更が反映されません。

    また、DNSでは新しいIPアドレスが返っているのに古い画面が表示される場合は、ブラウザキャッシュやCDNキャッシュ、Webサーバー側の設定が原因の可能性もあります。

    重要なのは、次のように原因を切り分けることです。

    ・DNSが古いIPを返す → DNSキャッシュや設定を確認
    ・DNSは新しいIPを返す → WebサーバーやCDNを確認
    ・特定の端末だけ古い → 端末や利用中のDNS環境を確認
    ・すべての環境で古い → 権威DNSやネームサーバー設定を確認

    まとめ


    DNS変更がすぐに反映されないのは、必ずしも設定ミスではありません。

    DNSには問い合わせ結果を一時保存するキャッシュがあり、その有効期間を制御するTTLという仕組みがあります。

    特にサーバー移転やWebサイト公開時には、次の3点を意識することが重要です。

    ・DNS変更前にTTLを確認する
    ・変更後は複数のDNSサーバーで名前解決結果を比較する
    ・DNSが正常なら、ブラウザやCDN、Webサーバー側を調査する

    DNSの仕組みを理解しておけば、「変更したのに反映されない」という問題に対して、原因を推測するだけでなく、順番に調査できるようになります。

    参考情報

    Cloudflare DNS — TTL
    https://developers.cloudflare.com/dns/manage-dns-records/reference/ttl/

    Google Public DNS
    https://developers.google.com/speed/public-dns/docs/intro

    #DNS #ネットワーク #IT知識 #Web開発 #サーバー #インフラ #エンジニア #IT勉強

     
     

    かる

     
     
    学習したIT関連の情報を発信しています! WEBサイトの運用も個人的に行なっています。

    あなたへのおすすめ