nslookup 〜DNSサーバに名前解決の問い合わせを行うネットワークコマンド使い方

» 2002年03月21日 10時00分 公開
[加地眞也@IT]

目的と用途

アイコン

 nslookupコマンドは、DNSクライアントの名前解決機能を手動実行するためのコマンドだ。正引き/逆引き、Aレコード/NSレコード/MXレコードなどのレコード種類の絞込み検索や、再帰検索/イテレイティブ検索、DNSサーバの任意切り替え、デバッグの実行など、さまざまなオプションからDNS検索の診断が行える。単にDNS検索を行いたいだけの場合にも、十分な機能を提供するだろう。

書式

nslookup[ -setコマンド・オプション][ ホスト・ドメイン名またはIPアドレス[ -DNSサーバ名]]

一般的なコマンド・ライン・モードのほか、ホスト・ドメイン名やIPアドレスが与えられていない場合には、対話モードで使用できる。対話モードでは、コマンドを指定することで、DNSサーバ切り替えやゾーン情報の参照なども行える。またLinuxでは、ユーザーのホーム・ディレクトリの「.nslookuprc」ファイルにオプションを記載して、実行時に自動指定しておくこともできる。

オプションなし 対話モードで実行する
setコマンド・オプション setコマンドのオプションを指定して設定する
ホスト・ドメイン名またはIPアドレス ホスト・ドメイン名を指定した場合は正引き(Aレコード検索)、IPアドレスを指定した場合には逆引き(PTRレコード検索)が行われる
DNSサーバ名 接続するDNSサーバを指定する

●コマンド・ライン・モード時

ホスト・ドメイン名またはIPアドレス[ DNSサーバ名]

下記のコマンド以外の文字列が入力された場合、ホスト・ドメイン名またはIPアドレスが入力されたと解釈して、正引きまたは逆引きを実行する。DNSサーバ名も指定された場合には、そのDNSサーバに対して問い合わせを実行する

all 現在の設定オプションを表示する
debug | nodebug デバッグ・モードを指定する。nodebugでこれを解除する
d2 | nod2 より詳細なデバッグ・モードを指定する。nod2でこれを解除する
defname | nodefname デフォルト・ドメイン名を指定したホスト・ドメイン名に自動的に付加して検索する。例えばwwwと指定された場合に、デフォルト・ドメイン名であるexample.netを付加してwww.example.netとして検索する。nodefnameはこの動作を解除する
recurse | norecurse recurseは再帰検索を指定する。norecurseはイテレイティブ検索(反復検索: 再帰検索を行わずDNSサーバが管理するゾーン情報のみへの一度の検索のみ)を指定する
search | nosearch ドメイン・サーチ・リストを付加して検索する。nosearchはこれを解除する
vc | novc TCP接続による検索を行う。novcはUDP接続での通常の検索を行う(ただし通常は、回答されるデータ・サイズがUDPパケット・サイズを越えている場合(トランケーション・エラー)に、あらためてTCP接続で検索される)
domain=ドメイン名 デフォルト・ドメイン名を指定する
srchlist=ドメイン名[/ドメイン名 ……] ドメイン・サーチ・リストを指定する。複数のドメインを指定でき、検索時に指定されたホスト名に自動的に付加して、それぞれの名前で成功するまで試行する
root=DNSサーバ名 ルートDNSサーバを指定する
retry=試行回数 検索失敗時の試行回数を指定する
timeout=タイムアウト秒数 DNSサーバに対するタイムアウトを秒数で指定する
querytype=検索レコード種別 | type=検索レコード種別 検索対象とするレコード種別を指定する。「'A'」「'SOA'」「'NS'」「'MX'」など
port=ポート番号 DNSサーバへ接続する際のポート番号を指定する。通常は'53'番
class=クラス名 検索するレコード・クラスを指定する。通常はデフォルトである「'IN'(internet)」を指定する
msxfr | nomsxfr*1 高速ゾーン転送モード(many-answers)を指定する。nomsxfrはこれを解除する
ixfrver=シリアル番号*1 IXFR(Incremental Zone Transfers:差分ゾーン転送(RFC1995))モードを使用するとともに、現在のシリアル番号を指定する
  • server DNSサーバ名
    使用するDNSサーバを、指定したサーバに変更する(デフォルト・サーバの変更)。その際に、サーバのIPアドレスは現在指定されているDNSサーバを用いて検索する

  • lserver DNSサーバ名
    使用するDNSサーバを、指定したサーバに変更する(デフォルト・サーバの変更)。その際に、サーバのIPアドレスはルート・ネーム・サーバから再帰検索して判断する

  • finger[ ユーザー名]
    現在のデフォルト・サーバに対してfinger(指定されたユーザー情報の問い合わせ)を実行する

  • root
    現在のデフォルト・サーバをルート・ネーム・サーバとする

  • ignoretc | noignoretc
    トランケーション・エラーを無視する。つまり、TCP接続による再度の検索は行わない。noignoretcはこれを解除する

  • ls[ オプション] ドメイン名[ >|>> 出力ファイル名]
    指定したドメインのゾーン情報を表示する。これは、通常プライマリ・サーバからセカンダリ・サーバに対して行うゾーン転送と同様の動作である。指定した出力ファイルに内容を出力して、新規作成または追記することもできる。また以下のオプションが指定できる
オプションなし ホストのエイリアス(CNAMEレコード)のみを表示する
-v ホスト情報(HINFOレコード)のみを表示する
-n ホストのサービス情報(WKSレコード)のみを表示する
-N すべてのレコードを表示する
-t レコードタイプ 任意のレコードタイプを表示する。例えば「-t cname」は-aオプションと同義となる
  • view 出力ファイル名*1
    (lsコマンドで作成された)出力ファイルを表示する

  • exit
    対話モードを終了する

  • help | ?
    ヘルプを表示する

*1Windowsのみ


使用方法

基本的な再帰検索

 一般的な正引きまたは逆引きを行うには、単に解決したいホスト名またはIPアドレスを入力するだけだ。コマンドラインの引数として指定するか、あるいは対話モードで指定する。入力された文字列がホスト名かIPアドレスかは、自動的に判断して検索してくれる。

●Windows 2000での使用例

C:\>nslookup www.example.net

           または

C:\>nslookup
> www.example.net

Server:  ns.example.net
Address:  192.168.1.11

Name:    host1.example.net
Address:  192.168.1.201 <-- 解決されたIPアドレス
Aliases:  www.example.net <-- 'Name:'が本来のAレコードでの名前。
                              www.example.netがエイリアス(CAME
                              レコード)の場合にはこのように表さ
                              れる


 この検索では、デフォルト・サーバ(デフォルトで要求を送信するDNSサーバ)に再帰検索を依頼しているだけである点に注意しよう。実際に、ドメイン・ツリーを順に検索する名前解決を行っているのは、デフォルト・サーバだ。一般に、nslookupコマンドなどDNSクライアントは「スタブ・リゾルバ」と呼ばれる、自身では名前解決の依頼をする機能しか提供しない。

 デフォルト・サーバとして使用されるサーバは、Windowsであれば「ネットワークとダイヤルアップ接続」プロパティ、Linuxであれば「/etc/resolv.conf」ファイルでの指定によって決定されるが、必要に応じてserverまたはlserverコマンドで変更することもできる。

●Windows 2000での使用例

C:\>nslookup
> server 192.168.2.11
Default Server:  otherns.example.net
Address:  192.168.2.11
> host1.example.net

Server:  otherns.example.net
Address:  192.168.2.11

Name:    host1.example.net
Address:  192.168.1.201


 また、指定するホスト名はFQDNに限らない。FQDNでないホスト名(つまり「.(ピリオド)」が含まれていないホスト名)が指定された場合には、デフォルトのドメイン名(DNSサフィックス)を付加して検索してくれる。これはやはり、「ネットワークとダイヤルアップ接続」プロパティや/etc/resolv.confファイルで指定されたドメイン名のほか、必要に応じてdomainオプションで指定することもできる。またはsrchlistオプションで複数の候補を設定しておけば、順に自動的に補完して検索を試行してくれる。

●Windows 2000での使用例

> set domain=example.com
> www  <-- ドメイン名は指定していない。相対パスを
           指定したようなものだと思えばいい
Server:  ns.example.net
Address:  192.168.1.11

Name:    www.example.com
Address:  192.168.2.20


レコード別に検索を行う

 nslookupでは、AレコードやPTRレコードの検索だけではなく、SOAレコード/NSレコードなどの任意のレコードの検索を行うこともできる。typeオプションまたはquerytypeオプションで、レコード種別を指定する。レコード種別として'ANY'を指定すれば、関係するドメイン内のすべてのレコードを検索して表示する。

●使用例1(SOAレコードの検索)

> set type=soa
> example.com
Server:  [192.168.1.11]
Address:  192.168.1.11

example.com
        primary name server = ns.example.com
        responsible mail addr = root.example.com
        serial  = 2001062501
        refresh = 21600 (6 hours)
        retry   = 3600 (1 hour)
        expire  = 604800 (7 days)
        default TTL = 86400 (1 day)
example.com     nameserver = ns.example.com
ns.example.com      internet address = 192.168.1.201


●使用例2(MXレコードの検索)

> set type=mx
> example.com
Server:  [192.168.1.11]
Address:  192.168.1.11

example.com     MX preference = 10, mail exchanger = mx.example.com
example.com     nameserver = ns.example.com
ns.example.com      internet address = 192.168.1.201


●使用例3(ANYの指定。検索対象に関連したレコードの回答)

> set type=any
> www.example.com
Server:  [192.168.1.11]
Address:  192.168.1.11

www.example.com canonical name = server2.example.com
example.com     nameserver = ns.example.com
ns.example.com      internet address = 192.168.1.201


デバックモードで検索の様子を調査する

 通常の再帰検索だけでは、実際にどのような試行や回答がなされているのかは分からない。debugオプションまたはd2オプションを指定することで、より詳細な検索状況が把握でき、問題点の調査にも役立つだろう。

●Windows 2000での使用例

> set d2
> www.example.com
Server:  [192.168.1.11]
Address:  192.168.1.11

------------
SendRequest(), len 33
    HEADER:
        opcode = QUERY, id = 13, rcode = NOERROR
        header flags:  query, want recursion
        questions = 1,  answers = 0,  authority records = 0,  additional = 0

    QUESTIONS:
        www.example.com, type = A, class = IN

------------
------------
Got answer (108 bytes):
    HEADER:
        opcode = QUERY, id = 13, rcode = NOERROR
        header flags:  response, auth. answer, want recursion, recursion avail.
        questions = 1,  answers = 2,  authority records = 1,  additional = 1

    QUESTIONS:
        www.example.com, type = A, class = IN
    ANSWERS:
    ->  www.example.com
        type = CNAME, class = IN, dlen = 10
        canonical name = server2.example.com
        ttl = 86400 (1 day)
    ->  server2.example.com
        type = A, class = IN, dlen = 4
        internet address = 192.168.1.206
        ttl = 86400 (1 day)
    AUTHORITY RECORDS:
    ->  example.com
        type = NS, class = IN, dlen = 9
        nameserver = ns.example.com
        ttl = 86400 (1 day)
    ADDITIONAL RECORDS:
    ->  ns.example.com
        type = A, class = IN, dlen = 4
        internet address = 192.168.1.201
        ttl = 86400 (1 day)

------------
Name:    server2.example.com
Address:  192.168.1.206
Aliases:  www.example.com


 突然出力内容が増えてややこしく見えるかもしれないが、これらはDNSプロトコルでサーバとやりとりされたDNSデータの内容そのものだ。「連載:ネットワーク・コマンドでトラブル解決(7)『DNSの設定は正しいか?』」のプロトコルの説明と合わせて見ていただきたい。

 上記の例では、サーバからの回答においてANSWERSセクションからwww.example.comの正式名(server2.example.com)とIPアドレスが分かる。AUTHORITY RECORDSセクションでこのレコードにオーソリティを持っているDNSサーバ(ns.example.com)が、ADDITIONAL RECORDSセクションからはそのDNSサーバーのIPアドレスが、それぞれ分かるだろう。また、DNS検索が正しく稼働しない場合には、検索パスやサーバからのエラーなどを詳しく確認するのに便利だろう。

ゾーン転送を確認する

 nslookupコマンドでは、ゾーン転送(完全転送:AXFR)をシミュレートすることもできる。これにはlsコマンドを用いる。

●Windows 2000での使用例

> ls example.com
[ns.example.com]
 example.com.                   NS     server = ns.example.com
 server2                        A      192.168.1.206
 ns                             A      192.168.1.201
 server1                        A      192.168.1.205


 serverコマンドでゾーン転送を行うDNSサーバへと切り替えて、lsコマンドを実行すれば、セカンダリDNSサーバによるゾーン転送と同様の動作が行える。引数には転送したいドメイン名を指定する。表示できるレコードは、そのDNSサーバがオーソリティを持っているゾーン情報のみに限られる。

 プライマリDNSサーバのゾーン転送が正常に動作するかどうかの確認とともに、もう1つの使い方としては、あるドメイン内のレコード定義一覧を表示するのにも使用できるだろう。ただし、一般的にはプライマリDNSサーバなどではセキュリティ保護の観点から、ゾーン転送を許可するホストをセカンダリDNSサーバなどだけに制限している場合が多い。その場合にはエラーとなる。

関連ネットワーク・コマンド/ツール

nslookup 〜DNSサーバに名前解決の問い合わせを行う

ipconfig 〜Windowsのネットワーク設定を確認する


ネットワークコマンド使い方


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。