3 Minutes NetWorking
No.65

3Minutes NetWorking

第65回DNS(4) DNSの動作

■ DNSリゾルバ

インター博士

ネット君、DNSがどういう情報をもっているかを前回説明したわけだな。

ネット助手

リソースレコードでしたよね。

インター博士

うむ、その通り。
前にも話したが、DNSは問い合わせて、リソースレコードを受け取る、という形になる。

[Figure63-05:リソースレコード]

インター博士

この形だな。
DNSは基本的にはUDPを使用する。サーバのポート番号は53番だ。

ネット助手

なんでしたっけ?
え〜っと、信頼性がなくてもいいからUDPでしたっけ?

インター博士

なくてもいいわけではないが、効率を優先したからUDPだな。
ともかく、この動作を説明しよう。まず、なんらかのアプリケーションでサーバとの通信が必要になった。

ネット助手

ん〜っと、例えばどんな感じです?

インター博士

例えば、ネット君がブラウザで「Roads to Node」を見ようと思った。

ネット助手

あ、そういうことですか。
はい、思いました。

インター博士

ブラウザに「http://www5e.biglobe.ne.jp/~aji/」と入力する。
結果、「www5e.biglobe.ne.jp」のIPアドレスが必要となる。

ネット助手

なりますね。

インター博士

ここで、ブラウザはDNSリゾルバにIPアドレスを問い合わせる。

ネット助手

りぞるば?
それはどんなサーバなんです?

インター博士

あぁ、違う違う。ソフトウェアだ。ホストが持つDNS問い合わせ用のソフトウェアのことだ。これを使ってホストはDNS問い合わせを行う。

DNSリゾルバ

[Figure66-01:DNSリゾルバ]

ネット助手

ははぁ。つまりドメイン名のIPアドレスを知りたいアプリケーションは、DNSリゾルバってソフトを使ってIPアドレスを知ろうとするってことですね。

インター博士

そうだ。
次にリゾルバはキャッシュされたリソースレコードを確認する。

ネット助手

きゃっしゅ?
現金

インター博士

違う違う。そっちは「cash」。こっちは「cache」だ。
大体、現金化されたリソースレコードってどんなだ?

ネット助手

248円ぐらいですかね。

インター博士

…なんで248円なんだ?

ネット助手

なんとなく。

インター博士

…………。前々から思っていたが、ネット君の思考回路は一体どうなっているのかね?
ともかくだ。キャッシュとは、一時的に保存したデータのことだ。この場合、前に同じ問い合わせがあったらそれを覚えているってことだな。

ネット助手

ははぁ。以前聞いたことを覚えてるってことですね。

インター博士

そういうことだ。ちなみに現在ホストが持っているDNSキャッシュを調べることもできる。Windows2000/XPならばコマンドプロンプトで以下のコマンドだ。

  • c:\> ipconfig /displaydns
ネット助手

はわ〜。なんかすごく一杯出てきたんですけど。
こんなに一杯覚えているもんなんですか?

インター博士

再起動したら消える。また、表示の中にTTLがあるだろう?
これはキャッシュの保持時間なのでこれがゼロになっても消えるし、手動でも消せる。

  • c:\> ipconfig /flushdns
ネット助手

ipconfigって前もでてきましたよね。

インター博士

ipconfig /allでホストのIPアドレスとMACアドレスを調べるって話で出てきたな。

ネット助手

はわ〜、こんな使いかたもあるんですねぇ。

■ 優先と代替

インター博士

さて、キャッシュがなかった場合、ネームサーバに問い合わせを行うわけだな。

ネームサーバ問い合わせ

[Figure66-02:ネームサーバ問い合わせ]

ネット助手

ようやっとネームサーバが登場するんですね。
ちなみに、どのネームサーバに問い合わせに行くんですか?

インター博士

それは設定次第だな。Windowsなら、IPアドレスの設定画面で設定する。

DNS設定画面

[Figure66-03:DNS設定画面] 

ネット助手

あ〜。これも前出てきた奴ですね。
この、優先DNSサーバ代替DNSサーバってなんです?

インター博士

簡単に言うと、優先DNSは最初に使うネームサーバ。代替DNSはそのバックアップのネームサーバのことだ。
代替DNSサーバはこの画面では1つだけだが、複数設定可能だ。右下の「詳細設定」をクリックすると…。

DNSサーバの複数設定

[Figure66-04:DNSサーバの複数設定]

インター博士

ここで2つ以上のネームサーバを設定できる。
ただし、一番上が優先DNSサーバ、それ以外は代替DNSサーバ、という役割になる。

ネット助手

代替DNSはバックアップ…。
ってことは、優先DNSサーバが使えない場合に使うってことですよね。

インター博士

そういうことだな。動作的にはこうなる

[Figure66-05:DNSサーバの優先と代替]

ネット助手

へぇ。じゃあもし、代替DNSも含めて誰も応答してくれなかったらどうなるんです?

インター博士

それはちょっと寂しいな。
その場合、2秒後にもう1回、それでも駄目なら4秒後に全DNSサーバに問い合わせを行う。

ネット助手

なんか、友達が少ない奴が、必死にメール打ってるみたいな感じですね。

インター博士

それは何か? 自分のことかね? ネット君
そして8秒後、どのDNSサーバも応答してくれなかったら、そのDNS問い合わせは失敗、ということになる。

ネット助手

え〜っと。まず最初に優先DNSに問い合わせして、1秒後再送、2秒後全DNSに再送、2秒後再送、4秒後再送、8秒後にあきらめるってことですね。

インター博士

そうなる。17秒後に誰からも返答がなければ、問い合わせ失敗、ということだな。

問い合わせフロー

[Figure66-06:問い合わせフロー]

■ 問い合わせ方式

インター博士

さて、実際のDNSの問い合わせだが、2種類の問い合わせ方式が存在する。
再帰問い合わせ反復問い合わせだ。

ネット助手

再帰? 反復?
りかーしぶ?いたれいてぃぶ?

インター博士

まぁ、それを説明しよう。まず再帰問い合わせだ。
これはクライアントからネームサーバへの問い合わせで使われる。この方式だ。

[Figure66-07:再帰問い合わせ]

ネット助手

ネームサーバに問い合わせをして、ネームサーバが知っていたら教えてもらう。
知らなかったらネームサーバが調べて、それを教えてくれる?

インター博士

そういうことだ。リゾルバはネームサーバに完全な回答を問い合わせる形だな。
知らなかったら、調べてこい、と。

ネット助手

なんか、他力本願な問い合わせですねぇ。

インター博士

いや、これはこれで正しいのだ。クライアント1台1台が自分で調べに行くと、非常に手間もかかるし、帯域も使用する。
だが、ネームサーバが調べてくれるなら、クライアントの負荷はかからないし、キャッシュもするから問い合わせ回数が減って帯域を消費しなくて済む。

ネット助手

「ネームサーバにおまかせ」モードなわけですね。
で、そのネームサーバが行う反復問い合わせってのはどんなのです?

インター博士

先ほども言ったように、ネームサーバは自身のゾーンかキャッシュしか知らないわけだ。

ネット助手

でした。

インター博士

なので、他のゾーンのドメイン名を聞かれた場合は他のネームサーバに問い合わせる必要がある。
この方式が反復問い合わせだ。こうなる。

[Figure66-08:反復問い合わせ] 

インター博士

つまり、ドメイン名前空間を上から順にたどっていくことにより、目的のIPアドレスを調べるわけだな。

ネット助手

根からたどっていけば、インターネット上のすべてのホストを検索可能、でしたっけ。

インター博士

そういうことだ。

ネット助手

リゾルバは再帰問い合わせでネームサーバに聞く。
ネームサーバは反復問い合わせで他のネームサーバに聞く、ですね。

■ ネームサーバ

インター博士

いままで単純にネームサーバといってきたが、実は役割が複数ある。

ネット助手

問い合わせに答えるだけではないんですか?

インター博士

もちろんそれはそうなのだが、その「問い合わせに答える」といっても種類がある。
「リゾルバからの問い合わせに答える」と「ネームサーバからの問い合わせに答える」の2種類だ。

ネット助手

あ〜、そういわれればそうですね。

インター博士

つまり、問い合わせに対し反復問い合わせを行うネームサーバと、自身の管理ゾーンの応答のみ行うネームサーバ、だな。

ネット助手

そういう区分けになりますね。

インター博士

前者をフルサービスリゾルバ、後者をコンテンツサーバと言う。

ネット助手

ふるさーびすりぞるば、こんてんつさーば。
あれ? でもリゾルバってクライアントの、あれ?

インター博士

うむ。クライアントのリゾルバと間違えやすいので、クライアントのリゾルバをスタブリゾルバということもある。
ちょっとまとめてみよう。

コンテンツサーバフルサービスリゾルバからの反復問い合わせに対し、自身が管理するゾーンの応答のみを行う。管理外は「知らない」と応答を返す。反復問い合わせを行わない。
ルートサーバや、インターネットで公開してるネームサーバがこれ。
フルサービスリゾルバスタブリゾルバからの再帰問い合わせに対し反復問い合わせを行い、IPアドレスを調べるサーバ。
プロバイダのネームサーバや、LAN内のネームサーバがあてはまる。
スタブリゾルバフルサービスリゾルバに再帰問い合わせを行うリゾルバ。単に「リゾルバ」と言った場合これ。
クライアントが持つ。
スレーブサーバ自分で再帰問い合わせを行わず、フォワーダへ問い合わせをするサーバ。
フォワーダスレーブの問い合わせに対して、他ネームサーバへ問い合わせを行うサーバ。

[Table95-01:DNSサーバ&クライアント]

ネット助手

えっと、今までの説明のネームサーバってのはフルサービスリゾルバってことですね。

インター博士

そういうことだ。スタブリゾルバからの要求に従って調べてくれるからな。
フルサービスリゾルバは、教えてもらったリソースレコードをキャッシュして、問い合わせの効率化を行うことから、キャッシュサーバとも呼ばれる。

ネット助手

きゃっしゅさーば。
なるほど。

インター博士

単に「リゾルバ」といったらスタブリゾルバのこと。
単に「ネームサーバ」といったら、フルサービスリゾルバとコンテンツサーバを両方含む。なので注意が必要だ。

ネット助手

ははぁ。で、最後のスレーブフォワーダってのは?

インター博士

一般に販売されているブロードバンドルータなどは、DHCPで自分をDNSサーバとしてクライアントに配布していることが多い。
この時、いちいちブロードバンドルータが反復問い合わせを行うのは非常に手間がかかる。なので、フォワーダに問い合わせてもらう

ネット助手

問い合わせてもらう?

インター博士

そう。自分では反復問い合わせを行わず、フォワーダに問い合わせる形だな。

[Figure66-09:フォワーダとスレーブ]

ネット助手

帯域を消費しないって言えばそうですけど、なんでこんなことするんです?
っていうか、このスレーブサーバ、役に立ってないじゃないですか。直接フォワーダに問い合わせればいいのに。

インター博士

そうだな。確かに再帰問い合わせを行う、という点ではそうなのだが。
例えば、ネットワーク内部のドメイン名などは、このスレーブサーバが行うわけだ。これはわざわざ外部に問い合わせる必要のないことだろう?

ネット助手

それはそうですね。

インター博士

さらに、中継役のスレーブはキャッシュも行う。よく使用されるドメイン名は、キャッシュされるので、問い合わせを行わない。
帯域を消費せず、さらに効率のよいやりかたなのだよ。

ネット助手

あ〜、なるほど。

インター博士

家庭用のルータや、内部ネットワークと外部ネットワークという形にわけているネットワークなどでは有効なやり方なわけだ。

ネット助手

内部のドメイン名は内部に、外部のドメイン名は外部にって区別するわけですね。

インター博士

そういうことだ。
では今回はこれで終わり。また次回にしよう。

ネット助手

はい。
3分間ネットワーキングでした〜♪

UDPを使用する
転送容量が512バイトを超える場合はTCPを使います。ポート番号は同じ53番。
詳しくは後述。
DNSリゾルバ
[DNS Resolver]
Windows2000/XP
Windows98/Me系には表示する方法はありません。また98、Me、NTのリゾルバもキャッシュしますが、各アプリケーションごとのキャッシュのため、例えばFTPで問い合わせた時のキャッシュはHTTPで使えない、ということもある。
画像
Windows2000Proの画面です。Windows2000/XPならば、
スタート→コントロールパネル→ネットワークとダイアルアップ接続→ローカルエリア接続のプロパティ→インターネットプロトコル(TCP/IP)のプロパティ。
キャッシュ
[cache]
再帰問い合わせ
[Recursive Query]
反復問い合わせ
[Iterative Query]
フルサービスリゾルバ
[Full-Service Resolver]
コンテンツサーバ
[Contents Server]
スタブリゾルバ
[Stub Resolver]
フォワーダ
[Fowerder]
スレーブ
[Slave Server]
ここでは、スレーブサーバは「反復問い合わせを行わず、フォワーダに転送する」サーバの事を指します。UNIXでメジャーなDNSアプリケーションBINDでは、セカンダリネームサーバの事を「スレーブ」と言いますが、別です。
TTL
それぞれのリソースレコードのTTLの値のこと。
実際の表示はそのTTLから保持している時間を引いた値になる。
反復問い合わせ
実際の場合は、ccTLDのネームサーバと、SLDのネームサーバは兼務しているので、ccTLDに問い合わせた時点で、TLDのネームサーバが判明する。
図の例でいくと、jpのネームサーバに問い合わせを行った時点で、biglobe.ne.jpのネームサーバが判明する。(ne.jpの問い合わせは行われない)
動作的にはこうなる
これはWindowsのDNSリゾルバの動作です。
ネット助手ネット君の今日のポイント
  • DNSの問い合わせを行うクライアントのソフトをリゾルバ(スタブリゾルバ)という。
  • リゾルバが問い合わせに行くネームサーバ(フルサービスリゾルバ)には優先と代替がある。
    • 最初に問い合わせに行くのは優先DNSサーバ。
    • 代替DNSサーバは優先が使えなかった場合のバックアップ。
  • リゾルバが行うのが再帰問い合わせ。
    • ネームサーバに問い合わせ、ネームサーバが調べた結果を受け取る。
  • ネームサーバが行うのが反復問い合わせ。
    • 自身が知らないドメイン名はそれを管理しているネームサーバ(コンテンツサーバ)を探し、教えてもらう。

3 Minutes NetWorking No.65

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