2026年6月13日
2026年6月13日
whatsmydns と kdig の違いと使い分け|世界各地の見え方と、暗号化 DNS・地域別の答えを手元で再現する確認
whatsmydns は「世界各地の DNS サーバーが今どう答えているか」をブラウザで一覧できるサービスで、kdig は「自分で選んだサーバーに、選んだ通信方式で問い合わせる」コマンドです。DNS の変更が広がったかを大まかに見るなら whatsmydns、権威サーバーの値や、暗号化 DNS 経由・地域ごとの答えを細かく確かめるなら kdig が向いています。この記事では、両者の違いを整理し、「一部の利用者だけ古いサイトが表示される」「地域によって答えが違う」といった相談を受けたときに、どの順でどちらを使うかを説明します。
2つの道具の違い
| 観点 | whatsmydns | kdig |
|---|---|---|
| 形態 | Web サービス(whatsmydns.net) | コマンド(Knot DNS に付属) |
| 問い合わせ元 | サービスが用意した各地の拠点 | 実行したパソコンやサーバー |
| 問い合わせ先 | 各地の公開 DNS サーバー | 自分で指定(権威・キャッシュとも可) |
| 通信方式 | サービス側の方式のみ | UDP・TCP・DNS over TLS・DNS over HTTPS など |
| 向いている確認 | 変更の広がり具合を一度に見る | 1台の答えを詳しく見る、条件を変えて比べる |
whatsmydns は、ドメイン名と種別(A、AAAA、CNAME、MX、NS、TXT など)を選ぶと、各地の拠点の答えと、値がそろっているかを示す印を一覧で表示します。拠点の数や選べる種別、画面の構成は変わることがあります(2026年10月現在)。表示されるのは各地のキャッシュサーバーが持っている答えなので、権威サーバーで値を変えても、TTL が切れるまでは古い値が残る拠点があります。
kdig は CZ.NIC が開発する Knot DNS に付属する問い合わせコマンドで、Debian・Ubuntu では knot-dnsutils、Fedora などでは knot-utils、macOS では Homebrew の knot で入ります。書き方は dig とほぼ同じで、kdig @問い合わせ先 名前 種別 の形です。dig との大きな違いは、暗号化 DNS での問い合わせを標準で扱える点です。
使い分け1:変更が広がったかを確かめる
DNS の A レコードを変えてサーバーを移したときは、最初に whatsmydns で全体を見ます。新旧の値が混ざっていれば、キャッシュの入れ替わりを待っている途中です。
ただし、whatsmydns で古い値が多く見えるときに「設定を間違えた」と判断する前に、権威サーバーの値を kdig で確かめます。
kdig example.com NS +short
kdig @ns1.example-dns.net example.com A +norec
kdig @ns1.example-dns.net example.com SOA +short
+norec は再帰検索を求めない指定で、権威サーバーが自分のゾーンから答えた値をそのまま見られます。ここが新しい値なら設定は正しく、残りは待つだけです。権威サーバーが複数ある場合は、NS に並ぶすべてのサーバーで SOA のシリアル番号がそろっているかも見ます。1台だけ番号が古ければ、そのサーバーへの転送が止まっています。
使い分け2:一部の利用者だけ古いサイトが見える
whatsmydns ではすべての拠点が新しい値なのに、「自分だけ古いサイトが開く」という相談を受けることがあります。この場合、利用者が使っている問い合わせ先が whatsmydns の拠点に含まれていないことが原因として考えられます。よくあるのは次の2つです。
- プロバイダーや社内のキャッシュサーバー:whatsmydns が見ているのは主に公開 DNS サーバーです。利用者のプロバイダーのキャッシュに古い値が残っていても、一覧には現れません。
- ブラウザの暗号化 DNS:ブラウザの設定で DNS over HTTPS(ブラウザでは「セキュア DNS」などの名前の設定)を使っている場合、OS の設定とは別の DNS サーバーに暗号化された経路で問い合わせています。
後者を確かめるには、kdig で同じ事業者の暗号化 DNS に問い合わせます。
# DNS over TLS(853番ポート)
kdig @1.1.1.1 +tls-ca +tls-hostname=cloudflare-dns.com example.com A
# DNS over HTTPS(443番ポート)
kdig @1.1.1.1 +tls-ca +tls-hostname=cloudflare-dns.com +https example.com A
+tls-ca は OS の証明書ストアで相手の証明書を確かめる指定、+tls-hostname は確かめる名前の指定です。これを付けないと、相手が本物のサーバーかを確かめないまま通信することがあります。DNS over HTTPS の +https や DNS over QUIC の +quic は比較的新しい版で加わった機能で、使えるかどうかは手元の版によります。kdig --version と man kdig で確かめてください。
暗号化 DNS で問い合わせた答えが古ければ、その事業者のキャッシュが残っている状態です。利用者には、ブラウザのキャッシュの削除や再起動を案内するか、TTL が切れるのを待ってもらいます。
使い分け3:地域によって答えが違う
CDN や地域別の振り分け(GeoDNS)を使っているドメインでは、問い合わせ元の地域によって正しく違う答えが返ります。whatsmydns で拠点ごとに値がばらついていても、それが設計どおりであれば問題ではありません。
特定の地域の利用者にどの答えが返るかを手元で確かめたいときは、kdig の +subnet を使います。これは EDNS Client Subnet(ECS)という仕組みで、「この範囲のアドレスからの問い合わせ」として権威サーバーに伝える指定です。
kdig @ns1.example-dns.net www.example.com A +norec +subnet=198.51.100.0/24
kdig @ns1.example-dns.net www.example.com A +norec +subnet=203.0.113.0/24
権威サーバーが ECS に対応していれば、指定した範囲に応じた答えが返ります。対応していない権威サーバーや、ECS を送らない公開 DNS(プライバシーへの配慮から送らない事業者があります)では、答えは変わりません。また、エニーキャストの権威サーバーでどの拠点が答えたかを知りたい場合は +nsid を付けると、サーバーが対応していれば識別名が表示されます。
whatsmydns で「この地域だけ想定外の値」が見えたときは、その地域のアドレス範囲を +subnet に指定して権威サーバーの答えを確かめると、権威側の設定の問題か、その地域のキャッシュの問題かを分けられます。
使い分け4:定期的な確認や監視
whatsmydns は手作業で画面を見る使い方が基本です。結果を自動で取り込むような使い方は、サービスの利用規約を確かめてから判断してください。
定期的に同じ確認をしたい場合は、kdig をスクリプトに組み込みます。たとえば、移転後しばらくの間、権威サーバーと主な公開 DNS の答えを記録しておく使い方です。
#!/usr/bin/env bash
name=www.example.com
for s in ns1.example-dns.net 1.1.1.1 8.8.8.8; do
printf '%s\t%s\t%s\n' "$(date '+%F %T')" "$s" "$(kdig @"$s" "$name" A +short | tr '\n' ' ')"
done >> dns-watch.log
cron で数分おきに実行すれば、どのサーバーがいつ新しい値に変わったかが記録に残ります。問い合わせの間隔は、公開 DNS に負担をかけない程度に空けます。
食い違ったときの判断の順番
- kdig で権威サーバーの値を確かめる:ここが間違っていれば、設定を直します。
- 権威サーバーが正しく、whatsmydns の一部が古い:TTL が切れるのを待ちます。
- whatsmydns がすべて正しく、一部の利用者だけ古い:その利用者の問い合わせ先(プロバイダー、社内 DNS、ブラウザの暗号化 DNS)を kdig で再現して確かめます。
- 地域で答えが違う:CDN や GeoDNS の設計どおりかを確認し、
+subnetで権威サーバーの答えを比べます。
まとめ
- whatsmydns は各地の公開 DNS の見え方を一度に見るサービス、kdig は条件を指定して1台の答えを詳しく見るコマンドです。
- whatsmydns で古い値が見えたら、まず kdig の
+norecで権威サーバーの値を確かめます。 - 一部の利用者だけ古い場合は、ブラウザの暗号化 DNS などを kdig の
+tlsや+httpsで再現します。 - 地域で答えが違う場合は、kdig の
+subnetで権威サーバーの答えを地域ごとに比べます。 - 定期的な記録は kdig をスクリプトにして行い、whatsmydns は手作業での確認に使います。