DNS クライアントがプログラムで使用されている名前を参照する必要があるときは、名前を解決するために DNS サーバーを照会します。クライアントが送信する各クエリ メッセージには、サーバーが応答する質問を示す 3 つの情報が含まれています。
Windows DNS サーバーでは、この項目を必ずインターネット (IN) クラスに指定してください。
たとえば、"host-a.example.microsoft.com." など、コンピュータの FQDN を名前として指定し、その名前を持つアドレス (A) リソース レコードを検索するクエリをクエリのタイプとして指定することができます。DNS クエリは、「host-a.example.microsoft.com. という名前のコンピュータの A リソース レコードを持っていますか」などのように 2 つの部分から構成される、クライアントからサーバーへの質問と見なすことができます。クライアントは、サーバーから応答を受信すると、返された A リソース レコードを読んで解釈し、名前を指定して要求したコンピュータの IP アドレスを取得します。
DNS クエリは、さまざまな方法で解決されます。前回のクエリで取得し、キャッシュした情報を利用して、クライアントがローカルでクエリに応答できることもあります。DNS サーバーは、リソース レコード情報の自分自身のキャッシュを利用して、クエリに応答することができます。DNS サーバーが要求元クライアントに代わって、ほかの DNS サーバーを照会したり、ほかの DNS サーバーと通信して名前を完全に解決し、応答をクライアントに送り返すこともあります。この処理は、再帰と呼ばれます。
さらに、クライアント自身がほかの DNS サーバーと通信して、名前を解決することもできます。クライアントがこの処理を行うときは、サーバーからの紹介応答に基づいて別の追加のクエリを使用します。この処理は、反復と呼ばれます。
一般的に、DNS クエリの処理は 2 つの部分に分かれます。
ここでは、これらの両方の処理の詳細を説明します。
次の図は、完全な DNS クエリ処理の概要を示しています。
クエリ処理の初期の段階に示されているように、ローカル コンピュータのプログラムで DNS ドメイン名が使用されます。次に、ローカルにキャッシュされた情報を利用して解決するために、要求が DNS クライアント サービスに渡されます。照会された名前が解決できた場合は、クエリに応答が返され、処理が完了します。
ローカル リゾルバ キャッシュには、2 つの情報源から取得された名前情報が含まれている可能性があります。
クエリがキャッシュ内のエントリと一致しない場合は、解決の処理を続行し、クライアントは名前を解決するために DNS サーバーを照会します。
上の図に示すように、クライアントは優先 DNS サーバーを照会します。処理の初期のクライアント/サーバー クエリ部分で使用される実際のサーバーは、グローバル リストの中から選択されます。Windows 2000 がこのグローバル リストをコンパイルし、更新するしくみの詳細については、「クライアントの機能」を参照してください。
DNS サーバーは、クエリを受信すると、まず、サーバー上にローカルで構成されているゾーンに含まれているリソース レコード情報に基づいて、権威を持ってクエリに応答できるかどうかを確認します。照会された名前がローカル ゾーン情報内の対応するリソース レコードと一致する場合、サーバーは権威を持って応答し、その情報を利用して、照会された名前を解決します。
照会された名前に相当するゾーン情報が存在しない場合、サーバーは、次に、前のクエリからローカルでキャッシュされた情報を利用して名前を解決できるかどうかを確認します。この段階で一致する情報があれば、サーバーはその情報を使って応答します。この場合も、優先サーバーが、自分のキャッシュから得た、クエリと一致する肯定応答を要求元クライアントに返すことができれば、クエリは完了します。
照会された名前に一致する応答が優先サーバーのキャッシュ情報またはゾーン情報から得られない場合は、クエリの処理を続行し、再帰を利用して完全に名前を解決することができます。この処理で名前を解決するには、ほかの DNS サーバーからの助力が必要です。既定の設定により、DNS クライアント サービスは、サーバーに対して、応答を返す前に、再帰処理を利用してクライアントに代わって完全に名前を解決するように要求します。次の図に示すように、ほとんどの場合、DNS サーバーは、既定の設定により、再帰処理をサポートするように構成されています。
DNS サーバーが適切に再帰を実行するには、まず、DNS ドメイン名前空間内のほかの DNS サーバーに関するなんらかの有用な連絡情報が必要です。この情報は、ルート ヒントの形式で提供されます。ルート ヒントは、DNS サービスが DNS ドメイン名前空間ツリーのルートに対して権威を持つほかの DNS サーバーを検索するときに使用できる予備的なリソース レコードのリストです。ルート サーバーは、DNS ドメイン名前空間ツリーのドメイン ルートおよび最上位レベルのドメインに対して権威を持っています。詳細については、「ルート ヒントを更新する」を参照してください。
ルート ヒントを使ってルート サーバーを検索することにより、DNS サーバーは、再帰の使用を完了できます。理論上は、いずれの DNS サーバーも、この処理を利用して、名前空間ツリー上の任意のレベルで使用されているほかの任意の DNS ドメイン名に対して権威を持つサーバーを検索できます。
ここで、クライアントが 1 つの DNS サーバーを照会する状況で、再帰処理を利用して "host-b.example.microsoft.com." という名前を検索する例を考えてみます。この処理は、DNS サーバーと DNS クライアントが初めて起動した直後で、名前クエリの解決に利用できるローカルでキャッシュされた情報がない状況で発生するものとします。クライアントが照会している名前は、構成されているサーバーのゾーンに基づいて、サーバーがローカルで知ることができないドメイン名であるものと想定します。
まず、優先サーバーはフル ネームを解析し、最上位レベル ドメインの "com" に対して権威を持つサーバーの場所が必要であると判断します。次に、優先サーバーは、"com" DNS サーバーに対する反復クエリを使用して、"microsoft.com" サーバーへの紹介を取得します。次に、"microsoft.com" サーバーから "example.microsoft.com" の DNS サーバーに対する紹介応答が返されます。
最後に、"example.microsoft.com." との通信が成立します。このサーバー上の構成されているゾーンには、照会された名前が含まれているため、このサーバーは、再帰を開始した元のサーバーに対して、権威を持って応答します。元のサーバーは、要求されているクエリに対する権威付き応答が取得されたことを示す応答を受信すると、その応答を要求元クライアントに送り返し、再帰クエリ処理は完了します。
再帰クエリ処理は、上記の方法で実行すると大量のリソースを消費しますが、DNS サーバーにパフォーマンスの利点をいくつかもたらします。たとえば、再帰参照を実行している DNS サーバーは、再帰処理の最中に、DNS ドメイン名前空間に関する情報を取得します。サーバーはこの情報をキャッシュして再利用することにより、この情報を使用または照合する今後のクエリに対する応答の速度を速くすることができます。時間の経過と共に、このキャッシュされた情報が増大し、サーバーのメモリ リソースの相当な部分を占有することがありますが、DNS サービスをオン、オフするたびに、この情報は消去されます。
上で説明した DNS クエリでは、クライアントに肯定応答が返されることによって処理が終了するものと想定されています。しかし、クエリにほかの応答が返されることもあります。次に最も一般的な応答を示します。
権威付き応答とは、クライアントに返される肯定応答であり、照会された名前に対して直接の権威を持つサーバーから応答が取得されたことを示すために DNS メッセージ内の権威ビットがセットされた状態で配布されるものです。
肯定応答は、照会された DNS ドメイン名およびクエリ メッセージで指定されているレコードの種類と一致する、照会された RR または RR のリスト (RRset とも呼ばれる) から構成されます。
紹介応答には、クエリの名前または種類によって指定されていない追加のリソース レコードが含まれます。再帰処理がサポートされていない場合は、この種の応答がクライアントに返されます。レコードは、クライアントが反復を利用してクエリを継続するときに使用できる有用な参照応答として機能します。
紹介応答には、照会された種類と異なるリソース レコードなどの追加のデータが含まれています。たとえば、照会されたホスト名が "www" で、この名前に対応する A RR がこのゾーンで見つからず、その代わりに "www" の CNAME RR が見つかった場合、DNS サーバーは、クライアントへの応答にその情報を含めることができます。
反復を使用できる場合、クライアントは、紹介情報を利用して追加のクエリを実行し、自分自身の名前の完全な解決を試みることができます。詳細については、「反復が機能するしくみ」を参照してください。
サーバーからの否定応答は、サーバーがクエリを処理し、完全に、かつ権威を持って、再帰的に解決しようとしたときに、次の 2 つの結果のいずれかが生じたことを示します。
リゾルバは、クエリの結果を肯定応答または否定応答の形式で要求元プログラムに渡し、応答をキャッシュします。
注
DNS クライアントの名前解決先がイントラネット上に存在する DNS サーバーなど、特定の DNS サーバーに限られている場合は、通常、DNS サーバー上で再帰の使用を無効にします。DNS サーバーが外部の DNS 名を解決することができず、クライアントがこれらの名前の解決を別の DNS サーバーにフェールオーバーすることを求められている場合にも、再帰を無効にすることがあります。
Windows 2000 Server では、該当するサーバーの DNS コンソールの [詳細プロパティ] で構成することにより、必要に応じて DNS サーバーの再帰の使用を無効にすることができます。詳細については、「DNS サーバーで再帰を無効にするには」を参照してください。
ほとんどの状況では、これらのパラメータを調整する必要はありません。ただし、低速 WAN リンクを経由して再帰参照を使用している場合は、設定を少し調整することによって、サーバーのパフォーマンスを向上させ、クエリの進行を速めることができることがあります。詳細については、「詳細なサーバー パラメータを調整する」を参照してください。
反復とは、次の条件が満たされているときに DNS クライアントと DNS サーバーの間で使用される名前解決の種類です。
クライアントからの反復要求は、DNS サーバーがほかの DNS サーバーと通信せずに直ちにクライアントに提供できる最適な応答をクライアントが求めていることを DNS サーバーに伝えます。
反復が使用されると、DNS サーバーは、照会されている名前データに関してサーバー自身が持っている名前空間に関する固有の知識に基づいて、クライアントに応答します。たとえば、イントラネット上の DNS サーバーが、ローカルのクライアントから "www.microsoft.com" に対するクエリを受け取ると、DNS サーバーは自分の名前キャッシュから応答を返すことがあります。照会された名前が現在、サーバーの名前キャッシュに格納されていない場合、サーバーは、紹介を提供することによって応答することがあります。紹介とは、クライアントが照会した名前により近いほかの DNS サーバーの NS リソース レコードおよび A リソース レコードのリストです。
紹介が行われると、DNS クライアントは、名前を解決するために、構成されているほかの DNS サーバーに対する反復クエリの実行を継続する責任を負います。たとえば、最も複雑な状況では、DNS クライアントが、"com" ドメインに対して権威を持つ DNS サーバーを見つけるために、検索の範囲をインターネット上のルート ドメイン サーバーにまで拡大することがあります。クライアントは、インターネット ルート サーバーと通信すると、これらの DNS サーバーから "microsoft.com" ドメインに対応する実際のインターネット DNS サーバーを指し示す追加の反復応答を受け取ることができます。クライアントは、これらの DNS サーバーのレコードを受け取ると、決定的な権威付き応答を返すことができるインターネット上の外部の DNS サーバーに別の反復クエリを送信できます。
反復が使用された場合、DNS サーバーは、自分自身の最適な応答をクライアントに返すだけでなく、名前クエリの解決をさらに手助けすることができます。クライアントのプライマリ DNS サーバーがクエリを解決できない場合、ほとんどの反復クエリでは、クライアントが、クライアントのローカルで構成された DNS サーバーのリストを使って、DNS 名前空間全体にわたる名前サーバーと通信します。
DNS サーバーは、再帰または反復を利用してクライアントのクエリを処理する際に、DNS 名前空間に関する大量の情報を発見し、取得します。この情報は、サーバーによってキャッシュされます。
キャッシュは、照会される頻度が高い名前に対する 2 回目以降のクエリの DNS 解決のパフォーマンスを向上させ、ネットワーク上の DNS に関連するクエリのトラフィックを大幅に削減します。
DNS はクライアントの代わりに再帰クエリを実行する際に、リソース レコード (RR) を一時的にキャッシュします。キャッシュされた RR には、検索を実行し、クライアントの代理として実行される再帰クエリに完全に応答するために反復クエリを実行している間に知った DNS ドメイン名に対して権威を持つ DNS サーバーから取得された情報が含まれています。後で、ほかのクライアントが、キャッシュされた RR と一致する RR 情報を要求する新しいクエリを発行したとき、DNS サーバーは、キャッシュされた RR 情報を利用して、クライアントに応答できます。
情報がキャッシュされると、すべてのキャッシュされた RR に対して TTL (Time-to- Live) 値が適用されます。キャッシュされた RR の TTL の期限が切れない限り、DNS サーバーは、RR をキャッシュし続け、その RR と一致するクライアントからのクエリに応答するときに、その RR を再利用することができます。ほとんどのゾーン構成で RR によって使用されるキャッシュ TTL 値には、ゾーンの SOA (Start of Authority) リソース レコードで設定され、使用される [最小 (既定) TTL] が適用されます。最小 TTL は、既定の設定では 3,600 秒 (1 時間) ですが、調整可能であり、個々のキャッシュ TTL は、必要に応じて、各 RR で設定できます。
注