nslookupコマンドは、DNSサーバーに直接問い合わせて、ドメイン名とIPアドレスの対応や、MX・TXTなどのレコードを調べるコマンドです。「nslookup 名前 DNSサーバー」の形で問い合わせ先を選べ、-type=MXのようにレコードの種類も指定できます。hostsファイルやPCのキャッシュを通らない点が、ブラウザとの違いです。
この記事でわかること
- 正引き・逆引き・DNSサーバーを指定した問い合わせの書き方
- -typeで指定するレコードの種類と、調べる場面の対応
- 「権限のない回答」「UnKnown」など結果の読み方とエラーの意味
- nslookupとブラウザで結果が食い違う理由
- Resolve-DnsName(PowerShell)とdig(Linux)との対応
一次情報: Microsoft Learn「nslookup」(参照)/Microsoft Learn「DNS クライアントの名前解決に関する問題のトラブルシューティング」(参照)/BIND 9「dig」(参照)※2026年9月時点
DNSのようにサーバー側まで見られるようになると、任される範囲が変わってきます。ネットワークエンジニアの年収が経験や資格でどう変わるかは、別の記事で整理しました。
nslookupコマンドとは?DNSサーバーに直接問い合わせるコマンド
nslookupコマンドとは、DNSサーバーに問い合わせて、名前とIPアドレスの対応などを表示するコマンドです。Microsoftの資料では、DNSのインフラの診断に使うツールと位置づけられています。
ドメイン名からIPアドレスを調べるのが「正引き」、IPアドレスから名前を調べるのが「逆引き」です。nslookupはどちらにも使え、メールの配送先(MX)やドメインの設定(TXT)など、ほかのレコードも引けます。
nslookup www.example.com
nslookup 203.0.113.80
nslookup www.example.com 8.8.8.8
1行目が正引き、2行目が逆引きです。3行目のように2つ目に書いたアドレスが、問い合わせ先のDNSサーバーになります。省略した場合の問い合わせ先は、PCに設定された既定のDNSサーバーです。
結果の見方|「権限のない回答」と「UnKnown」
下は日本語版Windowsの出力例で、アドレスは説明用の値にしています。上の2行が「どのDNSサーバーが答えたか」、下が「答えの中身」です。
サーバー: UnKnown
Address: 192.168.10.1
権限のない回答:
名前: www.example.com
Addresses: 2001:db8::80
203.0.113.80
| 表示 | 意味 | 気にするべきか |
|---|---|---|
| サーバー:/Address: | 答えたDNSサーバーの名前とIP | 想定したDNSサーバーかを確かめる |
| UnKnown | DNSサーバー自身の名前を逆引きできなかった | 答えの中身には影響しない |
| 権限のない回答 | そのドメインを管理するサーバー以外が、キャッシュなどから答えた | 普通の状態。異常ではない |
| 名前:/Addresses: | 問い合わせた名前と、対応するIPアドレス | IPv6とIPv4の両方が出ることがある |
| Aliases: | 別名(CNAME)がある場合の本来の名前 | CDNなどを使うサイトでよく出る |
「権限のない回答」は、エラーではありません。社内や回線業者のDNSサーバーは、ほかのサーバーから聞いた答えを覚えておき、それを返します。その答えが、そのドメインの持ち主のサーバーから直接来たものではない、という意味の表示です。
nslookupの出力は上下2つに分けて読む
- サーバー
- サーバー名。逆引きできなければUnKnown
- Address
- 問い合わせ先のIP。想定したサーバーか確かめる
- 権限のない回答
- キャッシュなどからの答え。普通の状態
- 名前・Addresses
- 問い合わせた名前と対応するIP
- Aliases
- CNAMEがあるときの別名
図:上は「誰が答えたか」、下は「答えの中身」。UnKnownと権限のない回答は異常ではない
nslookupでレコードの種類を指定する|-typeの使い方
何も指定しないと、nslookupは名前に対応するアドレスを返します。メールやドメインの設定を調べたいときは、「-type=」でレコードの種類を指定してください。
nslookup -type=MX example.com
nslookup -type=TXT example.com
nslookup -type=NS example.com
Microsoftの資料には、「-type=A+AAAA」のように組み合わせる例も載っています。「-debug」を付ければ、送受信したパケットの詳細まで出せます。
| レコード | 中身 | こんなときに引く |
|---|---|---|
| A | 名前に対応するIPv4アドレス | Webサーバーの引っ越し後の確認 |
| AAAA | 名前に対応するIPv6アドレス | IPv6でだけつながらない |
| CNAME | 別名の転送先 | CDNやクラウドの名前に向いているか |
| MX | メールの配送先サーバーと優先度 | メールが届かない、届き先を変えた |
| TXT | 任意の文字列(送信ドメイン認証など) | なりすまし対策の設定を確かめる |
| NS | そのドメインを管理するDNSサーバー | ドメインの管理先を移した |
| SOA | ゾーンの管理情報(更新番号など) | ゾーンの更新が反映されたか |
| PTR | IPアドレスに対応する名前 | 逆引きの設定を確かめる |
表のレコード名は、PowerShellのResolve-DnsNameの資料にある種類の一覧と同じです。1つの問い合わせで全部を引く「ANY」もあります。ただ、ANYには最小限しか答えないDNSサーバーもあるので、必要な種類を1つずつ指定する方が確実です。
対話モードで続けて調べる
引数を付けずに「nslookup」とだけ打つと、プロンプトが「>」に変わる対話モードになります。同じDNSサーバーに、条件を変えながら何度も問い合わせるときに便利です。
| 入力 | できること |
|---|---|
| server 8.8.8.8 | 問い合わせ先のDNSサーバーを切り替える |
| set type=MX | 以降の問い合わせのレコードの種類を変える |
| set debug | 応答の詳細(TTLなど)を表示する |
| set all | 今の設定をまとめて表示する |
| exit | 対話モードを終える |
対話モードで名前を打ち間違えると、サブコマンドのつもりが問い合わせとして扱われることもあるので要注意です。Microsoftの資料でも、認識できないコマンドはコンピューター名として解釈される、とされています。
nslookupのエラーの読み方
問い合わせが失敗したときの表示は、Microsoftの資料に一覧があります。どの表示が出たかで、原因が「名前の側」か「DNSサーバーの側」かに分かれます。
| 表示 | 意味 | 次の一手 |
|---|---|---|
| Non-existent domain | その名前やドメインが存在しない | つづり・ドメインの登録状況を確かめる |
| No records | 名前はあるが、指定した種類のレコードが無い | -typeの指定が正しいか確かめる |
| timed out | 一定時間・一定回数の再試行でも応答が無い | DNSサーバーまでの経路・53番ポートの通信 |
| No response from server | DNSサーバーのサービスが動いていない | 別のDNSサーバーを指定して比べる |
| Server failure | DNSサーバー内部の不整合で答えられない | サーバー側の管理者に確認する |
| Refused | DNSサーバーが問い合わせを断った | 問い合わせを許可された相手か確かめる |
「Non-existent domain」と「No records」は、名前の側の問題です。「timed out」や「No response from server」は、DNSサーバーまで届いていないか、サーバーが動いていない状態を示します。
複数のDNSサーバーがあるときの落とし穴
PCに複数のDNSサーバーが設定されている場合、nslookupは1つ目(プライマリ)にしか問い合わせません。Microsoftのトラブルシューティング資料にも、そう明記されています。
一方、Windowsの通常の名前解決は、応答が無ければ2つ目以降のDNSサーバーにも問い合わせます。1つ目のDNSサーバーが止まっていると、ブラウザは開けるのにnslookupだけ失敗するのは、このためです。ipconfig /allで「DNS サーバー」の並び順を見て、2つ目のアドレスを指定して打ち直せば切り分けは簡単です。
nslookupとブラウザで結果が違う理由
nslookupで調べたIPアドレスと、ブラウザが実際につないでいるIPアドレスが違う。これはnslookupでよくある戸惑いです。原因は、名前を引く経路が違うことにあります。
Microsoftの資料によると、Windowsの名前解決(DNSクライアント)は次の順番で名前を引きます。
- キャッシュを見る。一度引いた結果を覚えている
- hostsファイルを見る。C:\Windows\System32\drivers\etc にある
- DNSサーバーへ問い合わせる。ここで初めてネットワークに出る
ブラウザやpingはこの順番に乗りますが、nslookupは3番目だけを直接行います。hostsファイルに書いた行や、PCに残っている古いキャッシュは、nslookupの結果には出てきません。
Windowsの名前解決と同じ経路で確かめたいときは、PowerShellのResolve-DnsNameを使います。Microsoftの資料には、hostsファイルに登録した名前をResolve-DnsNameで引く例があります。このときDNSサーバーへの通信は発生せず、hostsの値がそのまま返っていました。
| コマンド | キャッシュ | hostsファイル | DNSサーバー |
|---|---|---|---|
| nslookup | 見ない | 見ない | 1つ目のサーバーに直接問い合わせる |
| Resolve-DnsName | 見る | 見る(-NoHostsFile で省ける) | 設定された順に問い合わせる |
| ping(名前で指定) | 見る | 見る | 設定された順に問い合わせる |
ブラウザとnslookupは名前を引く経路が違う
- 1
- PCのキャッシュを見る
- 2
- hostsファイルを見る
- 3
- DNSサーバーへ設定順に問い合わせる
- 1
- キャッシュは見ない
- 2
- hostsファイルは見ない
- 3
- 1つ目(プライマリ)のDNSサーバーに直接問い合わせる
図:nslookupはキャッシュとhostsを通らず、1つ目のDNSサーバーへ直接聞きに行く
digとResolve-DnsNameとの対応
LinuxやmacOSでDNSを調べるときは、digが定番です。BIND 9の資料によると、digは既定で /etc/resolv.conf に書かれたDNSサーバーに、Aレコードを問い合わせます。Windowsで同じことをするなら、nslookupかResolve-DnsNameです。
| やりたいこと | nslookup | Resolve-DnsName | dig |
|---|---|---|---|
| 正引き | nslookup example.com | Resolve-DnsName example.com | dig example.com |
| 逆引き | nslookup 203.0.113.80 | Resolve-DnsName 203.0.113.80 | dig -x 203.0.113.80 |
| DNSサーバーを指定 | nslookup example.com 8.8.8.8 | -Server 8.8.8.8 | dig @8.8.8.8 example.com |
| レコードを指定 | -type=MX | -Type MX | dig example.com MX |
| 答えだけ短く出す | ─ | ─ | +short |
| ルートから委任をたどる | ─ | ─ | +trace |
digの「+trace」は、ルートサーバーから順に委任をたどって答えにたどり着く過程を表示します。ドメインの管理先を移したあと、どの段階で古い情報が残っているかを探すときに便利です。
現場での使いどころ|DNSの切り替えが反映されたか確かめる
Webサーバーの引っ越しやメールサービスの乗り換えでは、DNSの登録を書き換えます。そのとき「どこまで新しい値になったか」を確かめるのが、nslookupの代表的な使い方です。
DNSの切り替えが反映されたかを確かめる順番
- Webサーバーの引っ越しやメールの乗り換えの後に使います。
- 1nslookup -type=NS ドメインそのドメインを管理するDNSサーバーを調べる
- 2管理サーバーを指定して引く書き換えた値そのものが返るか。古ければ登録作業を見直す
- 3普段のDNSサーバーで引く古い値ならキャッシュが残っている段階
- 4set debug でTTLを見るあと何秒で古い値が消えるかの目安にする
図:管理サーバーの値と普段のDNSサーバーの値を比べると、待つだけか直すべきかが決まる
切り替えの確認で押さえること
- ドメインを管理するサーバーに直接聞く。-type=NSで管理サーバーを調べ、そのサーバーを指定して引くと、書き換えた値そのものを確かめられる
- 普段使うDNSサーバーにも聞く。古い値が返るなら、キャッシュの保持期間(TTL)が切れるまで待つ段階
- set debugでTTLを見る。あと何秒で古い値が消えるかの目安になる
管理サーバーでは新しい値、普段のDNSサーバーでは古い値が返るなら、設定は正しく、あとは時間の問題です。管理サーバーでも古い値なら、DNSの登録作業そのものを見直します。
よくある質問
nslookupの「権限のない回答」はエラーですか?
エラーではありません。そのドメインを管理するDNSサーバーではなく、社内や回線業者のDNSサーバーが、以前に聞いた答えを返したという意味です。ふだんの問い合わせでは、この表示が出るのが普通の状態です。
サーバーが「UnKnown」と表示されるのは問題ですか?
問題ありません。答えたDNSサーバー自身のIPアドレスを、名前に逆引きできなかったという表示です。問い合わせた名前の答えは、その下に正しく表示されています。
hostsファイルに書いたのにnslookupに反映されません
nslookupはhostsファイルを見ずに、DNSサーバーへ直接問い合わせるためです。hostsファイルの設定が効いているかは、ping(名前で指定)やPowerShellのResolve-DnsNameで確かめてください。
nslookupとdigはどちらを使えばいいですか?
Windowsではnslookupが標準で入っており、LinuxやmacOSではdigがよく使われます。digは答えだけを短く出す+shortや、委任をたどる+traceが使えるので、DNSの設定を細かく調べるときに向いています。
ブラウザでは開けるのにnslookupだけ失敗するのはなぜですか?
PCに設定された1つ目のDNSサーバーが応答していない可能性があります。nslookupが問い合わせるのは1つ目だけで、ブラウザは2つ目以降にも問い合わせるからです。ipconfig /allでDNSサーバーの並びを確かめ、2つ目を指定して打ち直してみてください。
まとめ
- nslookupは、DNSサーバーに直接問い合わせて名前とIPの対応やレコードを調べるコマンド
- 「nslookup 名前 DNSサーバー」で問い合わせ先を選び、-typeでレコードを指定する
- 「権限のない回答」「UnKnown」は異常ではない
- hostsファイルとキャッシュを通らないので、ブラウザと結果が違うことがある
- Windowsの名前解決と同じ経路で見るならResolve-DnsName、Linuxならdig
名前解決の問題は、ネットワークの障害と見分けがつきにくいのが厄介なところです。IPでは届くのに名前では届かない、と切り分けられた時点で、nslookupの出番になります。
DNSやサーバーの側まで調べられるようになると、監視・運用の次の段階が見えてきます。監視オペレーターからインフラエンジニアへ進む道筋を、24か月の段階に分けて整理した記事です。
免責事項
※本記事はMicrosoftの公式ドキュメント、BIND 9の資料などの公開情報をもとに整理したものです。コマンドの表示や既定値は、OSのバージョンや設定によって変わる場合があります。業務で使う環境では、所属先の手順とベンダーの最新資料をあわせてご確認ください。

