Microsoft DNS は、 Microsoft Windowsオペレーティング システムで提供されるドメイン ネーム システムサービスの実装に付けられた名前です。
概要
Microsoft Windows NTおよびその派生製品であるWindows 2000、Windows XP、Windows Server 2003のドメイン ネーム システム サポートは、2 つのクライアントと 1 つのサーバーで構成されています。すべての Microsoft Windows マシンには、通常の DNS ルックアップを実行する DNS ルックアップ クライアントがあります。一部のマシンには、マシンの名前とIP アドレスを登録する動的 DNS 更新トランザクションを実行する動的 DNSクライアントがあります。一部のマシンは DNS サーバーを実行し、DNS データを発行し、DNS ルックアップ クライアントからの DNS ルックアップ要求に応答し、DNS 更新クライアントからの DNS 更新要求に応答します。
サーバー ソフトウェアは、Windows のサーバー バージョンにのみ付属します。
DNSルックアップクライアント
アプリケーションはDLLを利用して DNS ルックアップを実行します。アプリケーションは DLL 内のライブラリ関数を呼び出し、その関数が DNS サーバーとのすべての通信 ( UDPまたはTCP経由) を処理し、ルックアップの最終結果をアプリケーションに返します。
Microsoft の DNS クライアントには、 DNS クライアントサービス ( DNSCACHEとも呼ばれます)の形式で、ローカル キャッシュのオプション サポートもあります。ライブラリ ルーチンは、DNS サーバーと直接通信する前に、まずマシン上の DNS クライアント サービスへのローカル IPC接続を試みます。接続が存在し、接続が確立できる場合は、ルックアップを処理する実際の作業を DNS クライアント サービスに引き渡します。DNS クライアント サービス自体は DNS サーバーと通信し、受信した結果を キャッシュします。
Microsoft の DNS クライアントは、複数の DNS サーバーと通信できます。正確なアルゴリズムは、オペレーティング システムのバージョンとサービス パックのレベルによって異なりますが、一般的には、優先 DNS サーバーが応答しなくなるまですべての通信は優先DNS サーバーと行われ、応答がなくなると、複数の代替DNS サーバーのいずれかに通信が切り替わります。
DNSクライアントサービスの実行による影響
DNS クライアント サービスが開始されているかどうかに応じて、システムの動作にいくつかの小さな違いがあります。
- 「hosts」ファイルの解析: ルックアップ関数は、タスクを DNS クライアント サービスにオフロードできず、DNS サーバー自体との通信にフォールバックする必要がある場合、 hosts ファイルのみを読み取ります。次に、DNS クライアント サービスは起動時に「hosts」ファイルを 1 回読み取り、最後に読み取ったときからファイルの最終変更タイムスタンプが変更されたことに気付いた場合にのみ、再度読み取ります。つまり、次のようになります。
- DNS クライアント サービスが実行中の場合: 「hosts」ファイルは、サービスの起動時に 1 回、その後は DNS クライアント サービスがファイルが変更されたことを認識するたびに、数回のみ読み取られて解析されます。
- さらに、DNSクライアントサービスを「大きな」HOSTSファイルと組み合わせて実行すると、停止するまで実行中のCPU/コアに100%の負荷がかかる可能性があります。[1]
- DNS クライアント サービスが実行されていない場合: DNS ルックアップを実行する各アプリケーション プログラムによって、「hosts」ファイルが繰り返し読み取られ、解析されます。
- DNS クライアント サービスが実行中の場合: 「hosts」ファイルは、サービスの起動時に 1 回、その後は DNS クライアント サービスがファイルが変更されたことを認識するたびに、数回のみ読み取られて解析されます。
- 「hosts」ファイル内の複数の回答の影響: DNS クライアント サービスは、ルックアップを実行するときに「hosts」ファイルを直接使用しません。代わりに、(最初に) キャッシュにそのファイルを入力し、次にキャッシュ内のデータを使用してルックアップを実行します。ただし、ルックアップ関数が作業自体に戻ると、「hosts」ファイルを直接かつ順番にスキャンし、最初の回答が見つかった時点で停止します。つまり、次のようになります。
- DNS クライアント サービスが実行されている場合: 「hosts」ファイルに、特定の検索に対する複数の回答を示す複数の行が含まれている場合、キャッシュ内のすべての回答が返されます。
- DNS クライアント サービスが実行されていない場合: 「hosts」ファイルに、特定の検索に対する複数の回答を示す複数の行が含まれている場合、最初に見つかった回答のみが返されます。
- 優先 DNS サーバーから代替 DNS サーバーへのフォールバック: 優先 DNS サーバーから代替 DNS サーバーへのフォールバックは、DNS クライアント サービスまたはライブラリ関数自体など、実際にそれらのサーバーとの通信を実行しているエンティティによって実行されます。つまり、
- DNS クライアント サービスが実行中の場合: 代替 DNS サーバーへのフォールバックがグローバルに発生します。優先 DNS サーバーが応答しない場合、その後のすべての通信は代替 DNS サーバーと行われます。
- DNS クライアント サービスが実行されていない場合: 代替 DNS サーバーへのフォールバックは、DNS クエリを実行している各プロセス内でローカルに発生します。プロセスによって状態が異なり、一部は優先 DNS サーバーと通信し、一部は代替 DNS サーバーと通信する場合があります。
他のシステムとの違い
Linux ディストリビューションおよびUnixのさまざまなバージョンには、汎用の名前リゾルバ レイヤーがあります。名前サービス スイッチを構成することで、リゾルバを制御して、 hostsファイルまたはネットワーク情報サービス(NIS)を使用できます。
ダイナミック DNS 更新クライアント
DNS ルックアップは DNS データを読み取りますが、DNS 更新はデータを書き込みます。Windows を実行しているワークステーションとサーバーは両方とも、DNS サーバーに動的 DNS更新要求を送信しようとします。
Windows を実行しているワークステーションは、他のマシンが名前でワークステーションを見つけられるように、その名前とIP アドレスをDNS サーバーに登録しようとします。Windows Vista (および Windows Server 2008) より前では、この登録はDHCP クライアント サービスによって実行されます。したがって、マシンの構成にDHCPが使用されていない場合でも、DNS 参照用にマシンの名前とアドレスを動的に登録するために、Vista より前のマシンで DHCP クライアント サービスを実行する必要があります。DHCP クライアント サービスは、名前とアドレスのデータが変更されるたびに (管理者が手動で変更するか、DHCP リースの許可または取り消しによって自動的に変更するかに関係なく)、そのデータを登録します。Windows Vista (および Windows Server 2008) では、Microsoft は登録機能を DHCPクライアントサービスからDNS クライアントサービスに移動しました。
Microsoft Windows を実行するサーバーは、名前と IP アドレスに加えて、提供しているLDAP サービスやKerberosサービスの場所など、他の情報も登録しようとします。
DNSサーバー
Microsoft Windows Server オペレーティング システムでは、DNS サーバーサービスを実行できます。これは、キャッシュ、動的 DNS 更新、ゾーン転送、DNS 通知など、さまざまな種類の DNS サービスを提供するモノリシックDNS サーバーです。DNS 通知は、ゾーンが更新されたときに、 そのゾーンのセカンダリ サーバーの選択セットに通知するためのプッシュ メカニズムを実装します。
Microsoft の「DNS サーバー」サービスは、Windows NT 3.51 で Microsoft のBackOfficeサービスコレクションのアドオンとして初めて導入されましたが、当時はテスト目的のみで使用するよう指定されていました。DNSワイルドカードのサポートが欠如しており、 IPv6実装が異なっていたため、 BIND構成ファイルとの互換性がないことで有名になりました。導入以来、Microsoft はゾーン ファイル形式、ゾーン転送、その他の DNS プロトコルの詳細に関して、BIND およびその他の実装との相互運用性を向上させるよう努めてきました。
2004年時点では、DNSデータの公開において4番目に人気のあるDNSサーバーでした(BINDバージョン9をバージョン8とバージョン4とは別にカウント)。[2]
他のさまざまな DNS サーバーと同様に、Microsoft の DNS サーバーはさまざまなデータベースバックエンドをサポートしています。Microsoft の DNS サーバーは、2 つのバックエンドをサポートしています。DNS データは、マスター ファイル(ゾーン ファイルとも呼ばれます) またはActive Directoryデータベース自体に保存できます。後者の場合、Active Directory (DNS サーバーではなく) が複数のマシン間でのデータベースの実際のレプリケーションを処理するため、データベースはどのサーバーでも変更できます (「マルチマスター レプリケーション」)。また、ゾーンの追加または削除は、適切な Active Directory の「レプリケーション スコープ」内にある他のすべての DNS サーバーに直ちに反映されます (BIND とは対照的です。BIND では、このような変更を行うと、/etc/named.confファイル内のゾーンのリストが各サーバーで明示的に更新される必要があります)。
Microsoft の DNS サーバーは、グラフィカル ユーザー インターフェイス(「DNS 管理コンソール」) またはコマンド ライン インターフェイス(dnscmdユーティリティ)を使用して管理できます。Windows Server 2012の新機能として、DNS サーバー管理用のフル機能のPowerShellプロバイダーがあります。[3]
よくある問題
Windows Server 2003およびMicrosoft Windows 2000 Service Pack 3より前では、MicrosoftのDNSサーバーで最もよく発生していた問題はキャッシュ汚染でした。MicrosoftのDNSサーバーにはキャッシュ汚染を適切に処理するメカニズムがありましたが、このメカニズムはデフォルトでオフになっていました。[4]
2004年によく見られた問題は、MicrosoftのDNSサーバーのWindows Server 2003バージョンがEDNS0を使用する機能に関連しており、多くのファイアウォールがこれに対処できなかった。[5]
参照
参考文献
- ^ 「大きな HOSTS ファイルを持つ DNS クライアントによる CPU 使用率の高さに関する Google の結果」。Google。
- ^ Moore, Don (2004). 「DNS サーバー調査」. 2005 年 1 月 6 日閲覧。
- ^ 「ドメイン ネーム システム (DNS) サーバー コマンドレット」。TechNet。Microsoft。2013年 1 月 17 日。2013 年 5 月17日時点のオリジナルよりアーカイブ。
- ^ 「DNS キャッシュ汚染を防ぐ方法」。サポート。Microsoft。2008年 3 月 15 日。2017 年7 月 10日閲覧。
- ^ 「外部 DNS クエリにより、Windows Server 2003 でエラー メッセージが表示される場合があります」。サポート。Microsoft。2006年4月 20 日。2006 年 9 月 27 日時点のオリジナルよりアーカイブ。2017 年7 月 10 日閲覧。
外部リンク
- de Boyne Pollard、Jonathan (2004)。「ファイアウォールにより、EDNS0 を使用できません。」よくある質問。— EDNS0 とファイアウォールの問題とその解決方法
- Windows Vista におけるドメイン ネーム システム クライアントの動作
- Windows Server 2008 の DNS の新機能
- Windows Server 2008 R2 の DNS の新機能
