2026年6月14日
2026年6月14日
nslookup を使った DNS レコードのデバッグ手順|エラー表示の読み方と、原因を起こりやすい順に切り分ける
nslookup で DNS の不具合を調べるときは、まずエラー表示の種類(NXDOMAIN、SERVFAIL、No answer、タイムアウトなど)で問題の段階を見分け、次に問い合わせ先を変えて結果を比べ、必要に応じて -debug で応答の中身を確認します。この記事では、Windows・macOS・Linux の nslookup で出る主な表示の意味と、原因を起こりやすい順に確かめる手順、WordPress サーバーで名前解決に失敗するときの調べ方を説明します。
デバッグを始める前に知っておくこと
nslookup は、指定した DNS サーバー(指定しなければ OS に設定された DNS サーバー)に直接問い合わせる道具です。そのため、次の2点はブラウザでの表示と結果が食い違う原因になります。
- hosts ファイルを見ない:hosts ファイルに書いた名前は、ブラウザでは使われても nslookup の結果には出ません。
- OS の DNS キャッシュを使わない:nslookup の結果が新しくても、ブラウザや OS が古い答えをキャッシュしていることがあります。
「nslookup では正しいのにブラウザでは古いサイトが出る」という場合は、DNS の設定ではなく手元のキャッシュや hosts ファイルが原因である可能性が高く、この記事の手順より先にそちらを確認します。
手順1:表示の種類で問題の段階を見分ける
nslookup の表示は OS によって文言が異なりますが、意味は共通です。以下では Linux・macOS(BIND 系)の表示と、Windows の表示を併記します。日本語版 Windows では一部が日本語で表示されます。
Non-authoritative answer(Windows の日本語表示では「権限のない回答」)キャッシュサーバーが答えたという意味で、エラーではありません。通常の問い合わせではこの表示になります。
NXDOMAIN(Windows では Non-existent domain)その名前は存在しない、という答えです。名前の綴り、サブドメインのレコードの作り忘れ、ドメインの期限切れを疑います。
No answer(Windows では答えの行が出ずにサーバー情報だけが表示されることがあります)名前は存在するが、指定した種別のレコードがない状態です。たとえば A はあるのに AAAA が無い場合や、www が CNAME なのに別の種別を尋ねた場合に起こります。-type= で種別を変えて確かめます。
SERVFAIL(Windows では Server failed)問い合わせ先のキャッシュサーバーが答えを作れなかった状態です。権威サーバーが応答しない、委任の設定が壊れている、DNSSEC の検証に失敗した、といった原因が考えられます。
REFUSED(Windows では Query refused)問い合わせ先が答えることを拒否しています。再帰問い合わせを受け付けないサーバーに尋ねた場合や、アクセス制限がかかっている場合に出ます。
**タイムアウト(connection timed out; no servers could be reached、Windows では DNS request timed out)**問い合わせ先から返事が来ていません。ネットワーク、ファイアウォール、VPN、問い合わせ先の停止を疑います。
なお Windows で先頭に「Server: UnKnown」と出るのは、問い合わせ先の DNS サーバー自体の逆引きが設定されていないという意味で、多くの場合は無視して構いません。
手順2:問い合わせ先を変えて結果を比べる
表示の種類がわかったら、同じ名前を複数の問い合わせ先に尋ねます。どこで結果が変わるかによって、問題のある場所を絞り込めます。
# 1. 普段使っている DNS サーバー
nslookup www.example.com
# 2. 公開 DNS(別の事業者のキャッシュサーバー)
nslookup www.example.com 8.8.8.8
nslookup www.example.com 1.1.1.1
# 3. 権威サーバー(NS で名前を調べてから直接尋ねる)
nslookup -type=NS example.com
nslookup -norecurse www.example.com ns1.example.net
結果の組み合わせから、次のように判断できます。
- 権威サーバーの答えが誤っている → DNS 事業者の管理画面の設定に問題があります。
- 権威サーバーは正しく、公開 DNS が古い → キャッシュの TTL が切れるのを待つ段階です。
- 公開 DNS は正しく、普段の DNS だけ古いか失敗する → 社内やプロバイダーの DNS サーバー、VPN の設定を確認します。
- 公開 DNS が SERVFAIL で、権威サーバーは答える → 委任か DNSSEC の問題を疑います(手順4)。
手順3:-debug で応答の中身を確認する
通常の表示では TTL や応答のフラグが見えません。-debug を付けると、応答のヘッダー、答えの各レコードと TTL が表示されます。
nslookup -debug www.example.com 8.8.8.8
出力の中の rcode(応答コード)と、答えの行に付く ttl を確認します。TTL が大きい値なら、古い答えがキャッシュに残る時間も長くなります。より詳しい表示が必要なときは、対話モードで set d2 を使います。
> set d2
> set type=A
> www.example.com
Windows で特に役立つのが、問い合わせた名前の確認です。Windows の nslookup は、ドット無しで終わる名前に「DNS サフィックス」(社内ドメイン名など)を付け足して問い合わせることがあり、-debug の出力には www.example.com.corp.example のような意図しない名前の問い合わせが現れます。名前の末尾にドットを付けて www.example.com. と書くと、付け足しを防げます。
手順4:起こりやすい原因の順に確かめる
ここまでの結果を踏まえて、次の順に原因を確かめます。上ほど実際によく起きるものです。
- レコードの入力ミス:値の打ち間違い、ホスト名の欄に
www.example.comまで書いてしまいwww.example.com.example.comになっている、などです。権威サーバーへの問い合わせ結果と、意図した値を1文字ずつ照らし合わせます。 - 編集した DNS 事業者が使われていない:
nslookup -type=NS example.comの結果が、編集した事業者のネームサーバー名と一致しているかを確認します。一致しなければ、正しい事業者の画面で設定し直すか、レジストラでネームサーバーを変更します。 - キャッシュが残っている:TTL の時間が過ぎるのを待ちます。新しく作ったレコードを作成前に引いていた場合は、「存在しない」という答えがキャッシュされていることもあります。
-type=SOAで表示される値のうち、否定応答のキャッシュ時間に関わる値(最後の項目)が目安になります。 - ネームサーバーの変更が反映途中:NS の変更は親ゾーン側の情報もキャッシュされるため、時間がかかります。古い事業者側の設定を消すのは、切り替えが行き渡ってからにします。
- DNSSEC の検証失敗:DNS 事業者を移したときに古い DS レコードが親ゾーンに残っていると、検証を行うキャッシュサーバーでは SERVFAIL になります。nslookup では DNSSEC の詳細が見えないため、
delvやdig +dnssec、DNSViz などのツールで確認します。 - ネットワークの問題:タイムアウトが続くなら、ファイアウォールで 53 番ポートが止められていないか、VPN が DNS を差し替えていないかを確認します。
WordPress サーバーで名前解決に失敗するとき
プラグインの更新やサイトヘルスで「cURL error 6: Could not resolve host」のような表示が出る場合、サーバー自身が外部の名前を引けていません。SSH で接続できる環境なら、サーバー上で nslookup を実行して確認します。
nslookup api.wordpress.org
cat /etc/resolv.conf
サーバーの DNS 設定(/etc/resolv.conf など)の問い合わせ先が応答していない、ファイアウォールで外向きの DNS が止まっている、といった原因が考えられます。共用サーバーでは nslookup が使えない場合や DNS の設定を変えられない場合が多いため、確認結果を添えてサーバー事業者に問い合わせます。VPS で設定を変えるときは、変更前のファイルを控えてから作業してください。
nslookup は OS に標準で入っていることが多く手軽ですが、DNSSEC や細かなフラグの確認は苦手です。Windows では PowerShell の Resolve-DnsName も使え、動作や表示は OS のバージョンによって異なることがあります(2026年10月現在)。
まとめ
- nslookup は hosts ファイルと OS のキャッシュを使わないため、ブラウザと結果が違うことがあります。
- エラー表示(NXDOMAIN、No answer、SERVFAIL、REFUSED、タイムアウト)で問題の段階を見分けます。
- 普段の DNS、公開 DNS、権威サーバーの順に問い合わせ先を変え、結果が変わる場所を探します。
-debugで TTL と応答コードを確認し、Windows では末尾のドットで DNS サフィックスの付け足しを防ぎます。- 原因は入力ミス、編集先の取り違え、キャッシュ、NS の変更、DNSSEC、ネットワークの順に確かめます。