| [Network] | |||||||||||||||
nslookupの基本的な使い方(イントラネット編)
|
|||||||||||||||
|
|||||||||||||||
| 解説 |
nslookupはDNSサービスのトラブルシューティングの場合に必ずといってよいほど使われる、非常に基本的なコマンドである。DNSサーバの設定の状態を調べたり、DNSのクライアント(一般的にはこちらの方が多いだろう)におけるDNS関連の設定を調査したりする場合に利用される。nslookupは、最初にUNIX上でDNSが開発されたときから利用されている、非常に歴史の古いコマンドである。同様のコマンドとして、UNIXやLinuxなどではdigやhostといった、より高機能なコマンドの利用が推奨されているが、Windows OS環境ではnslookup.exeしか用意されておらず、現在でも広く使われている。ここでは、非常に簡単なnslookupコマンドの使い方について解説しておく。インタラクティブ・モードやゾーン/ネーム・サーバ・レコード、DNSサーバのゾーン転送の確認などといった、より高度な使い方については今後別のTIPSで取り上げることにする。
DNSの基本
DNSサービスの機能を簡単に説明すると、例えばwww.atmarkit.co.jpといったFQDN名と、それに対応付けられている211.4.250.170などというIPアドレスを相互に変換するサービスである。DNSサーバには、名前(ホスト名)に対するIPアドレスの定義(Aレコード)や、逆に、IPアドレスに対する名前の定義(PTRレコード)、ドメイン名に対するネーム・サーバ情報(NSレコード)、サービス名に対するサーバのポート番号などの情報(SRVレコード)など、多くのレコードが登録されている。DNSサーバは、DNSのクライアントからの要求に応じて、これらのレコードを検索し、レコード情報を返すことになっている。
例えばDNSのクライアントが「www.atmarkit.co.jp」というホストを表す文字列をDNSサーバに渡すと、DNSサーバはこの文字列に割り当てられているIPアドレス「211.4.250.170」(Aレコード)を返してくる。逆に、「211.4.250.170」というIPアドレスを渡すと、「www.atmarkit.co.jp」という名前(PTRレコード。PTRはpointerの略)を返す。
ユーザーがコンピュータを利用する場合、このようなDNSサーバとDNSクライアントによる名前解決処理は自動的に行われるが、DNSサーバ側の設定ミスやDNSクライアント側でのDNSサーバ指定の間違い、DNSサーバ/クライアント間での通信エラーなどにより、名前解決が正しく行えない場合がある。このようなトラブルが発生した場合に、役に立つのがnslookupコマンドである。
nslookupコマンドは、DNSのサーバに対して直接DNS要求を送り、その結果を表示する。DNSサーバとのやり取りが直接表示されるので、DNSサーバと正しく通信ができているか、DNSクライアントからの要求に対するサーバの応答は正しいか、サーバに設定されているパラメータ(レコード情報)は正しいか、などの状態を調査することができる。Windows OSでは、DNSサーバに要求を出すクライアント側のプログラムとして「DNS Client」サービスが動作しているが、これは直接DNSサーバに問い合わせるだけでなく、サービス内部にキャッシュされた情報から検索したり、複数のDNSサーバに順に問い合わせたりするなど、いくらか高度な処理を行っている。そのため、DNSサーバに登録された最新のレコード情報と食い違っていたりする可能性がある。だがnslookupを使えば、DNSサーバに対して直接DNS要求を送信してその結果を得ることができる。またDNSサーバを指定することもできるので、DNSレコード情報を直接提供しているDNSサーバ(“権威のある(Authoritative)”DNSサーバ。プライマリDNSサーバともいう)だけでなく、セカンダリDNSサーバやキャッシュDNSサーバ、フォワードのみのDNSサーバなど、いろいろなサーバを指定して、それぞれからのDNS応答が正しいかどうかを検査することができる。
| 操作方法 |
nslookupの基本―Aレコードの検索
一番基本的なnslookupの使い方は、引数にホスト名やFQDN名を指定してnslookupを起動することである。
C:\>nslookup dapc01 …dapc01という名前をDNSサーバに問い合わせる(※1) |
ここでは単にホスト名「dapc01」のみを指定している。こうすると、現在のクライアント環境におけるデフォルト・ドメイン名(この場合は「d-advantage.com」)が末尾に補われて、DNS問い合わせが行われる。
結果の先頭2行(※1)は、このnslookupコマンドが問い合わせの対象としているDNSサーバの名前である。デフォルトでは、TCP/IPのプロパティにおける、DNSサーバ情報から取得される(複数定義されている場合は最初のDNSサーバ)。また省略時に補われるデフォルトのドメイン名も、同じくTCP/IPのDNS Suffix Search List情報から取得される。これらの情報はipconfig /allコマンドで表示することができる。もしDNSサーバそのものが存在しなければ、「*** Can't find server name for address 192.168.0.15: No response from server」などと表示される。
DNSサーバへの問い合わせ結果は、最後の2行に表示されている(※2)。つまり、「dapc01.d-advantage.com」のIPアドレスは「192.168.0.115」であるという結果が得られている。もし存在しない名前ならば「*** server01.d-advantage.com can't find pc99: Non-existent domain」などと表示される。
FQDN名を指定したDNS検索
次は単純なホスト名ではなく、FQDN名(ホスト名+ドメイン名を完全に指定した形式)で検索をしてみよう。この指定方法を使うと、デフォルトとは異なるドメインやサブドメインなどの場合でも検索することができる。DNSサーバに対する検索はこのFQDN名による検索が基本である(DNSクライアントは必要に応じてドメイン名を補って検索するようになっている)。
C:\>nslookup dapc01.d-advantage.com …問い合わせ(※3) |
これは「dapc01.d-advantage.com」という名前を検索して、その結果が「192.168.0.115」であったということを表している。
これと似た検索として、さらに次のようなものもある。
C:\>nslookup dapc01.d-advantage.com. …問い合わせ(※5) |
この問い合わせ(※5)の最後に「ピリオド(.)」が付いていることに注意して欲しい。結果は、※4も※6も同じであるが、実は途中の経過が少し異なる。
DNSに対する問い合わせでは、最後にピリオドが付いていると、それはFQDNであるとみなされ、自動的なドメイン名の補完は行われない。逆に、ピリオドがない場合は、自動的に現在のドメイン名が補完され、検索が行われる。そしてそれが失敗すると、次にデフォルト・ドメイン名を1つ分短くして(先頭の方から順に短くする)、次々とテストされ、最終的に結果が得られるまで実行される。
| DNS要求 | トライするFQDN |
| dapc01 | 1.dapc01.d-advantage.com. |
| dapc01.d-advanage.com | 1.dapc01.d-advantage.com.d-advanage.com. 2.dapc01.d-advantage.com. |
| dapc01.d-advanage.com. | 1.dapc01.d-advantage.com. |
| nslookupに対する引数と検索されるFQDNの例 | |
| 最後にピリオドがない場合は、(デフォルトのnslookupの検索設定では)デフォルトのドメイン名を補って検索し、失敗すると、デフォルト・ドメイン名を短くしながら、順番にトライする。ただし(詳細は省略するが)「dapc01.d-advantage.com.com」はトライしない。 | |
以上の動作を実際に確認するためには、nslookupに-debugオプションを付けて実行するとよい(「nslookup -debug dapc01.d-advantage.com.」などとする)。一番上と一番下の例では、DNSサーバに対して1回しか要求を出していないが、真ん中の例では、2回DNS要求が発行されている(DNSの要求1回ごとに「Got answer:」という項目が表示される)。
このような自動的な補完機能は、(サブ)ドメイン指定などを簡単にするために用意されている。例えばデフォルト・ドメインがsub1.sub2.d-advantage.comの場合でも、単に「server01」とすれば、「server01.d-advantage.com」を指すようにするためである。
逆引きポインタの検索
以上は名前からIPアドレスを求める場合であったが、逆にIPアドレスから元の名前(FQDN名)を求めることもできる。これを逆引きという。といっても、実際にはDNSサーバに逆引きのレコード(PTRレコード)が登録されており、それを検索しているに過ぎない。そのため、PTRレコードが存在しない場合は、逆引きは失敗する。
逆引きを行うためには、単に引数としてIPアドレスを指定すればよい。
C:\>nslookup 192.168.0.115 …問い合わせ(※7) |
この例では、「192.168.0.115」の逆引きの結果は「dapc01.d-advantage.com」であるという結果が返されている。ただしこれはPTRレコードのデータ部分だけであり、実際のPTRレコード全体を表示するには、次のように「-type=ptr」を付けて実行する(もっとも、結果に大きな違いはないが)。
C:\>nslookup -type=ptr 192.168.0.115 |
「115.0.168.192.in-addr.arpa」というのは、実際に定義されている逆引きレコードのFQDN名である(逆引きレコードは「0.168.192.in-addr.arpa」ドメインに定義されている)。
デフォルト以外のDNSサーバの指定
以上の例では、すべてデフォルトのDNSサーバ(上の例ではserver01.d-advantage.com)を利用して検索を行っていた。デフォルト以外のDNSサーバを利用するには、nslookupの引数の最後(第2引数)に、DNSサーバのFQDN名(もしくはIPアドレス)を付加すればよい。複数のDNSサーバが利用できる場合は、この機能を使って、それぞれのDNSサーバが正しく動作しているか、登録されている内容に矛盾がないかどうかなど調査することができる。
C:\>nslookup dapc01.d-advantage.com server02 |
この場合は、最初の例と同じなので、どちらのDNSサーバの内容も正しいということが分かる。もし異なる結果が得られたり、どちらかのDNSサーバがダウンしているようならば、サーバ側の調査が必要になるだろう。![]()
| 関連記事(Windows Server Insider) | ||
| Windows TIPS:nslookupの基本的な使い方(MXレコード編) | ||
| Windows TIPS:nslookupでDNSのゾーン転送機能をテストする | ||
| 「Windows TIPS」 |
TechTargetジャパン
- クライアントでも利用可能になるHyper-V 3.0とは? (2012/2/9)
Windows 8では、従来のWindows Virtual PCに代わって新しくHyper-V 3.0がクライアント向けにも導入される。その概要を解説 - 第303話 ペアプロ2 (2012/2/7)
あっ、またまたいつぞやの幽霊が! …っと思ったら、何だ倉井さんかぁ…。はぁー、驚いた… - Excelで郵便番号変換ウィザードを活用する (2012/2/3)
Excelで管理している顧客名簿などで、不足している郵便番号や住所を入力するのは意外と面倒。郵便番号変換ウィザードを使えば、これらの入力が簡単になる - PCをシンクライアント化するWindows Thin PCとは? (2012/2/2)
VDI向けにシンクライアントがほしいけど専用機を買う余裕はない… Windows Thin PCなら既存PCを低コストでシンクライアント化できる。まずは概要を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -

