実際には、相互に関連するいくつかの機能/ APIがあります。長いものの、実際にはActive Directoryの興味深い読み物です。
以下の説明に関係なく、次の2つの点に注意する必要があります。
ローカルサイトのDCが何らかの理由で応答しない場合、クライアントはドメイン内のドメインコントローラーに接続することが予想されます。これは正常な動作であり、常にデフォルトの動作です。なぜそれが発生しているのか明らかでない場合があります。
それは次善の策です。次のシナリオを考えてみましょう。3つのサイト:ニューヨーク市(ハブ/データセンター-高速)、ロサンゼルス(NYCに話しました-高速)、カザフスタン(NYCに話しました-間違いなく高速)。LAサイトのクライアントが何らかの理由でローカルDCに接続できない場合、カザフスタンで認証されることは考えられません。
いくつかの解決策があります。どちらかまたは両方を行うことができます。
Microsoftは、TryNextClosestSiteという適切な名前のグループポリシー/レジストリ設定を作成しました。つまり、LAクライアントは、DCを探して惑星をローミングする前にNYCを試す必要があります。ブリリアント!8年かかりましたが、ついにVista / 2008でそれを実現しました。既定では有効になっていませんが、これを有効にするにはGPOを作成する必要があります。
そのDCが他のサイトのクライアントにサービスを提供することを本当に望まないスポークサイトの場合、登録しないDNSレコードを指定するグループポリシー/レジストリ設定を作成できます。これはDNSニーモニックと呼ばれます。
最も近いサイトでドメインコントローラーを見つける(DsGetSiteName API)
http://technet.microsoft.com/en-us/library/cc978016.aspx
IPアドレスからサイト名へのマッピング
「Net Logonの起動中、各ドメインコントローラーのNet Logonサービスは、構成コンテナー内のサイトオブジェクトを列挙します。各ドメインコントローラーのNet Logonは、サイトオブジェクトに加えられた変更も通知されます。NetLogonは、 IPアドレスをサイト名にマップするために使用されるメモリ内構造。
「ドメインコントローラーを検索しているクライアントがDNSからドメインコントローラーのIPアドレスのリストを受け取ると、クライアントはドメインコントローラーのクエリを開始し、使用可能なドメインコントローラーを見つけます。ActiveDirectoryはクエリをインターセプトします。クライアントのIPアドレス、およびドメインコントローラー上のNet Logonに渡すNet Logonは、クライアントIPアドレスに最も近いサブネットオブジェクトを見つけることにより、サブネットからサイトへのマッピングテーブルでクライアントIPアドレスを検索し、次の情報を返します。
クライアントが配置されているサイトの名前、またはクライアントのIPアドレスに最も近いサイトの名前。
現在のドメインコントローラーが配置されているサイトの名前。
見つかったドメインコントローラーがクライアントに最も近いサイトに配置されている(ビットが設定されている)か、配置されていない(ビットが設定されていない)かを示すビット。
「ドメインコントローラーはクライアントに情報を返します。応答には、ドメインコントローラーを説明する他のさまざまな情報も含まれます。クライアントは情報を調べて、より良いドメインコントローラーを見つけるかどうかを判断します。
「返されたドメインコントローラーが最も近いサイトにある場合(返されたビットが設定されている場合)、クライアントはこのドメインコントローラーを使用します。
「クライアントは、ドメインコントローラーがクライアントの位置を主張しているサイトで既にドメインコントローラーを見つけようとした場合、クライアントはこのドメインコントローラーを使用します。
「ドメインコントローラーが最も近いサイトにない場合、クライアントはサイト情報を更新し、サイトで新しいドメインコントローラーを見つけるために新しいDNSクエリを送信します。2番目のクエリが成功すると、新しいドメインコントローラーが使用されます。 2番目のクエリが失敗すると、元のドメインコントローラーが使用されます。
「コンピューターによって照会されているドメインが、コンピューターが参加しているドメインと同じである場合、コンピューターが存在するサイト(ドメインコントローラーによって報告される)はコンピューターレジストリに格納されます。クライアントはこれを格納しますHKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Netlogon \ ParametersのDynamicSiteNameレジストリエントリのサイト名。したがって、DsGetSiteName APIは、コンピューターが配置されているサイトを返します。
DsGetDcName関数
http://msdn.microsoft.com/en-us/library/ms675983%28VS.85%29.aspx
ロケーターの種類
http://technet.microsoft.com/en-us/library/cc978019.aspx
ディレクトリサービス関数
http://technet.microsoft.com/en-us/subscriptions/ms675900%28v=vs.85%29.aspx
Active DirectoryのDNSサポートの仕組み
http://technet.microsoft.com/en-us/library/cc759550%28v=ws.10%29.aspx
クライアントのサイト外にあるドメインコントローラーの場所を最適化する方法
http://support.microsoft.com/kb/306602