DNS反映待ちとは、DNSレコードを変更したあと、世界中の利用者がすぐ同じ結果を見るとは限らない状態を指す言い方です。
一言でいうと
DNSにはキャッシュがあるため、設定を変更してもTTLが切れるまで古い結果が使われることがあります。
DNS変更後に起きること
DNSレコードを変更すると、権威DNSサーバー上の新しい設定は変わります。しかし、利用者が使っているDNSリゾルバや端末には、古い結果がキャッシュされていることがあります。
DNSレコード変更
-> 権威DNSは新しい値を返す
-> 一部のリゾルバは古い値をキャッシュ中
-> 利用者ごとに見える結果が一時的に変わる
-> TTL経過後に新しい値へ揃っていく
TTLとは
TTLは、DNSレコードをどれくらいキャッシュしてよいかを秒で示す値です。
| TTL | 意味 |
|---|---|
300 | 5分 |
3600 | 1時間 |
86400 | 24時間 |
TTLが長いほどキャッシュ効率は良くなりますが、変更時の反映待ちが長くなりやすいです。
何がキャッシュするのか
DNSの結果は、いろいろな場所でキャッシュされます。
| 場所 | 例 |
|---|---|
| ブラウザ | ブラウザ内のDNSキャッシュ |
| OS | Windows、macOS、Linuxの名前解決キャッシュ |
| ルーター | 家庭用ルーターのDNS中継 |
| DNSリゾルバ | ISP、Google Public DNS、Cloudflare DNSなど |
| CDN | 配信サービス側のキャッシュ |
DNSだけでなく、ブラウザキャッシュやCDNキャッシュが表示に影響していることもあります。
変更前にやること
本番ドメインを切り替える前は、事前にTTLを短くしておくことがあります。
数日前: TTLを短くする
切替当日: DNSレコードを変更する
確認後: TTLを戻す
DNS切り替えの直前にTTLを短くしても、すでに長いTTLでキャッシュされている利用者にはすぐ効かないことがあります。
確認方法
別のDNSサーバーへ問い合わせて結果を比較します。
dig @1.1.1.1 example.com A
dig @8.8.8.8 example.com A
自分の環境だけの問題か、DNS全体の問題かを分けるために、別回線や別端末で確認することもあります。
よくある誤解
| 誤解 | 実際 |
|---|---|
| DNS変更は全世界で即時反映 | キャッシュのため揺れます |
| 反映待ちは必ず48時間かかる | TTLや環境によって変わります |
| 自分のPCで見えれば全員見えている | リゾルバごとに結果が違う場合があります |
| DNSだけ見れば表示問題は解決 | HTTPS、サーバー、CDN、ブラウザキャッシュも関係します |
まとめ
DNS反映待ちは、TTLとキャッシュによって古い結果が残るために起こります。DNS変更時は、権威DNS、別リゾルバ、自分の端末、HTTP応答を分けて確認します。
参考リソース
- RFC 1035: Domain Names - Implementation and Specification
- Cloudflare: Time to Live
- Google Public DNS: Using DNS tools