目的と用途
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 |
この検索では、デフォルト・サーバ(デフォルトで要求を送信するDNSサーバ)に再帰検索を依頼しているだけである点に注意しよう。実際に、ドメイン・ツリーを順に検索する名前解決を行っているのは、デフォルト・サーバだ。一般に、nslookupコマンドなどDNSクライアントは「スタブ・リゾルバ」と呼ばれる、自身では名前解決の依頼をする機能しか提供しない。
デフォルト・サーバとして使用されるサーバは、Windowsであれば「ネットワークとダイヤルアップ接続」プロパティ、Linuxであれば「/etc/resolv.conf」ファイルでの指定によって決定されるが、必要に応じてserverまたはlserverコマンドで変更することもできる。
●Windows 2000での使用例
C:\>nslookup |
また、指定するホスト名はFQDNに限らない。FQDNでないホスト名(つまり「.(ピリオド)」が含まれていないホスト名)が指定された場合には、デフォルトのドメイン名(DNSサフィックス)を付加して検索してくれる。これはやはり、「ネットワークとダイヤルアップ接続」プロパティや/etc/resolv.confファイルで指定されたドメイン名のほか、必要に応じてdomainオプションで指定することもできる。またはsrchlistオプションで複数の候補を設定しておけば、順に自動的に補完して検索を試行してくれる。
●Windows 2000での使用例
> set domain=example.com |
■レコード別に検索を行う
nslookupでは、AレコードやPTRレコードの検索だけではなく、SOAレコード/NSレコードなどの任意のレコードの検索を行うこともできる。typeオプションまたはquerytypeオプションで、レコード種別を指定する。レコード種別として'ANY'を指定すれば、関係するドメイン内のすべてのレコードを検索して表示する。
●使用例1(SOAレコードの検索)
> set type=soa |
●使用例2(MXレコードの検索)
> set type=mx |
●使用例3(ANYの指定。検索対象に関連したレコードの回答)
> set type=any |
■デバックモードで検索の様子を調査する
通常の再帰検索だけでは、実際にどのような試行や回答がなされているのかは分からない。debugオプションまたはd2オプションを指定することで、より詳細な検索状況が把握でき、問題点の調査にも役立つだろう。
●Windows 2000での使用例
> set d2 |
突然出力内容が増えてややこしく見えるかもしれないが、これらは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 |
serverコマンドでゾーン転送を行うDNSサーバへと切り替えて、lsコマンドを実行すれば、セカンダリDNSサーバによるゾーン転送と同様の動作が行える。引数には転送したいドメイン名を指定する。表示できるレコードは、そのDNSサーバがオーソリティを持っているゾーン情報のみに限られる。
プライマリDNSサーバのゾーン転送が正常に動作するかどうかの確認とともに、もう1つの使い方としては、あるドメイン内のレコード定義一覧を表示するのにも使用できるだろう。ただし、一般的にはプライマリDNSサーバなどではセキュリティ保護の観点から、ゾーン転送を許可するホストをセカンダリDNSサーバなどだけに制限している場合が多い。その場合にはエラーとなる。
関連記事
- DNSの設定は正しいか?
重要なのはIPアドレスとサブネットマスク
Copyright © ITmedia, Inc. All Rights Reserved.