2026年6月8日
2026年6月8日
nslookup の出力を読み解くポイント|Windows と Linux の表示の違い、種別ごとの行、-debug で増える情報
nslookup の出力は、上から「誰に聞いたか」「答えが権威サーバーから来たかどうか」「レコードの中身」の3つの塊に分けて読むと迷いません。同じ nslookup でも Windows 版と Linux・macOS 版(BIND 付属)では表示の形が違い、TTL などの大事な情報は通常の表示には出てきません。この記事では、出力の各行が何を意味するか、レコード種別ごとの書き方の違い、答えが無いときの見分け方、-debug を付けたときに増える情報を順に説明します。使い方の基本やエラー時の切り分け手順そのものではなく、「画面に出た文字をどう解釈するか」に絞った内容です。
出力の全体像
まず、Windows と Linux で同じ名前を引いたときの典型的な表示を並べます(値は説明用の例です)。
C:\> nslookup www.example.com
サーバー: UnKnown
Address: 192.168.1.1
権限のない回答:
名前: example.com
Addresses: 2001:db8::10
203.0.113.10
Aliases: www.example.com
$ nslookup www.example.com
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
www.example.com canonical name = example.com.
Name: example.com
Address: 203.0.113.10
Name: example.com
Address: 2001:db8::10
空行で区切られた最初の2行が問い合わせ先、次の1行が答えの種類、残りがレコードです。英語表示の Windows では「サーバー」が Server、「権限のない回答」が Non-authoritative answer、「名前」が Name になります。表示の文言は OS の言語設定や版によって少しずつ違うため(2026年10月現在)、ここでは Windows 11 と BIND 9.18・9.20 系の nslookup を想定しています。細部が一致しなくても塊の順番で読めば対応が取れます。
最初の2行:誰に聞いたか
Server と Address は、今回の問い合わせを受けた DNS サーバーです。ここを最初に見る理由は、同じ名前でも聞いた相手によって答えが変わるからです。社内 DNS、ルーター、プロバイダー、公開 DNS のどれに聞いたかで、結果の意味が変わります。
Windows でよく見かける UnKnown は、DNS サーバーの IP アドレスに逆引き(PTR)が設定されていないため名前を表示できない、という意味です。名前解決の失敗ではなく、家庭用ルーターや社内 DNS ではごく普通の表示です。気にするべきなのは、その下の Address が想定どおりのサーバーかどうかです。
Linux の 127.0.0.53#53 は、systemd-resolved のスタブリゾルバー(手元で中継するだけの窓口)に聞いたことを示します。#53 はポート番号です。この場合、実際にどの上流サーバーに転送されたかは nslookup の出力からは分からないため、resolvectl status で上流の設定を確かめます。
問い合わせ先を指定した場合(nslookup www.example.com 1.1.1.1)は、ここに指定したサーバーが表示されます。想定と違うサーバーが出ていたら、その時点で以降の結果を読み進める意味は薄くなります。
「権限のない回答」の意味
権限のない回答 や Non-authoritative answer は、答えがそのドメインの権威サーバーから直接ではなく、キャッシュサーバー(フルリゾルバー)経由で返ってきたことを示します。エラーや警告ではなく、普段の問い合わせではこれが普通です。
この表示が意味するのは「キャッシュに残っている値かもしれない」ということです。DNS の変更直後に古い値が見えても、権威サーバーの設定が間違っているとは限りません。確かめたいときは、権威サーバーを問い合わせ先に指定します。
nslookup -type=ns example.com
nslookup www.example.com ns1.example-dns.net
権威サーバーに直接聞いて答えが返った場合は、この行が出ません。逆に、権威サーバーを指定したのに「権限のない回答」と出る場合は、そのサーバーがそのドメインの権威を持っていない(委任先の指定が古い、ゾーンが作られていない)可能性があります。
レコードの行を読む
A と AAAA
種別を指定しないと、Windows 版も最近の BIND 版も A(IPv4)と AAAA(IPv6)の両方を問い合わせて並べます。Windows ではアドレスが複数あると Addresses: の下にまとめて表示し、Linux では Name と Address の組を1件ずつ繰り返します。IPv6 のアドレスが表示されているのにサイトへ IPv6 でつながらない場合は、AAAA レコードの値が古い、またはサーバー側で IPv6 を受けていないことが疑われます。
CNAME(別名)
CNAME の表示はOSで大きく違います。Windows では、最後にたどり着いた正式名が 名前 に、途中の別名が Aliases に表示されます。上の例では、www.example.com を引いたのに 名前 が example.com になっているのは、www が CNAME で example.com を指しているからです。Linux では canonical name = の行で「この名前は別名で、正式名はこちら」と1段ずつ示されます。
CNAME が何段も続く場合、Linux では行が段数分並び、Windows では Aliases に複数の名前が並びます。CDN を使っているサイトでは2〜3段になることも珍しくありません。
MX・NS・TXT・PTR
種別を指定したときの表示は次のように対応します。
- MX:Windows は
MX preference = 10, mail exchanger = mail.example.com、Linux はmail exchanger = 10 mail.example.com.の形です。数字は優先度で、小さいほど先に使われます。 - NS:どちらも
nameserver = ns1.example-dns.netのように表示されます。並び順に意味はありません。 - TXT:
text =の後に引用符で囲まれた値が出ます。長い値は複数の引用符に分かれて表示されることがあり、これは255文字ごとの区切りで、受け取る側では連結して扱われます。SPF や DMARC を確かめるときは、区切りの位置で文字が欠けているように見えても誤りとは限りません。 - PTR:IP アドレスを渡すと逆引きになり、Windows は
名前:に、Linux はname = mail.example.com.の形でホスト名を表示します。
Linux 版は名前の末尾にドット(example.com.)を付けて表示します。これは「これ以上補完しない完全な名前」を表す DNS の表記で、設定の誤りではありません。
SOA
SOA はゾーン全体の管理情報で、表示項目の名前が OS で異なります。
Windows: primary name server / responsible mail addr / serial / refresh / retry / expire / default TTL
Linux: origin / mail addr / serial / refresh / retry / expire / minimum
serial はゾーンを更新するたびに増える番号で、複数の権威サーバーに聞いて番号がそろっているかを見ると、更新が全台に届いたかどうかの目安になります。Windows の default TTL、Linux の minimum は、現在は主に「存在しない」という答えをキャッシュしておく時間として使われる値です。メールアドレスは @ の代わりに最初の . で表記されます(hostmaster.example.com は hostmaster@example.com)。
答えが無いときの表示を読み分ける
「名前そのものが無い」のか「名前はあるが、その種別のレコードが無い」のかを読み分けると、原因の当たりがつけやすくなります。
- 名前が無い(NXDOMAIN):Windows は
*** サーバー名 が 名前 を見つけられません: Non-existent domain、Linux は** server can't find 名前: NXDOMAINと表示されます。綴りの誤り、レコードの作り忘れ、委任先の誤りを疑います。 - 種別のレコードが無い(NODATA):Linux は
*** Can't find 名前: No answerと表示されることが多く、Windows ではレコードの代わりにprimary name serverなどの SOA の情報だけが表示されることがあります。後者は「その種別は無かった。代わりにゾーンの管理情報を返す」という意味で、たとえば MX を聞いて SOA だけが出たら MX が未設定だと読みます。
タイムアウトや Server failed(SERVFAIL)は、名前の有無ではなく問い合わせの途中で問題が起きたことを示します。表示が出た段階でデバッグの手順に切り替えます。
-debug で増える情報
通常の表示には TTL も応答コードもフラグも出ません。これらを見たいときは -debug を付けます。
nslookup -debug -type=a www.example.com 1.1.1.1
増える情報のうち、読むべき箇所は次の3つです。
- HEADER の行:
rcode = NOERRORなどの応答コードと、header flags:の後のフラグです。Windows ではresponse, want recursion, recursion avail.のように言葉で、auth. answerがあれば権威サーバーからの答えです。 - QUESTIONS と ANSWERS:何を聞いて何が返ったかが、レコードごとに
ttl = 3600 (1 hour)のような TTL 付きで表示されます。キャッシュサーバーに聞いた場合、この TTL は残り時間なので、ゾーンの設定値より小さく見えます。値が変わるまでの目安を知りたいときはここを見ます。 - 最初の方の余分な問い合わせ:Windows では、最初に DNS サーバー自身の逆引きを試す問い合わせや、DNS サフィックス(社内ドメインなど)を後ろに付けた名前での問い合わせが記録されることがあります。結果の前に
Non-existent domainが何度か出ても、最後に目的の名前で答えが返っていれば問題ありません。名前の末尾にドットを付ける(www.example.com.)と、サフィックスの付加を避けられます。
出力が長くなるため、-debug は「通常の表示では判断がつかないとき」に使うと読みやすくなります。
読み違えやすい点
- nslookup は hosts ファイルと OS のキャッシュを見ない:nslookup は指定した DNS サーバーに直接問い合わせます。そのため、hosts ファイルに書いた値や、OS・ブラウザに残ったキャッシュは結果に反映されません。WordPress のサーバー移転後に「nslookup では新しい IP なのにブラウザは古いサイトを開く」場合は、hosts ファイル、ブラウザの DNS キャッシュ、ブラウザ独自の暗号化 DNS の設定を確かめます。
- 1回の結果は、その瞬間の1台の見え方:キャッシュサーバーごとに残り時間が違うため、別のサーバーに聞くと別の値が出ることがあります。変更直後は、権威サーバーの値とキャッシュサーバーの値を分けて読みます。
- 表示の言語が混ざる:日本語の Windows でも、項目によって英語のまま表示されます。検索するときは英語の文言で調べると情報が見つかりやすくなります。
まとめ
- 出力は「問い合わせ先」「答えの種類」「レコード」の3つの塊で読みます。
UnKnownは DNS サーバーに逆引きが無いだけ、「権限のない回答」はキャッシュ経由という意味で、どちらもエラーではありません。- CNAME や MX、SOA は Windows と Linux で書き方が違うため、対応関係を押さえておきます。
- 名前が無い(NXDOMAIN)のか、種別が無い(NODATA)のかを読み分けると、原因の見当がつきます。
- TTL・応答コード・フラグは
-debugを付けたときだけ表示されます。 - nslookup は hosts ファイルと OS のキャッシュを通らないため、ブラウザの見え方と食い違うことがあります。