■ 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問い合わせを行う。
[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アドレスの設定画面で設定する。
[Figure66-03:DNS設定画面] ▼
あ〜。これも前出てきた奴ですね。
この、優先DNSサーバと代替DNSサーバってなんです?
簡単に言うと、優先DNSは最初に使うネームサーバ。代替DNSはそのバックアップのネームサーバのことだ。
代替DNSサーバはこの画面では1つだけだが、複数設定可能だ。右下の「詳細設定」をクリックすると…。
[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サーバは優先が使えなかった場合のバックアップ。
- リゾルバが行うのが再帰問い合わせ。
- ネームサーバに問い合わせ、ネームサーバが調べた結果を受け取る。
- ネームサーバが行うのが反復問い合わせ。
- 自身が知らないドメイン名はそれを管理しているネームサーバ(コンテンツサーバ)を探し、教えてもらう。