3 Minutes NetWorking
No.67

3Minutes NetWorking

第67回DNS(6) nslookup

■ nslookup

インター博士

さて、実際DNSがどう動き、どういう情報を転送しているのかわかったと思う。

ネット助手

2種類の問い合わせ、DNSメッセージですね。

インター博士

うむ。それを実際確認する事ができる。
そのコマンドがnslookupだ。

ネット助手

えぬえするっくあっぷ?

インター博士

そう、ネームサーバ [Name Server:ns] の参照 [look up] だな。
これもネットワーク管理者の御用達コマンドの1つだ。

ネット助手

pingみたいな?

インター博士

そうだ、pingみたいにだ。本来、この講座ではツールなどの使い方を行うのは本意ではない。
だが、必須コマンドの1つであることだし、DNSがどのようなことを行っているか明白にわかるので、説明しよう。

ネット助手

あ、はい。

インター博士

これは、WindowsとUNIX、どちらも持っているコマンドで、動作自体にはまったく変わりはない。
今回は、Windows2000Professionalを使う。UNIXのものとは結果表示の仕方が違うだけで、あとは全く同じだ。

ネット助手

どうやって使うんですか?

インター博士

コマンドプロンプトで、nslookupと打つだけだ
色々オプションがあるが、そのうちいくつかは説明する。 ▼ link

  • c:\> nslookup

nslookup

[Figure67-01:nslookup]

ネット助手

なんですか、これ?
きゃんとふぁいんどさーばねーむふぉー…?

インター博士

あ〜、これは自宅のブロードバンドルータをネームサーバ(フォワーダ)にしてるから発生しているエラーだ。
気にしなくていい。

ネット助手

気にしなくていい、と言われても。

インター博士

気にしなくていいものは、いいのだ。
ともかくだ、赤枠のところには、デフォルトのネームサーバが入る。本来ならばそのネームサーバ名も表示される。

Default Server

[Figure67-02:Default Server]

ネット助手

本来ならばって。

インター博士

画像のは名前を持たないブロードバンドルータだからな。さっきのエラーもそれが原因だ。
あぁ、わかったわかった。実際はこんな形だ。

Default Server・2

[Figure67-03:Default Server・2]

インター博士

私が使っているプロバイダのネームサーバがデフォルトサーバに設定されている。
これは、手動またはDHCPで取得したネームサーバがデフォルトに設定されている、ということだ。

ネット助手

パソコンに最初に設定されているネームサーバってことですね。

インター博士

そういうことだ。
さて、nslookupの使い方だが、基本的な使用方法は素直に調べたいサーバのドメイン名を入れればいい。

基本的な使用法

[Figure67-04:基本的な使用法]

インター博士

「Roads to Node」が置いてあるサーバ、「www5e.biglobe.ne.jp」のIPアドレスを問い合わせた形になる。
nslookupはネームサーバへの問い合わせを行うコマンドなのだよ。

ネット助手

ははぁ、リゾルバを手動で動かすようなものですか。

インター博士

そうだな、そんな形だ。
画面の意味はこうなる。

基本的な使用法・2

[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メッセージを見ることができる
さっそくやってみよう。

詳細デバッグモード

[Figure67-06:詳細デバッグモード] 

ネット助手

ふおわっ、長ッ!!

インター博士

うむ。問い合わせと応答をすべて表示しているからな。
順番に見ていこう。まず問い合わせ。ネット君、DNSの問い合わせメッセージはどんな形だ?

ネット助手

ヘッダ部分と質問セクションですよね。こんなの。

識別(ID) [16bit]フラグ [16bit]
質問の数(QD Count) [16bit]回答の数(AN Count) [16bit]
オーソリティの数(NS Count) [16bit]追加情報の数(AR Count) [16bit]
質問 [可変長]

[Table66-01:DNSメッセージ]

インター博士

そうだ。
フラグの部分はこうだったな。

ビット数名前意味
1問い合わせ/応答QR0…問い合わせ
1…応答
4オペレーションコードOPcode0…問い合わせ
1…逆問い合わせ
2…サーバ状態要求
1オーソリティ応答AA0…反復の結果の応答
1…そのネームサーバからの応答
1切捨てTC0…データサイズ512バイト以下
1…512バイト超
1再帰要望RD0…反復問い合わせ
1…再帰問い合わせをネームサーバに要求
1再帰有効RA0…再帰不可能
1…再帰可能
3予約--すべて0
4戻りコードRcode0…応答成功
3…問い合わせの名前なし

[Table66-02:フラグ]

インター博士

これをふまえて、詳細デバックモードで表示される問い合わせ部分をみてみよう。

query

[Figure67-07:qyery]

インター博士

opcodeは「0:query」。idは「4」、rcodeは「0:応答成功」になっている。
その他の部分のフラグはこうなっている。

queryのフラグ

[Figure67-08:queryのフラグ]

ネット助手

「QR」が「query」で、「RD」が「want recursion」?

インター博士

そう、QRは「0:問い合わせ」、RDは「1:再帰問い合わせをネームサーバに要求」ということだ。
その他の部分は、こうだ。

queryその他

[Figure67-09:queryその他]

ネット助手

あ〜、なんかすごい。ホントに説明された通りの問い合わせをやってるんだ。

インター博士

何を当たり前の事を言っている。

■ DNS応答メッセージを見る

インター博士

次は応答メッセージだ。
これは長いので順番に見ていこう。まず、ヘッダ部分。

reply

[Figure67-10:reply]

インター博士

先ほどと同じだ。大体わかるだろう?

ネット助手

opcodeが「0:問い合わせ」、idが「4」、rcodeが「0:要求成功」ですね。
で、質問の数が「1」、回答の数が「1」、オーソリティの数が「2」、追加情報の数が「2」っと。

インター博士

そうなる。
フラグはこういう意味だ。

replyのフラグ

[Figure67-11:replyのフラグ]

ネット助手

えぇ〜っと、QRが「1:応答」で、RAが「1:再帰有効」ですか?

インター博士

そういうことだな。RAが「1」なので、このサーバは再帰問い合わせに対し反復問い合わせをしてくれるフルサービスリゾルバなのがわかる。

ネット助手

ということは、コンテンツサーバなら、RAが「0」になってるんですか?

インター博士

その通り。例えば最上位のルートサーバなどはコンテンツサーバだが、ここに対する問い合わせの応答のヘッダ部分を見ると。

RAフラグなし

[Figure67-12:RAフラグなし]

ネット助手

あ、「recursion avail」の文字がない。

インター博士

だろう?
それともう1つ、この応答をしたサーバは、www5e.biglobe.ne.jpが所属するドメインを管理しているサーバではないことがわかる。

ネット助手

そうなんですか?

インター博士

うむ、その問い合わせ先が所属するドメインを管理しているサーバならば、ヘッダ部分はこうなる。

オーソリティ応答

[Figure67-13:オーソリティ応答]

インター博士

AAが「1:そのネームサーバからの応答」ならば、「auth answer」の文字が入る。
先ほどのネット君の疑問点。

Non-authroitative answer

[Figure67-14:Non-authroitative answer]

インター博士

「Non-authroitative answer」だが、これはAAが「0」の時表示される文字だ。
つまり、問い合わせ先が所属するドメインを管理しているサーバからの応答ではないってことだな。

ネット助手

ということは、反復問い合わせかキャッシュによる応答って意味でしたっけ。

インター博士

そういうことだな。
さて、その下の部分だが。

リソースレコード

[Figure67-15:リソースレコード]

インター博士

このように、各セクションがわかれている。
さらに。

リソースレコード・2

[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」?

インター博士

うむうむ。その通り。
では早速やってみようか。

MXレコード問い合わせ

[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です、と。

インター博士

うむ。
詳細デバックモードを使って、この問い合わせをもう一度見てみると。

MXレコード問い合わせ・詳細デバック

[Figure67-18:MXレコード問い合わせ・詳細デバック]

インター博士

このように、ちゃんと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」コマンドで他のルートサーバを指定できる。
現在、設定しているルートサーバを知りたい場合は、こう。

set all

[Figure67-20:set all]

ネット助手

この「root=」のところが設定してあるルートサーバなんですね。

インター博士

そういうことだ。set allコマンドで調べることができるわけだな。 ▼ link
さて、実際反復問い合わせを行ってみよう。www5e.biglobe.ne.jpを問い合わせるとする。まずサーバをルートに変えて、次は?

ネット助手

www5e.biglobe.ne.jpを後ろから見るから、jp?

インター博士

そうだ。ルートサーバに「jp」を管理するネームサーバを聞かなければならない。
「set type」コマンドでNSレコード問い合わせにして、jpを聞こう。

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。

ne.jpドメイン

[Figure67-22:ne.jpドメイン]

ネット助手

博士? d.dns.jpとe.dns.jpとf.dns.jpは2つIPアドレスがありますよ?
しかも、なんか普通と違うっぽい。

インター博士

あぁ、それはIPv6アドレスだ。IPv6用のネームサーバでもある、ということだ。
ともかく、わかると思うが、この繰り返しで問い合わせを行っていくわけだ。

ネット助手

ということは、またserverコマンドでサーバを変更して。
今度は biglobe.ne.jpを問い合わせるわけですね。

biglobe.ne.jpドメイン

[Figure67-23:biglobe.ne.jpドメイン]

インター博士

うむ。
これでbiglobe.ne.jpを管理するサーバがわかったので、最後はレコードをAレコードに変えて、www5e.biglobe.ne.jpを聞けばよい。

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問い合わせを手動で実施できる。
  • 詳細デバックモードにすれば、問い合わせと応答の中身を確認できる。
  • 問い合わせるリソースレコードのタイプを変更できる。
  • 問い合わせるサーバも変更できる。

3 Minutes NetWorking No.67

管理人:aji-ssz(at)selene.is.dream.jp