■ nslookup
さて、実際DNSがどう動き、どういう情報を転送しているのかわかったと思う。
2種類の問い合わせ、DNSメッセージですね。
うむ。それを実際確認する事ができる。
そのコマンドがnslookupだ。
えぬえするっくあっぷ?
そう、ネームサーバ [Name Server:ns] の参照 [look up] だな。
これもネットワーク管理者の御用達コマンドの1つだ。
pingみたいな?
そうだ、pingみたいにだ。本来、この講座ではツールなどの使い方を行うのは本意ではない。
だが、必須コマンドの1つであることだし、DNSがどのようなことを行っているか明白にわかるので、説明しよう。
あ、はい。
これは、WindowsとUNIX、どちらも持っているコマンドで、動作自体にはまったく変わりはない。
今回は、Windows2000Professionalを使う。UNIXのものとは結果表示の仕方が違うだけで、あとは全く同じだ。
どうやって使うんですか?
コマンドプロンプトで、nslookupと打つだけだ。
色々オプションがあるが、そのうちいくつかは説明する。 ▼ link
- c:\> nslookup
[Figure67-01:nslookup]
なんですか、これ?
きゃんとふぁいんどさーばねーむふぉー…?
あ〜、これは自宅のブロードバンドルータをネームサーバ(フォワーダ)にしてるから発生しているエラーだ。
気にしなくていい。
気にしなくていい、と言われても。
気にしなくていいものは、いいのだ。
ともかくだ、赤枠のところには、デフォルトのネームサーバが入る。本来ならばそのネームサーバ名も表示される。
[Figure67-02:Default Server]
本来ならばって。
画像のは名前を持たないブロードバンドルータだからな。さっきのエラーもそれが原因だ。
あぁ、わかったわかった。実際はこんな形だ。
[Figure67-03:Default Server・2]
私が使っているプロバイダのネームサーバがデフォルトサーバに設定されている。
これは、手動またはDHCPで取得したネームサーバがデフォルトに設定されている、ということだ。
パソコンに最初に設定されているネームサーバってことですね。
そういうことだ。
さて、nslookupの使い方だが、基本的な使用方法は素直に調べたいサーバのドメイン名を入れればいい。
[Figure67-04:基本的な使用法]
「Roads to Node」が置いてあるサーバ、「www5e.biglobe.ne.jp」のIPアドレスを問い合わせた形になる。
nslookupはネームサーバへの問い合わせを行うコマンドなのだよ。
ははぁ、リゾルバを手動で動かすようなものですか。
そうだな、そんな形だ。
画面の意味はこうなる。
[Figure67-05:基本的な使用法・2]
61.193.0.66がwww5e.biglobe.ne.jpですよ、って意味ですよね。
上の「のんおうそりていてぃぶあんさー」ってなんです?
それは先で説明しよう。
ともかく、一番基本の使い方はコレだ。
問い合わせたいドメイン名を入れると、応答が返ってくるんですね。
■ DNS問い合わせメッセージを見る
さて、これでは単に手動でリゾルバを触った形にしかすぎない。
もう一歩踏み込んで、DNSのメッセージのやりとりを見てみよう。
はい。
まず、nslookupを起動したら、以下のコマンドを入れる。
- c:\> nslookup
- Default Server: xxxxxxx
- Address: xxx.xxx.xxx.xxx
- > set d2
せっと でぃーつー。
「D2」ってなんです?
詳細デバックモードだ。これでDNSメッセージを見ることができる。
さっそくやってみよう。
ふおわっ、長ッ!!
うむ。問い合わせと応答をすべて表示しているからな。
順番に見ていこう。まず問い合わせ。ネット君、DNSの問い合わせメッセージはどんな形だ?
ヘッダ部分と質問セクションですよね。こんなの。
識別(ID) [16bit] | フラグ [16bit] |
質問の数(QD Count) [16bit] | 回答の数(AN Count) [16bit] |
オーソリティの数(NS Count) [16bit] | 追加情報の数(AR Count) [16bit] |
質問 [可変長] |
[Table66-01:DNSメッセージ]
そうだ。
フラグの部分はこうだったな。
ビット数 | 名前 | 意味 | |
---|---|---|---|
1 | 問い合わせ/応答 | QR | 0…問い合わせ 1…応答 |
4 | オペレーションコード | OPcode | 0…問い合わせ 1…逆問い合わせ 2…サーバ状態要求 |
1 | オーソリティ応答 | AA | 0…反復の結果の応答 1…そのネームサーバからの応答 |
1 | 切捨て | TC | 0…データサイズ512バイト以下 1…512バイト超 |
1 | 再帰要望 | RD | 0…反復問い合わせ 1…再帰問い合わせをネームサーバに要求 |
1 | 再帰有効 | RA | 0…再帰不可能 1…再帰可能 |
3 | 予約 | -- | すべて0 |
4 | 戻りコード | Rcode | 0…応答成功 3…問い合わせの名前なし |
[Table66-02:フラグ]
これをふまえて、詳細デバックモードで表示される問い合わせ部分をみてみよう。
[Figure67-07:qyery]
opcodeは「0:query」。idは「4」、rcodeは「0:応答成功」になっている。
その他の部分のフラグはこうなっている。
[Figure67-08:queryのフラグ]
「QR」が「query」で、「RD」が「want recursion」?
そう、QRは「0:問い合わせ」、RDは「1:再帰問い合わせをネームサーバに要求」ということだ。
その他の部分は、こうだ。
[Figure67-09:queryその他]
あ〜、なんかすごい。ホントに説明された通りの問い合わせをやってるんだ。
何を当たり前の事を言っている。
■ DNS応答メッセージを見る
次は応答メッセージだ。
これは長いので順番に見ていこう。まず、ヘッダ部分。
[Figure67-10:reply]
先ほどと同じだ。大体わかるだろう?
opcodeが「0:問い合わせ」、idが「4」、rcodeが「0:要求成功」ですね。
で、質問の数が「1」、回答の数が「1」、オーソリティの数が「2」、追加情報の数が「2」っと。
そうなる。
フラグはこういう意味だ。
[Figure67-11:replyのフラグ]
えぇ〜っと、QRが「1:応答」で、RAが「1:再帰有効」ですか?
そういうことだな。RAが「1」なので、このサーバは再帰問い合わせに対し反復問い合わせをしてくれるフルサービスリゾルバなのがわかる。
ということは、コンテンツサーバなら、RAが「0」になってるんですか?
その通り。例えば最上位のルートサーバなどはコンテンツサーバだが、ここに対する問い合わせの応答のヘッダ部分を見ると。
[Figure67-12:RAフラグなし]
あ、「recursion avail」の文字がない。
だろう?
それともう1つ、この応答をしたサーバは、www5e.biglobe.ne.jpが所属するドメインを管理しているサーバではないことがわかる。
そうなんですか?
うむ、その問い合わせ先が所属するドメインを管理しているサーバならば、ヘッダ部分はこうなる。
[Figure67-13:オーソリティ応答]
AAが「1:そのネームサーバからの応答」ならば、「auth answer」の文字が入る。
先ほどのネット君の疑問点。
[Figure67-14:Non-authroitative answer]
「Non-authroitative answer」だが、これはAAが「0」の時表示される文字だ。
つまり、問い合わせ先が所属するドメインを管理しているサーバからの応答ではないってことだな。
ということは、反復問い合わせかキャッシュによる応答って意味でしたっけ。
そういうことだな。
さて、その下の部分だが。
[Figure67-15:リソースレコード]
このように、各セクションがわかれている。
さらに。
[Figure67-16:リソースレコード・2]
見てわかると思うが、枠内でリソースレコード1つ分だ。「->」でそれがわかるようになっている。
そういえば、この応答メッセージのヘッダに「オーソリティの数:2」ってありましたっけ。
そうだ。なので、レコードが2つになっているわけだな。
nslookupの詳細デバックモードを使えば、このような表示になる。
ははぁ、前回の説明にあったDNSメッセージのやりとりを実際にみることができるわけですね。
■ 問い合わせのタイプ変更
さて、DNS問い合わせは単純なAレコードの問い合わせだけではない。
それと同様、nslookupも他のレコードの問い合わせが可能だ。
他のレコードの問い合わせ?
なんかありましたっけ?
例えば、メールを転送する時などだな。
その時はメールサーバのIPアドレスを知るため、MXレコードを問い合わせる。
あ、なるほど。
問い合わせのレコードのタイプを変更したい場合は、以下のようになる。
例えば、MXレコードの問い合わせを行いたい場合は、こう。
- c:\> nslookup
- Default Server: xxxxxxx
- Address: xxx.xxx.xxx.xxx
- > set type = mx
せっと たいぷ いこーる えむえっくす。
じゃあ、NSレコードを問い合わせたい場合は、「set type = ns」?
そういうことだ。
さて、MXレコードを問い合わせる場合、メールの@の後ろを入力する。
ということは、例えば博士の「aji-ssz(at)selene.is.dream.jp」だったら、「selene.dricas.com」?
うむうむ。その通り。
では早速やってみようか。
[Figure67-17:MXレコード問い合わせ]
一つ目の赤枠が、問い合わせに対する応答だな。
MX preferenceとMail exchangerが表示される。
MX preferenceってなんです?
MXレコードが持つ優先値だ。
Mail exchangerは実際にそのメールアドレスが使用するメールサーバ名だな。
優先値、そういえばそんなものもありましたね。
低い方を優先するんでしたっけ。
そういうことだな。2つ目の枠は、そのドメインを管理するネームサーバと、メールサーバの実際のIPアドレスだ。
dricas.comはns3.highway.ne.jpとns1.dricas.comがネームサーバで、mailsv3.dricas.comは、203.179.51.51です、と。
うむ。
詳細デバックモードを使って、この問い合わせをもう一度見てみると。
[Figure67-18:MXレコード問い合わせ・詳細デバック]
このように、ちゃんとMXレコードを問い合わせているのがわかる。
一方、応答の方は。
[Figure67-19:MXレコード応答・詳細デバック]
と、こういう形になるわけだな。
なるほどです。
■ 反復問い合わせを実施する
今度は手動で反復問い合わせをやってみよう。
反復問い合わせっていうと、フルサービスリゾルバが行う、他ネームサーバへの問い合わせですよね。
そうだ。これを自分で入力してやってみよう、という話だな。
さて、ネット君。反復問い合わせの場合、一番最初に問い合わせる場所はどこだ?
ルートサーバです。
そうだ。世界に13個あるルートサーバだな。つまり問い合わせサーバをルートに変更する必要がある。
コマンドはこう。
- c:\> nslookup
- Default Server: xxxxxxx
- Address: xxx.xxx.xxx.xxx
- >root
- Default Server: A.ROOT-SERVERS.NET
- Address: 198.41.0.4
サーバをルートに変更するコマンドが「root」だ。
これって、必ずA.ROOT-SERVERS.NETになるんですか?
WindowsのデフォルトはA.ROOT-SERVERS.NETだな。変更も可能だ。
- c:\> nslookup
- Default Server: xxxxxxx
- Address: xxx.xxx.xxx.xxx
- >set root = xxxxxx
「set root」コマンドで他のルートサーバを指定できる。
現在、設定しているルートサーバを知りたい場合は、こう。
[Figure67-20:set all]
この「root=」のところが設定してあるルートサーバなんですね。
そういうことだ。set allコマンドで調べることができるわけだな。 ▼ link
さて、実際反復問い合わせを行ってみよう。www5e.biglobe.ne.jpを問い合わせるとする。まずサーバをルートに変えて、次は?
www5e.biglobe.ne.jpを後ろから見るから、jp?
そうだ。ルートサーバに「jp」を管理するネームサーバを聞かなければならない。
「set type」コマンドでNSレコード問い合わせにして、jpを聞こう。
[Figure67-21:jpドメイン]
set type = ns でNSレコードに変えて。「jp」?
このC.DNS.jpから、B.DNS.jpがjpを管理するサーバなんですね。
その通り。ちなみに大文字と小文字は区別されるから、注意したまえ。
jpを管理するサーバがわかったから、そこに問い合わせサーバを変更しなければならない。コマンドはこう。
- c:\> nslookup
- Default Server: xxxxxxx
- Address: xxx.xxx.xxx.xxx
- >server xxxxxx
- Default Server: xxxxxx
- Address: xxx.xxx.xxx.xxx
「server」コマンドで問い合わせ先サーバを変更できる。
一番下のB.DNS.jpに変更して、次を聞こう。次は?
www5e.biglobe.ne.jpを後ろから見て、ne.jp。
[Figure67-22:ne.jpドメイン]
博士? d.dns.jpとe.dns.jpとf.dns.jpは2つIPアドレスがありますよ?
しかも、なんか普通と違うっぽい。
あぁ、それはIPv6アドレスだ。IPv6用のネームサーバでもある、ということだ。
ともかく、わかると思うが、この繰り返しで問い合わせを行っていくわけだ。
ということは、またserverコマンドでサーバを変更して。
今度は biglobe.ne.jpを問い合わせるわけですね。
[Figure67-23:biglobe.ne.jpドメイン]
うむ。
これでbiglobe.ne.jpを管理するサーバがわかったので、最後はレコードをAレコードに変えて、www5e.biglobe.ne.jpを聞けばよい。
[Figure67-24:www5e.biglobe.ne.jp]
なるほど。
反復問い合わせって実際はこうやってるわけですね。大変だ。
そういうことだ。
このようにnslookupを使えばDNSの動きを詳細に知ることができるわけだな。
ずいぶん色々とできるんですね。
うむ、なのでドメイン名がらみの障害のトラブルシューティングツールの筆頭なコマンドなのだよ。
これを知らんとネットワーク管理者はやってられない、と言われるくらいにな。
ははぁ。なんか納得できるような。
これを使えばDNSの動きがばっちりわかりますからね。
そういうことだ。これの細かい使い方を覚えておくと、様々な局面で役に立っていいぞ。
了解です。
では今回はこれで終わりにしよう。次も、もうちょっとDNSの話を続けよう。
いぇっさ〜。
3分間ネットワーキングでした〜♪
- Windows2000Professionalを使う
-
ただし、Windowsでは9x系列はnslookupコマンドがありません。
Windowsなら、NT、2000、XP、2003でね。
- オプション
- 説明しないものについては、参考リンクを参照してください。
- 詳細デバックモード
-
通常のデバックモードは「>set debug」で。
また、詳細デバックモードの解除は、「>set nod2」で詳細デバックモードを解除後、「>set nodebug」で通常のデバックモードを解除する必要がある。
- 画像
-
ちょっと長すぎますので、上部のみをカットして表示しています。
全体がみたい場合は、画像をクリックしてください。
- そういうことだ
- なお、「set q(query) = 」でも同じです。
- 他のルートサーバ
- ドメイン名で、A〜M.ROOT-SERVERS.NETです。
- set allコマンド
-
他に表示されているのは、その他の設定項目です。
詳細は、参考リンクの「NSLOOKUPのサブコマンド」を参照してください。
- ネット君の今日のポイント
-
- nslookupコマンドを使うと、DNS問い合わせを手動で実施できる。
- 詳細デバックモードにすれば、問い合わせと応答の中身を確認できる。
- 問い合わせるリソースレコードのタイプを変更できる。
- 問い合わせるサーバも変更できる。
- 参考リンク
-
- Windows2000 Advanced ドキュメントhttp://www.microsoft.com/windows2000/ja/advanced/help/nslookup.htm▲