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


加地眞也
2002/3/21

 目的と用途

 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サーバなどだけに制限している場合が多い。その場合にはエラーとなる。

 

関連記事
  DNSの設定は正しいか?
重要なのはIPアドレスとサブネットマスク
 

関連ネットワーク・コマンド/ツール
nslookup
〜DNSサーバに名前解決の問い合わせを行う
  ipconfig
〜Windowsのネットワーク設定を確認する
 

ネットワークトラブル解決法
- 通信の疎通を確認 - TCP/UDPの状態
- 設定は正しいか? - DHCPの設定
- ルーティングの設定 - DNSの設定
- イーサネット通信確認  
ネットワークコマンド使い方
- ping - route
- traceroute - arp
- ipconfig - netstat
- ifconfig - nslookup


ツールを使ってネットワーク管理

 名前しか知らない後輩君がやってきた。彼によると、コマンドはすでに古くツールがクールだという。ならば教えてもらおうではないか

最終更新 2007/3/26
「Master of IP Network総合インデックス」

 

TechTargetジャパン

Master of IP Network フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

キャリアアップ

- PR -

イベントカレンダー

PickUpイベント

- PR -

アクセスランキング

もっと見る
- PR -
ソリューションFLASH

「ITmedia マーケティング」新着記事

BENLY、動画マーケティングの一気通貫ソリューションでPurpleCowと業務提携
デジタルマーケティング事業を営むBENLYは11月21日、PurpleCowが運営する動画制作クラウ...

エムプロモとROI、購入後追跡アンケートまでサポートするO2Oサンプリングを開始
マクロミルの子会社であるエムプロモは11月21日、O2Oサンプリングの営業推進ならびに商品...

Square、無料POSレジ「Squareレジ」のグローバル提供を開始
Squareは11月20日、iOS/Android対応のPOSレジアプリ「Squareレジ」のグローバル提供を始...