DNS伝播(プロパゲーション)とTTLを完全に理解する

DNSレコードを変更してもすぐに反映されない理由を、順を追って見ていきましょう。

DNS伝播とは何か

ドメインのDNSレコード(AレコードやCNAMEレコードなど)を変更したとき、その変更内容が世界中のDNSサーバーや利用者の端末に反映されるまでにかかる時間のことを指します。

TTLの役割

各DNSレコードには秒単位でTTL(Time To Live)が設定されています。TTLは「この応答をどのくらいの間キャッシュに保持してよいか」を示す値で、TTLが切れるまでリゾルバは新たに問い合わせず、保存済みの値をそのまま返します。

複数のキャッシュ層があるため時間がかかる

ISPの再帰的リゾルバ、OS、ブラウザなど、複数の階層がそれぞれDNS応答をキャッシュしています。このうちどこか一つでも以前の値のTTLが切れていなければ、実際にレコードを変更した後も、その階層ではしばらく古い値を表示し続けることがあります。

伝播時間に影響する要因

変更前のレコードに設定されていたTTLの値、利用者ごとに異なるリゾルバのキャッシュ方針、ドメイン登録機関やネームサーバーが変更を実際に反映する速さなどが重なり合い、実際の伝播時間に影響します。

変更前にTTLを短くしておくコツ

サーバー移行のような重要なDNS変更を控えている場合は、実際の変更よりも1〜2日前にTTLを300秒程度の短い値に下げておくのがおすすめです。キャッシュされた短いTTLが先に切れきった状態で変更すれば、新しい値がはるかに速く行き渡ります。

伝播状況を確認する方法

世界各地の複数の地点から同時にDNS応答を問い合わせて表示してくれるオンラインのDNSチェッカーで、地域ごとの反映状況を確認できます。自分のパソコンだけ古い値のままの場合は、ローカルのDNSキャッシュをリセットする方法も合わせて確認しましょう。

自分の端末のDNSキャッシュを消したい場合

自分のパソコンやブラウザに残っている古いDNSキャッシュを手動で消す方法が気になる場合は、ローカルDNSキャッシュのフラッシュ方法を確認してみてください。他の場所ではすでに更新されているのに自分の端末だけ反映されていないときの、多くの場合最も速い解決策です。

DNSの問い合わせ全体の流れが気になる場合

ドメイン名が実際のIPアドレスに変換されるまでの一連の流れそのものが気になる場合は、DNSの仕組みを最初から解説したページも合わせて読んでみることをおすすめします。

よくある質問

DNS伝播には普通どのくらいかかりますか?

決まった時間はありません。事前にTTLを短く下げておけば数分〜数時間程度でほとんど反映されますが、以前のTTLが長く設定されていたり、一部のリゾルバが想定より長くキャッシュを保持していたりすると、1日以上かかることもあります。

自分のパソコンだけ古いサイトにつながり続けます。なぜですか?

他の場所ではすでに新しい値に切り替わっていても、自分のパソコンやブラウザにTTLが切れていない古いキャッシュが残っていれば、その値を使い続けてしまいます。この場合、ローカルのDNSキャッシュを手動で初期化するとほとんどの場合すぐに解決します。