nslookupコマンドの完全ガイド:オプションから使用例まで、初心者にもわかりやすく解説

nslookupコマンドは、ネットワーク管理やDNSのトラブルシューティングに欠かせないツールです。この記事では、主にWindowsのコマンドプロンプト/PowerShellで使う構文と、出力・エラーの読み方を解説します。LinuxやmacOSの実装ではオプションや表示が異なることがあります。

基本形はnslookup 調べる名前 DNSサーバーです。第2引数を省略すると既定のDNSサーバーに問い合わせます。これはDNSの回答を調べるコマンドで、Webサイトへの接続成功、メール配送成功、端末全体の正常性まで保証するものではありません。

目次

nslookupコマンドとは

nslookupコマンドは、ネットワーク管理者やITプロフェッショナルがDNS(Domain Name System)の情報を確認するために使用するツールです。このコマンドを使うことで、特定のドメイン名に対応するIPアドレスを調べたり、逆にIPアドレスからドメイン名を調べたりすることができます。また、DNSサーバーの設定や動作状況を確認する際にも役立ちます。

基本的な使用方法

nslookupコマンドの基本的な使い方を紹介します。以下に、最も一般的な使用例を示します。

ドメイン名からIPアドレスを調べる

最も基本的な使用方法は、特定のドメイン名に対応するIPアドレスを調べることです。以下のコマンドを実行します。

nslookup example.com

このコマンドを実行すると、example.comに対応するIPアドレスが表示されます。

IPアドレスからドメイン名を調べる

逆引き検索を行い、特定のIPアドレスに対応するドメイン名を調べることもできます。以下のコマンドを実行します。

nslookup 192.0.2.1

192.0.2.1は文書用の例示アドレスであり、実行してホスト名が返ることを想定していません。実際の検証では、管理者が確認を許可したIPアドレスに置き換えます。逆引きはPTRレコードが存在し、問い合わせ先から参照できる場合に名前を返します。

よく使うオプションの解説

nslookupコマンドには多くのオプションがありますが、ここではよく使われるオプションをいくつか紹介します。

-type=

このオプションを使うことで、特定のDNSレコードタイプを指定して検索できます。たとえば、MXレコードを調べたい場合は次のようにします。

nslookup -type=mx example.com

これにより、example.comのメールエクスチェンジレコードが表示されます。

-debug

デバッグモードを有効にするオプションです。詳細な問い合わせと応答の情報を確認することができます。

nslookup -debug example.com

このコマンドを実行すると、詳細なデバッグ情報が表示されます。

querytypeとtypeの関係、AとAAAAの違い

querytypeとtypeは問い合わせるレコード種別を指定するための同義の設定です。「-query=の方が短い形式」という説明ではなく、ここでは明確な-type=に統一します。AはIPv4、AAAAはIPv6のアドレスを調べる指定です。

nslookup -type=A example.com.
nslookup -type=AAAA example.com.

AとAAAAを別々に確認できます。一方のレコードがなくても、もう一方が存在する場合があります。末尾のドットは完全修飾名として問い合わせるための指定で、DNSサフィックスの追加による取り違えを避けたいときに使います。

サーバー指定

特定のDNSサーバーを指定してクエリを送信することもできます。以下のコマンドでは、8.8.8.8というGoogleのDNSサーバーを指定しています。

nslookup example.com 8.8.8.8

この指定はその問い合わせ先を選ぶもので、Windowsのネットワークアダプターに設定されたDNSサーバーを変更するものではありません。公開DNSへ問い合わせると、調べる名前はその運用者へ送られます。社内名・内部システム名は外部へ送らず、組織指定のDNSを使ってください。

具体的な使用例

実際のトラブルシューティングのシナリオを用いた具体的なnslookupコマンドの使用例を紹介します。

DNS解決エラーのトラブルシューティング

ウェブサイトにアクセスできない場合、まずはDNS解決が正しく行われているかを確認します。以下のコマンドでドメイン名の解決を試みます。

nslookup www.example.com

名前が存在しないと回答された場合の表示例です。実際のexample.comやwww.example.comについて、このエラーが発生することを示す実測結果ではありません。

*** UnKnown can't find www.example.com: Non-existent domain

Non-existent domainは、問い合わせた名前が存在しないという回答です。スペル、問い合わせ先、社内/社外の違いを確認します。先頭のUnKnownはDNSサーバー名を取得できないときにも現れるため、この表示だけでDNSサーバー全体の故障とは判断しません。

特定のDNSサーバーの動作確認

複数のDNSサーバーを使用している場合、特定のDNSサーバーが正しく動作しているかを確認できます。以下のコマンドで指定します。

nslookup www.example.com 8.8.8.8

これにより、GoogleのDNSサーバー(8.8.8.8)を使用してwww.example.comの情報を取得します。

MXレコードの確認

メール配送先のDNS設定を確認するためにMXレコードを調べます。SMTP接続や実際の受信成功を確認するテストではありません。

nslookup -type=mx example.com

通常のMXでは優先度と配送先ホスト名を確認します。優先度の数値は小さい方が優先されます。値が「0 .」のNull MXは、そのドメインがメールを受け付けないという明示であり、故障したメールサーバー名ではありません。example.comは説明用ドメインなので、稼働中のメールサーバーが必ず返る前提にしないでください。

逆引き検索でホスト名を確認

ログファイルにIPアドレスしか記録されていない場合、そのIPアドレスがどのホスト名に対応するかを確認します。

nslookup 192.0.2.1

PTRレコードがある場合に名前を取得できます。文書用アドレス192.0.2.1で成功するとは限りません。また、逆引き名だけでアクセス元の本人性や安全性を判断することはできません。

応用的な使い方

nslookupコマンドは、基本的な使い方だけでなく、応用的な使い方も可能です。ここでは、いくつかの高度な使用方法を紹介します。

非対話モードでの利用

nslookupコマンドは、対話モードと非対話モードの両方で使用できます。非対話モードを使うと、スクリプトやバッチファイルでの自動化が可能になります。以下は非対話モードの例です。

nslookup -type=txt example.com

このコマンドは、example.comのTXTレコードを非対話モードで取得します。

詳細なデバッグ情報の取得

デバッグモードを使うと、DNS問い合わせの詳細な情報を取得できます。これにより、問題の特定や詳細な解析が可能になります。

nslookup -debug example.com

このコマンドを実行すると、example.comのDNS情報に関する詳細なデバッグ情報が表示されます。

複数の問い合わせを順番に実行する

次は独立した2つのnslookupコマンドを順番に実行する例です。SQLのような「サブクエリ」や、1回の問い合わせですべてのレコードを取得する指定ではありません。

nslookup -type=A example.com
nslookup -type=MX example.com

これにより、example.comのAレコードとMXレコードを連続して取得できます。

カスタムDNSサーバーの利用

特定のDNSサーバーを指定してクエリを実行することで、異なるDNSサーバーの応答を比較することができます。これは、DNSサーバーの設定や動作確認に役立ちます。

nslookup example.com 8.8.8.8
nslookup example.com 1.1.1.1

Google Public DNS(8.8.8.8)とCloudflareの公開DNS(1.1.1.1)への問い合わせ例です。利用が許可されたネットワークで、公開名だけを比較します。回答が異なっても、キャッシュ、問い合わせ時刻、配信先の地域差などがあるため、直ちにどちらかを異常と判断しません。

結果の見方:サーバー欄と回答欄を分ける

先頭のServer/Addressは、問い合わせに使ったDNSサーバーです。その後のName/Addressなどが対象名の回答です。DNSサーバーのIPを、調べたWebサイトのIPと取り違えないようにします。

「Non-authoritative answer(権限のない回答)」は、対象ゾーンの権威サーバーとしての回答ではないことを表す表示で、エラーという意味ではありません。再帰DNSからの回答でも正常に名前解決できます。権威DNSへの直接問い合わせと、キャッシュを持つ再帰DNSへの問い合わせは分けて考えます。

nslookupで名前が解決できてもブラウザーで開けない場合は、接続先ポート、TLS、プロキシ、ブラウザー固有の名前解決など別の要因を確認します。nslookupの成功だけを、OSやすべてのアプリが同じ方法で名前解決している証拠にはしません。

対話モードで種類を切り替える

コマンドプロンプトやPowerShellで最初のnslookupを実行し、その後の行は表示された「>」のプロンプトに入力します。「>」自体は入力しません。終了はexitです。

nslookup
set type=A
example.com.
set type=MX
example.com.
exit

対話モードでのset typeなどは、そのnslookupセッションの動作を変える設定です。DNSサーバーに登録されたレコードやPCの恒久的なDNS設定を書き換えるものではありません。

演習問題

nslookupコマンドの理解を深めるために、いくつかの演習問題を用意しました。実際にコマンドを実行し、結果を確認してみましょう。

問題1: ドメイン名のAレコードを取得する

以下のドメイン名のAレコードを取得し、IPアドレスを確認してください。

nslookup -type=A www.example.com

結果として表示されるIPアドレスをメモしてください。

問題2: MXレコードの確認

以下のコマンドを使って、指定されたドメインのMXレコードを取得し、メールサーバーの情報を確認してください。

nslookup -type=mx example.net

通常のMXならホスト名と優先度を記録します。Null MXならメールを受け付けない指定として記録し、回答なしの場合もレコード種別とエラーを区別します。例示ドメインに稼働中のメールサーバーがあると決めつけないでください。

問題3: 特定のDNSサーバーを使ってクエリを実行する

GoogleのDNSサーバー(8.8.8.8)を使用して、example.orgのAレコードを取得してください。

nslookup -type=A example.org. 8.8.8.8

表示されるIPアドレスをメモしてください。

問題4: 逆引き検索を行う

次は文書用IPを使った構文例です。許可された実際のIPに置き換えて、逆引きの回答を確認してください。

nslookup 192.0.2.1

上記は文書用IPの構文例です。許可された実際のIPへ置き換え、PTRの有無と問い合わせ先を記録してください。名前が返らないことだけで、対象のWebサービスが利用不能とは判断しません。

問題5: デバッグ情報を取得する

example.comのDNS情報を取得する際にデバッグモードを有効にし、詳細な問い合わせ情報を確認してください。

nslookup -debug example.com

表示されるデバッグ情報の中で、特に重要な部分をメモしてください。

よくあるトラブルと解決方法

nslookupコマンドを使用する際に遭遇する可能性のある一般的なトラブルと、その解決方法を紹介します。

エラーは種類で切り分けます。NXDOMAINは名前が存在しない回答、No records/NODATAは名前はあっても指定種別の回答がない状態、timeoutは期限内に応答を得られない状態です。SERVFAILは処理に失敗、REFUSEDは要求の拒否であり、すべてを「ドメインがない」と解釈してはいけません。

timeoutではDNSサーバーのアドレス、VPNや経路、DNS通信の許可を確認します。応答待ちを長くするだけで原因が直るわけではありません。調査のためにファイアウォール全体を無効にするのは避け、管理者へ問い合わせ時刻・対象名・レコード種別・サーバーIP・エラーを伝えます。

問題: DNSサーバーが応答しない

DNSサーバーが応答しない場合、以下の点を確認してください。

DNSサーバーの設定を確認する

指定したDNSサーバーのIPアドレスが正しいか確認します。間違ったIPアドレスを指定していないかチェックしてください。

ネットワーク接続を確認する

インターネットやネットワークへの接続に問題がないか確認します。他のウェブサイトにアクセスできるかを試してみてください。

問題: ドメイン名が解決できない

特定のドメイン名が解決できない場合、以下の手順を試してみてください。

他のDNSサーバーを試す

公開ドメインについて、利用が許可された別のDNSへ同じ名前・同じ種別を問い合わせ、回答を比較します。社内DNSでしか解決できない名前を公開DNSへ送っても、比較テストとして適切ではありません。外部DNSへの通信が組織で制限されている場合は、その制限を回避しないでください。

nslookup example.com 8.8.8.8

ドメイン名のスペルを確認する

ドメイン名のスペルミスがないか確認してください。スペルミスがあると、正しい結果が得られません。

問題: nslookupコマンドが見つからない

nslookupコマンドが見つからない場合、以下を確認してください。

コマンドがインストールされているか確認する

Windowsではまずコマンド名とPATHを確認し、管理対象PCは管理者へ相談します。以下はUbuntuなどaptを使う環境での例で、すべてのLinux共通の手順ではありません。公式リポジトリを利用し、表示される変更内容を確認してください。

sudo apt-get install dnsutils

PATH環境変数を確認する

nslookupコマンドのパスがシステムのPATH環境変数に含まれているか確認してください。

まとめ

nslookupコマンドは、ネットワーク管理者やITプロフェッショナルにとって不可欠なツールです。この記事では、基本的な使い方から応用的な使い方、さらにはよくあるトラブルとその解決方法までを解説しました。これにより、DNSの問題を迅速かつ効果的に解決できるようになるでしょう。nslookupコマンドを使いこなして、ネットワークの健全性を維持し、トラブルシューティング能力を向上させてください。

公式資料

構文と表示はMicrosoftのnslookupリファレンス、querytypeの説明、DNSクエリと回答、逆引きの説明を参照してください。Linux等のBIND版はBIND公式マニュアル、UbuntuのパッケージはUbuntu公式パッケージ情報で確認できます。

例示アドレスはRFC 5737、負の回答はRFC 2308、Null MXはRFC 7505、Google Public DNSは公式利用案内を参照してください。公開DNSの回答値は変わるため、本記事の構文例を固定のIPアドレスを保証する実測結果として扱わないでください。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次