「伝播」の正体は、キャッシュの有効期限切れ
0分
変更を保存
0-5分
DNSホストが更新
TTLまで
古い回答がまだキャッシュ中
TTL後
全員に新しい回答が表示
どこにも何も送られず、各キャッシュがコピーの再利用をやめるだけ
DNS伝播とは?変更の反映に時間がかかる理由
A レコードを更新しました。新しいサイトはスマートフォンでは表示されるのに、ノートパソコンでは表示されません。国内の別の場所にいる同僚には、まだ古いサイトが見えています。そして誰かから「伝播を待ってください」と言われます。
この言い方は、誤解を招くうえに、信じてしまうと問題の整理を難しくします。何も伝播していません。 どこにもデータは配信されていないのです。
重要なポイント
DNSの変更は、保存した瞬間から有効になっています。待っているのは、古いコピーを保持している数千もの独立したキャッシュが、それぞれに与えられた有効期限に達することです。プッシュも、同期も、キューもありません。
実際に起きていること
リゾルバーはドメインを検索すると、応答をTTL(秒単位のカウントダウン)とともに保存します。このカウントダウンがゼロになるまで、リゾルバーはメモリ上の内容で応答し、ネームサーバーには二度と問い合わせません。
「伝播」の正体は、キャッシュの有効期限切れ
0分
変更を保存
0-5分
DNSホストが更新
TTLまで
古い回答がまだキャッシュ中
TTL後
全員に新しい回答が表示
どこにも何も送られず、各キャッシュがコピーの再利用をやめるだけ
レコードを変更すると、次のようになります。
- 権威ネームサーバーは即座に更新されます。問い合わせた相手には、新しい値を返します。
- 古い値をキャッシュしているリゾルバーは、それぞれのカウントダウンが切れるまで、古い値を返し続けます。
- これらのカウントダウンは、各リゾルバーが最初にレコードを取得したタイミングがまちまちなため、開始時点が異なります。そのため、期限切れになる時刻もばらばらです。
- 期限切れになったリゾルバーから順に、新しい値を取得します。そのリゾルバーを使うユーザーは、その時点で切り替わります。
こうして時間差が生じる様子が、変更が「広がっている」ように見える正体です。実際には、たくさんの独立したタイマーが次々に切れているだけです。
待ち時間は実際にどのくらいか
待ち時間の上限は、変更する前のレコードに設定されていたTTLです。この点が、伝播の所要時間を予測可能なものにします。
| 変更前のTTL | 最大の待ち時間 | 典型的な用途 |
|---|---|---|
300(5分) | 5分 | 移行作業の最中 |
3600(1時間) | 1時間 | 妥当な既定値 |
86400(24時間) | 24時間 | ほとんど変更されない安定したレコード |
172800(48時間) | 48時間 | TLDレベルでの NS 委任 |
DNS変更を計画する正しい方法
1日前:TTLを下げる
TTLを300秒に変更し、ほかは何も変えません。すべてのキャッシュが短い値を取り込めるように、少なくとも 古い TTLと同じ時間だけ待ちます。
低いTTLが有効になったことを確認する
dig example.comを実行し、応答セクションのTTLを確認します。3600ではなく300からカウントダウンしていれば、すべてのリゾルバーが短いタイマーに切り替わっています。実際の変更を行う
レコードを更新します。これで、誰もが待つ時間は最大でも1時間ではなく5分になります。
複数の観測地点から確認する
複数の公開リゾルバーに直接問い合わせます。それぞれ独立したキャッシュなので、さまざまなユーザーに実際に見えている内容のサンプルが得られます。
TTLを元に戻す
トラフィックが新しい値に落ち着いたら、TTLを3600以上に戻します。TTLが低いと、クエリが増え、全員にとって名前解決がわずかに遅くなります。
リゾルバーごとの見え方を確認する
dig +short example.com @1.1.1.1
dig +short example.com @8.8.8.8
dig +short example.com @9.9.9.9dig +short example.com @ns1.example.com最後のコマンドが重要です。権威サーバーが新しい値を返すなら、変更は正しく、完了しています。 それ以外は待つだけで、修正の必要はありません。古い値が返る場合は、変更が保存されていないか、あるいはドメインが 委任されていない プロバイダーで編集してしまっています。
デバイスによって見え方が違う理由
あなたと答えの間にあるキャッシュは1つではなく、複数あり、それぞれが独自のタイマーを持っています。
- ブラウザーは、短期間の内部DNSキャッシュを持っています。
- オペレーティングシステムは、それとは独立して、自前のキャッシュを持っています。
- ルーターは、世帯全体のためにキャッシュしていることがよくあります。
- ISPのリゾルバーは、場合によっては数百万人のユーザーのためにキャッシュしています。
- 企業やVPNのリゾルバーは、管理されたネットワークで、さらに1層を加えます。
モバイルデータ通信のスマートフォンは、自宅のWi-Fiにつながったノートパソコンとはまったく別のリゾルバーの経路を使います。そのため、一方では新しいサイトが表示され、もう一方では表示されないのです。自分で管理できる層は、クリアできます。詳しくは DNSキャッシュのフラッシュ方法 をご覧ください。
ドメインの公開DNSアドレスを調べたい場合は、Domain IP Lookupツールをお試しください。
このテーマの無料ツール
よくある質問
関連記事
TTLの実際の選び方
DNS TTLとは?最適な値の選び方
たった1つの数字が、変更が反映される速さと、発生するDNSトラフィックの量を左右します。意図して選ぶ方法を紹介します。
TTLの実際の選び方
DNSキャッシュをフラッシュする方法
あらゆるプラットフォーム向けのコピペ用コマンドに加えて、フラッシュが効くかどうかを事前に見分ける診断方法も紹介します。
再帰的なDNS検索を1ホップずつ見る
ブラウザー
example.comを要求
リゾルバー
ISP / 1.1.1.1
ルート + TLD
.comの管理元は?
権威サーバー
正式な回答
この連鎖の各ホップはそれ自体がDNS検索で、結果はその後キャッシュされます
DNSの仕組み:ドメイン名からIPアドレスまで
インターネットの電話帳を、端から端まで追跡します。ドメインを入力してから最初のパケットがサーバーに届くまでの数ミリ秒に、何が起きているのかを解説します。