2026年6月4日
2026年6月4日
whatsmydns を使った DNS レコードのトレース手順|変更が各地に届くまでを追い、止まっている所を切り分ける
DNS の変更が世界の各地に行き渡っていく様子を追う(トレースする)には、まず権威サーバーに新しい値が入ったことを確かめ、そのうえで whatsmydns.net で各地のキャッシュサーバーの答えを時間をおいて見比べます。whatsmydns は「今どこで古い値が返っているか」を一覧できる道具で、DNS の委任をルートからたどる dig の +trace とは役割が異なります。この記事では、変更前の準備から、whatsmydns での追跡、古い値が残る地点の原因の切り分けまでを順に説明します。
whatsmydns でできること・できないこと
whatsmydns.net は、ドメイン名とレコードの種別(A、AAAA、CNAME、MX、NS、TXT など)を指定すると、各国に置かれた複数のキャッシュサーバーに問い合わせ、その答えを地図と一覧で表示するウェブサービスです。選べる種別や問い合わせ先の地点は更新されることがあります(2026年10月現在)。
できること:
- 変更後の値がどの地点まで届いているかを一目で確認する
- 地点によって答えが違う状態(伝播の途中、地域ごとに答えを変える設定など)に気づく
できないこと:
- 自分のパソコンや社内ネットワーク、契約しているプロバイダーのキャッシュの状態を見ること
- 権威サーバーが正しい値を返しているかの最終確認
- 委任のどの段階で問題があるかの特定
つまり whatsmydns は「外の世界の様子を見る窓」です。原因を突き止めるには、権威サーバーへの直接の問い合わせと組み合わせて使います。
手順1:変更前に、今の値と TTL を控える
トレースは、変更前の状態を記録しておくところから始まります。後で「どの地点がまだ古いのか」を判断するには、古い値と、それがキャッシュに残る時間(TTL)を知っている必要があるからです。
# 変更前の値と TTL を控える(権威サーバーの名前は NS で調べる)
dig example.com NS +short
dig @ns1.example.net www.example.com A +norecurse
+norecurse を付けて権威サーバーに尋ねると、ANSWER SECTION にゾーンに設定された TTL がそのまま表示されます。たとえば TTL が 86400 なら、変更後も最大1日ほど古い値が残る地点があり得ます。WordPress サイトのサーバー移転のように切り替えの時刻を決めたい場合は、事前に TTL を 300 秒程度まで下げ、その変更が行き渡るまで(元の TTL の時間)待ってから本番の変更を行います。
手順2:権威サーバーに新しい値が入ったことを確かめる
DNS 事業者の管理画面で値を変えたら、whatsmydns を開く前に権威サーバーへ直接問い合わせます。
dig @ns1.example.net www.example.com A +norecurse
dig @ns2.example.net www.example.com A +norecurse
ここで新しい値が返らなければ、どれだけ待っても世界に広がることはありません。よくある原因は次の2つです。
- 編集した DNS 事業者が実際には使われていない:ドメインの NS が別の事業者を指していると、その画面での変更は効きません。
dig example.com NS +shortの結果と、編集した事業者が案内しているネームサーバー名を照らし合わせます。 - 権威サーバー間で同期が遅れている:NS が複数ある場合、1台だけ古い値を返すことがあります。SOA のシリアル番号を各サーバーで比べると確認できます。
手順3:whatsmydns で各地の答えを時間をおいて見比べる
権威サーバーで新しい値を確認できたら、whatsmydns.net でドメイン名と種別を指定して検索します。各地点の行に返ってきた値が表示されるので、新しい値と古い値がそれぞれ何地点あるかを数えます。
トレースとして意味のある記録にするには、1回だけでなく時間をおいて繰り返し確認し、そのたびに時刻と結果を控えておきます。目安は次のとおりです。
- 変更直後:多くの地点で古い値が残っていても正常です。
- 元の TTL の時間がたった頃:ほとんどの地点が新しい値になっているはずです。
- 元の TTL を大きく過ぎても古い値の地点がある:手順4の切り分けに進みます。
ブラウザでの確認と並行して、手元から主要な公開 DNS への答えを記録しておくと、時系列を後から見返せます。
#!/bin/sh
# 5分ごとに主要な公開 DNS の答えを時刻つきで記録する(Ctrl+C で止める)
name=www.example.com
while true; do
for r in 8.8.8.8 1.1.1.1 9.9.9.9; do
printf '%s %s %s\n' "$(date '+%F %T')" "$r" "$(dig @"$r" "$name" A +short | tr '\n' ' ')"
done >> dns_trace.log
sleep 300
done
dig に +short を付けると値だけが表示されます。TTL も残したい場合は +short の代わりに +noall +answer を使うと、残り時間の減り方も記録できます。
手順4:古い値が残る地点の原因を切り分ける
元の TTL を過ぎても古い値が返る、または地点ごとに答えがそろわない場合は、次の順に確認します。
- TTL を下げる前のキャッシュが残っている:TTL を下げてすぐに値を変えると、下げる前の長い TTL でキャッシュされた分はその期限まで残ります。下げた時刻と元の TTL から、いつ消えるはずかを計算します。
- ネームサーバー自体を変更した:NS の変更は、親ゾーン(.com や .jp など)側の情報もキャッシュされるため、通常のレコードより時間がかかることがあります。この場合、地点によって古い事業者と新しい事業者のどちらに問い合わせているかが分かれ、答えがばらつきます。
- 否定応答がキャッシュされている:新しく作ったサブドメインを、作る前に一度引いていると、「存在しない」という答えが SOA の設定に応じた時間だけ残ります。whatsmydns で「結果なし」の地点が続く場合に疑います。
- 地域や問い合わせ元によって答えを変える設定:CDN や地域別の振り分けを使っていると、地点ごとに異なる IP が返るのが正常な状態です。また Cloudflare のプロキシを有効にしたレコードは、サーバーの IP ではなく Cloudflare 側の IP が返ります。期待する値そのものを見直します。
- 一部のキャッシュサーバーの都合:TTL より長く値を保持するサーバーもまれにあります。特定の1〜2地点だけが古いまま残り、ほかが新しくなっているなら、時間をおいて再確認します。
手元の環境で古い値が見えるときは
whatsmydns ではすべての地点が新しい値なのに、自分のブラウザでは古いサーバーのページが表示される場合、問題は外ではなく手元にあります。パソコンの DNS キャッシュ、ブラウザのキャッシュ、hosts ファイルの書き換え、社内やプロバイダーのキャッシュサーバーが候補です。dig @8.8.8.8 と、何も指定しない dig の答えを比べると、手元のキャッシュサーバーが原因かを判断できます。
WordPress の移転では、旧サーバーのページが見えている状態で管理画面の設定を変えると、変更が旧サーバー側に保存されてしまうことがあります。自分のアクセスが新しいサーバーに届いていると確認できるまでは、更新作業を控えるか、hosts ファイルで新しいサーバーを指定して作業します。
まとめ
- whatsmydns は各地のキャッシュサーバーの答えを一覧する道具で、委任の経路をたどる機能ではありません。
- トレースの出発点は、変更前の値と TTL の記録と、権威サーバーで新しい値を確認することです。
- whatsmydns は時間をおいて繰り返し確認し、時刻と結果を控えると経過を判断しやすくなります。
- 元の TTL を過ぎても古い値が残る場合は、TTL を下げる前のキャッシュ、NS の変更、否定応答、地域別の設定の順に確認します。
- 外は新しいのに手元だけ古い場合は、パソコンやプロバイダーのキャッシュを疑います。