DNSレコードを変更しても、世界中のユーザーにすぐ反映されるわけではありません。「変更したのにまだ古いサイトが表示される」「自分には新しいサイトが見えているが他の人には見えない」——これがDNS伝播の問題です。
なぜDNS変更はすぐ反映されないのか
インターネット上にはDNSサーバーが無数に存在します。あなたのサイトのDNS情報は、全世界のDNSサーバーに順番にキャッシュ(一時保存)されています。
あなたがDNSを変更しても、すでにキャッシュしているDNSサーバーは一定時間古い情報を使い続けます。このキャッシュが全世界で更新されるまでの期間がDNS伝播(DNS propagation) と呼ばれます。
あなたのドメイン
↓
権威DNSサーバー(あなたが設定を変更するサーバー)
↓ 伝播
世界中のリゾルバ(ISPや企業のDNSサーバー)
↓ キャッシュ
各ユーザーのPC・スマートフォン
途中のキャッシュ(リゾルバ)が古い情報をTTLの時間だけ保持するため、同じ時刻でも「新しいサイトが見えるユーザー」と「古いサイトが見えるユーザー」が混在する期間が生じます。
TTL(Time To Live)とは
TTL は「このDNSレコードを何秒間キャッシュしてよいか」を指定する数値です。単位は秒です。
| TTL値 | 意味 | 伝播の速さ |
|---|---|---|
| 300 | 5分 | 速い(変更後5分で反映) |
| 3600 | 1時間 | 普通 |
| 86400 | 24時間 | 遅い |
| 604800 | 7日間 | 非常に遅い |
設定例:
example.com. 300 IN A 203.0.113.1
^^^
TTL(秒)
TTLが86400(24時間)に設定されている場合、変更前にキャッシュしたDNSサーバーは最大24時間古い情報を返し続けます。
一般的な反映時間の目安
「最大48時間」と言われますが、実際は以下の要因によって変わります。
| 条件 | 反映時間 |
|---|---|
| TTLが短い(300〜600秒) | 変更後5〜10分 |
| TTLが標準(3600秒) | 変更後1〜数時間 |
| TTLが長い(86400秒) | 変更後最大24〜48時間 |
| ネームサーバー自体を変更した場合 | 最大48〜72時間(追加でNS伝播が発生) |
ネームサーバー(NS)を変更する場合は、さらに時間がかかります。NSレコード自体もキャッシュされているためです。
TTLを事前に短くして伝播を速める
サーバー移行やDNS切り替えを計画している場合は、作業の24〜48時間前にTTLを短くしておくことで、切り替え後の伝播時間を大幅に短縮できます。
手順:
作業の24〜48時間前:
現在のTTLを確認(例:86400)
TTLを300〜600に変更
→ 24〜48時間後(現在のキャッシュが期限切れになってから):
DNSレコード(Aレコードなど)を変更
伝播は5〜10分で完了
→ 切り替え安定後(1〜2日後):
TTLを元の値(3600〜86400)に戻す
注意点:TTLを短くするだけでは何も変わりません。TTLが短い状態で既存キャッシュが期限切れになってから実際のレコード変更を行う必要があります。
現在の伝播状況を確認する方法
コマンドラインで確認
# Aレコードを確認
nslookup yourdomain.com 8.8.8.8 # Google DNSで問い合わせ
nslookup yourdomain.com 1.1.1.1 # Cloudflare DNSで問い合わせ
# TTLを確認
dig yourdomain.com A +ttl
異なるDNSサーバーに問い合わせることで、伝播が進んでいるか(返ってくるIPアドレスが変わっているか)を確認できます。
オンラインツールで確認
「DNS Propagation Checker」などのサービスを使うと、世界各地のDNSサーバーで現在どのIPアドレスが返っているかを一覧確認できます。
DNSレコード確認ツールでドメインを入力すると現在の設定値も確認できます。
よくある混乱と対処法
「自分には見えるが他の人には見えない」
自分のPCがすでに新しいIPをキャッシュしているが、他のユーザーのISPはまだ古いキャッシュを持っている状態です。これはDNS伝播の途中段階であり、時間が経てば解消します。
「変更したはずなのに古いIPが返ってくる」
自分のPCやルーターが古いキャッシュを持っている可能性があります。
# Windowsでのキャッシュクリア
ipconfig /flushdns
# MacのDNSキャッシュクリア
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
### ネームサーバー変更後になぜか繋がらなくなった
ネームサーバーを変更した後、新しいネームサーバーにAレコードやMXレコードが設定されていないケースです。ネームサーバー変更前に、新しいDNSサーバーに全レコードをコピーしておく必要があります。