2026年6月12日
2026年6月12日
dnschecker と host の違いと使い分け|結果が食い違ったときにどちらを信じるかの判断手順
dnschecker(dnschecker.org)は世界各地の公開キャッシュサーバーが「今持っている答え」を並べる Web ツール、host は「実行した場所から、指定したサーバー(既定は OS の設定)に聞いた答え」を返すコマンドです。どちらかが正しいのではなく、見ている地点が違います。この記事では基本操作よりも、両者の結果が食い違ったときに「どの地点の情報が古いのか」を切り分ける手順に重点を置いて説明します。
前提:名前解決の「観測点」を整理する
ブラウザでサイトを開くまでに、DNS の答えは何段階かのキャッシュを通ります。食い違いを読むには、各ツールがどの段階を見ているかを押さえておく必要があります。
- 権威サーバー:DNS 事業者の管理画面で設定した値そのもの
- 公開キャッシュサーバー:Google Public DNS や Cloudflare の 1.1.1.1、各国のプロバイダーなど。dnschecker が並べるのはここ
- 手元が使っているキャッシュサーバー:契約プロバイダー、社内 DNS、ルーターなど。host が既定で聞くのはここ
- OS のキャッシュと hosts ファイル:host も dnschecker も見ていない
- ブラウザ独自のキャッシュと「セキュア DNS」(DoH)の設定:これも両ツールの対象外
host は Linux や macOS では /etc/resolv.conf に書かれたサーバーへ直接問い合わせます。つまり host の結果は3の段階、dnschecker は2の段階の情報です。どちらにも出てこない4と5が原因のことも多い、という点を最初に意識しておくと遠回りを防げます。
最初に権威サーバーの値を host で固める
食い違いを調べる前に、基準となる「正しい値」を権威サーバーから直接取得します。ここが間違っていれば、待っても直りません。
# 権威サーバー名を調べる
host -t NS example.com
# 権威サーバーに再帰を求めずに聞く(-r)
host -r -t A www.example.com ns1.example.net
# すべての権威サーバーの SOA を並べる
host -C example.com
2つ目の引数に権威サーバーを指定すると、出力の先頭に Using domain server: として問い合わせ先が表示されます。host -C では SOA のシリアル番号を見比べます。1台だけ番号が古い場合、問い合わせのたびに新旧の値が入れ替わって見えることがあり、dnschecker の結果がまだらになる原因になります。
host -t NS の結果はキャッシュサーバー経由の情報です。レジストラで変更したネームサーバーが上位のゾーンに反映されたかを見たいときは、TLD のサーバーに直接聞きます。
# .com の場合。TLD のサーバー名は host -t NS com で調べられる
host -v -r -t NS example.com a.gtld-servers.net
-v を付けると詳しい出力になり、AUTHORITY SECTION に上位から案内されるネームサーバーが表示されます。
パターン別の読み解き方
dnschecker は新しい値、手元の host は古い値
手元が使っているキャッシュサーバーに、古い値の TTL が残っている状態です。host -v で表示される TTL は残り時間なので、あと何秒で切り替わるかの目安になります。
host -v -t A www.example.com
host -t A www.example.com 1.1.1.1
公開 DNS に指定し直して新しい値が返れば、権威サーバー側は問題ありません。プロバイダーのキャッシュは利用者側から消せないため、基本は TTL が切れるのを待ちます。Google Public DNS や Cloudflare のように、特定の名前のキャッシュ削除を依頼できるページを用意している公開 DNS もあります(2026年10月現在)。提供の有無や手順は変わることがあるので、各サービスの案内を確認してください。
host は新しい値なのに、ブラウザでは古いサイトが開く
host より手前、つまり OS やブラウザの段階に原因があります。確認の順番は次のとおりです。
- hosts ファイル:移転前の動作確認で書いた行が残っていないか
- OS のキャッシュ:hosts ファイルも含めて OS の名前解決の結果を見るには、Linux では
getent hosts www.example.com、Windows では PowerShell のResolve-DnsName www.example.com、macOS ではdscacheutil -q host -a name www.example.comを使います - ブラウザのセキュア DNS:ブラウザが OS とは別の DoH サーバーを使っていると、host とは別のキャッシュを見ていることになります。ブラウザの設定画面で、セキュア DNS の有無と使っているサービスを確認してください
OS とブラウザのキャッシュを消す具体的な操作は、下の関連記事にまとめています。
dnschecker で一部の地点だけ値が違う
違っている値が「以前の IP」であれば、その地点のキャッシュに TTL が残っているだけです。変更前に設定されていた TTL の時間が過ぎれば解消します。
違っている値が見覚えのない IP であれば、CDN や地域ごとに応答を変える構成の可能性があります。この場合、地点によって IP が違うのは設計どおりです。DNS 事業者の設定で、地域別応答や CDN のプロキシを有効にしていないかを確認します。権威サーバーに host で直接聞いた値と照らし合わせれば、どちらのケースかを判断できます。
dnschecker で多くの地点が失敗する
多くの地点で空欄や失敗が並ぶのは、TTL では説明できない状態です。次の順に疑います。
- 権威サーバーが外部から応答しない:
host -C example.comで、応答しないネームサーバーが無いかを見ます - DNSSEC の不具合:検証を行うキャッシュサーバーだけが失敗します。手元で
host www.example.com 1.1.1.1を実行し、SERVFAILが返るかを確認します - 名前そのものが存在しない:権威サーバーへの問い合わせで NXDOMAIN なら、レコードの作成漏れです
手元の host では引けるのに dnschecker では失敗する、という組み合わせは、手元のキャッシュサーバーが DNSSEC を検証していないか、まだ古い正常な答えを持っているときに起こります。DNSSEC が疑われる場合は、dig の +cd オプションや DNSViz で詳しく調べます。
host では引けるのに、dnschecker では存在しない
社内やローカルの DNS だけが答えている可能性があります。社内 DNS が同じドメイン名の内部用ゾーンを持っている構成(スプリットホライズン)では、社内からは引けても、外部の公開キャッシュサーバーからは存在しないのが正常です。
もう一つ見落としやすいのが、host による名前の補完です。host は resolv.conf の search 設定に従って、ドットの少ない名前にドメインを補うことがあります。host www が社内の www.corp.example を引いていた、という例です。名前の末尾にドットを付けて host www.example.com. のように実行すると、補完されずにその名前そのものを問い合わせます。
新しく追加したレコードが、どちらでもしばらく引けない
追加する前に、その名前を一度でも問い合わせていた場合に起こります。「存在しない」という結果もキャッシュされるためで、その時間はゾーンの SOA の設定で決まります。
host -v -t A new.example.com 1.1.1.1
-v の出力で AUTHORITY SECTION に SOA が表示されていれば、否定の結果がキャッシュされている状態です。SOA 行の TTL が残り時間の目安になります。新しい名前は、レコードを追加してから確認を始めるのが無難です。
それぞれの使い方で注意すること
dnschecker は人が見て判断するためのツールです。短い間隔で繰り返し検索する監視用途には向かず、サービスの利用条件に触れるおそれもあります。社内向けのホスト名や検証環境の名前を入力すると、その名前を第三者に知らせることになるため、入力は公開しているドメインに限ってください。地点の一覧や表示の構成はサイト側の都合で変わります。
host は既定の出力に TTL が出ません。TTL を見たいときは -v を付けるか、dig を使います。種別を指定しないと A、AAAA、MX がまとめて表示されるので、特定の種別だけを比べたいときは -t で指定してください。名前が見つからないときは終了ステータスが0以外になるため、スクリプトで成否を判定しやすい点も host の利点です。
まとめ
- dnschecker は公開キャッシュサーバーの段階、host は手元が使うキャッシュサーバーの段階を見ています。OS とブラウザの段階はどちらも見ていません。
- 食い違いを調べる前に、host で権威サーバーの値と、全権威サーバーの SOA シリアルを確かめます。
- 一部の地点だけ古い値なら TTL の残り、見覚えのない IP なら CDN や地域別応答を疑います。
- 多くの地点で失敗するなら、権威サーバーの応答と DNSSEC を確認します。
- host では引けて外部では存在しない場合は、社内 DNS と search 設定による補完を疑い、末尾にドットを付けて確かめます。
- 追加直後に引けないときは、否定の結果のキャッシュを SOA から読み取ります。