DNSレコードを変更しても、世界中のユーザーにすぐ反映されるわけではありません。「変更したのにまだ古いサイトが表示される」「自分には新しいサイトが見えているが他の人には見えない」——これがDNS伝播の問題です。

なぜDNS変更はすぐ反映されないのか

インターネット上にはDNSサーバーが無数に存在します。あなたのサイトのDNS情報は、全世界のDNSサーバーに順番にキャッシュ(一時保存)されています。

あなたがDNSを変更しても、すでにキャッシュしているDNSサーバーは一定時間古い情報を使い続けます。このキャッシュが全世界で更新されるまでの期間がDNS伝播(DNS propagation) と呼ばれます。

あなたのドメイン
  ↓
権威DNSサーバー(あなたが設定を変更するサーバー)
  ↓ 伝播
世界中のリゾルバ(ISPや企業のDNSサーバー)
  ↓ キャッシュ
各ユーザーのPC・スマートフォン
途中のキャッシュ(リゾルバ)が古い情報をTTLの時間だけ保持するため、同じ時刻でも「新しいサイトが見えるユーザー」と「古いサイトが見えるユーザー」が混在する期間が生じます。

TTL(Time To Live)とは

TTL は「このDNSレコードを何秒間キャッシュしてよいか」を指定する数値です。単位は秒です。

TTL値意味伝播の速さ
3005分速い(変更後5分で反映)
36001時間普通
8640024時間遅い
6048007日間非常に遅い

設定例

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サーバーに全レコードをコピーしておく必要があります。