DNS の浸透とは:DNS の変更に時間がかかる理由と確認方法 | Check Host

DNS レコードを変更したのに、まだ古い値が見えている人がいる?TTL とリゾルバーのキャッシュが「浸透」を生む仕組みと、世界中で確認する方法。

ドメインを新しいサーバーに向けたのに、ユーザーの半分はまだ古いサーバーにアクセスしている。この遅れは DNS の浸透(伝播)と呼ばれます。実際には何かが広がっているわけではなく、古い応答が世界中のキャッシュに残り、期限切れを待っているのです。

実際に起きていること

誰かがあなたのドメインにアクセスすると、その端末はフルサービスリゾルバー(ISP のもの、または 1.1.1.1 や 8.8.8.8 などのパブリック DNS)に問い合わせます。リゾルバーはあなたの権威 DNS サーバーに一度問い合わせ、そのレコードの TTL(Time To Live)が許す限り応答をキャッシュします。TTL が切れるまで、そのリゾルバーを使う全員が古いキャッシュの応答を受け取ります。

つまり、変更の最大遅延はおおよそそのレコードの以前の TTL です。TTL が 86400 秒のレコードはすべての場所で更新されるまで最大 1 日、TTL が 300 なら約 5 分です。

変更を素早く反映させる方法

  1. 変更の前日に、レコードの TTL を 300 秒に下げます。
  2. 以前の長い TTL が切れるのを待ちます。
  3. 変更を行います。キャッシュは数分で更新されるようになります。
  4. すべて問題なければ、TTL を元に戻します。

ネームサーバーの変更はもっと時間がかかる

ドメインが使うネームサーバーを(レジストラで)変更すると TLD のサーバーが関わり、その NS レコードの TTL は 1〜2 日であることが一般的です。最大 48 時間を見込んでください。

世界中で浸透を確認する

DNS ルックアップは多くの国のリゾルバーから同時にレコードを照会するので、どの地点がすでに新しい値を返し、どこがまだ古い値を返しているかが分かります。A、AAAA、CNAME、MX、TXT、NS、SOA、PTR レコードを照会でき、特定のリゾルバーも指定できます。

変更後によく確認する項目:

手元ではまだ古い応答?

自分のパソコンやブラウザも DNS をキャッシュしています。キャッシュを消去する(Windows は ipconfig /flushdns、多くの Linux は sudo resolvectl flush-caches、macOS は sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder)か、別のリゾルバーでテストしてください。その後、サイトチェックでサイト自体が新しいサーバーから応答しているか確認しましょう。