DNS浸透チェック

レコードを変更したのに、まだ古い応答を受け取る人がいる。このチェックは、まずあなたのネームサーバーに現在の正しい値を尋ね、次に24のパブリックリゾルバーに今どう認識しているかを尋ねます。

例: github.com (MX), gnu.org (A)

どこにも何も送られていない

「浸透」と聞くと、変更がDNSホストから外へ広がり、やがてインターネット全体を覆うように思えます。しかしDNSはそういう仕組みではありません。ネームサーバーはレコードを持って、問い合わせを待っているだけです。誰にも何も送りません。

人の代わりに名前を調べるマシンはリゾルバーと呼ばれます。インターネットプロバイダーも1つ運用していますし、Google(8.8.8.8)やCloudflare(1.1.1.1)も運用しています。リゾルバーはwww.example.comを初めて尋ねられると、あなたのネームサーバーから応答を取得してコピーを保持します。どのレコードにもTTL(time to live)という数値があり、そのコピーを何秒間使い回してよいかを示しています。リゾルバーは、このカウンターがゼロになるまで再び問い合わせることはありません。

つまり変更後、各リゾルバーは古い値のコピーが期限切れになった時点で、それぞれのタイミングで新しい値に切り替わります。コピーを持っていなかったリゾルバーには、新しい値がすぐに見えます。

このチェックが比較するもの

  1. その名前の権威ネームサーバーを見つけ、その1つにキャッシュを挟まず直接問い合わせます。この応答が基準で、TTLの全量とともに表示します。
  2. 同じ質問を、同じ瞬間に24のパブリックリゾルバーに送ります。所在地のわかるプロバイダーが運用する17(米国、ブラジル、スペイン、ドイツ、ロシア、インド、中国、韓国、オーストラリア、ジンバブエなど)と、Google、Cloudflare、Quad9、OpenDNSなど世界規模のネットワーク7つです。
  3. 各応答の全体を基準と比べます。名前に複数の値がある場合は、その組み合わせ全体が一致する必要があります。

レコードの種類はA、AAAA、CNAME、MX、NS、TXT、CAAから選べます。www.付きで入力した名前は入力どおりにチェックします。wwwは別のレコードだからです。

地図と表の読み方

最新
リゾルバーがネームサーバーと同じ値を返しています。
相違
別の値、通常は以前の値を返しています。TTLの列はそのコピーの残り秒数を示しており、そのリゾルバーについてはその時間だけ待つことになります。
応答なし
リゾルバーがタイムアウトしたか、拒否しました。あなたのレコードについては何もわかりません。

リゾルバーが返す値の組み合わせが3種類以上ある場合、チェックはその違いを反映の遅れとは見なしません。コンテンツ配信ネットワークで配信されているドメインや、地域ベースのルーティングを使うドメインは、意図的に地域ごとに違うアドレスを返します。wikipedia.orgやnetflix.comのような大規模サイトは、いつもそう見えます。

作ったばかりのレコードに対する「存在しません(NXDOMAIN)」も、キャッシュされた応答です。リゾルバーは、名前が存在しなかったことを、ゾーンのSOAレコードで指定された期間(多くは5分から1時間)覚えています。

待ち時間を短くする変更の段取り

他人のキャッシュを消すことはできません。できるのは、キャッシュがどれだけ続くかを前もって決めておくことです。

  1. 移行の少なくともTTL 1回分前に、レコードのTTLを300に下げます。86400だったなら、前日に行います。
  2. 変更を行います。これで、どのリゾルバーも5分以内に追従します。
  3. その間は古いサーバーを動かしたままにして、誰も使われていないアドレスにたどり着かないようにします。
  4. すべてが動いたら、TTLを3600以上に戻します。TTLが短いと問い合わせが増え、初回訪問がわずかに遅くなります。

ネームサーバー自体の変更はもっと時間がかかります。ネームサーバーの一覧はドメインの末尾(TLD)のレジストリが保持しており、そのTTLはあなたには変えられません。.comなら48時間です。切り替え後2日間は、古いDNSホストでもゾーンを生かしておいてください。

世界規模のネットワークは、当方のサーバーに最も近い拠点から応答します。そのためGoogleやCloudflareの結果は、すべての拠点ではなく、そのうちの1か所の状態です。あなたのパソコン、ブラウザ、ルーターもキャッシュを持っていますが、このチェックからは見えません。

よくある質問

DNSの浸透にはどのくらい時間がかかりますか?

最大でも、変更前にレコードに設定されていたTTLの長さです。TTLが300なら5分、86400なら1日です。よく見かける「24〜48時間」は安全側の上限で、実際に当てはまるのはネームサーバーを変更した場合だけです。

DNSの浸透を早めることはできますか?

変更後にはできません。例外は、キャッシュされた名前を1つ消せる公開フォームを用意している2つのネットワークです。Google Public DNS(「Flush Cache」)とCloudflare 1.1.1.1(「Purge Cache」)です。それ以外については、次の変更の前にTTLを下げておいてください。

すべてのリゾルバーが最新なのに、古いサイトが表示されるのはなぜですか?

端末にも独自のキャッシュがあります。Windowsならipconfig /flushdns、macOSならsudo dscacheutil -flushcache; sudo killall -HUP mDNSResponderを実行し、ブラウザを再起動してください。家庭用ルーターが古い応答を保持していることもあり、再起動すれば消えます。

同じドメインなのに、リゾルバーによってIPアドレスが違うのはなぜですか?

一部のリゾルバーがまだ以前の値を保持しているか、ドメインがCDNや地域ベースのルーティングによって地域ごとに違う応答を返しているかのどちらかです。このチェックは、異なる応答の数を数えて両者を見分けます。

DNSレコードのTTLはどれくらいにすべきですか?

ほとんどのレコードには3600(1時間)が適しています。移行の前後数日間は300まで下げ、大手メールプロバイダーのMXのように変わることのないレコードは86400まで上げます。