web-dev-qa-db-ja.com

Active Directoryネットワーク内のクライアントシステムは、それが存在するサイトをどのようにして見つけますか?

Windows管理を始めるためのプレゼンテーションをまとめているときに、すぐに尋ねていないことに驚いたのです。

そんなこと知ってる:

  • ADはサイトで論理的に設定され、複製を支援し、クライアントコンピューターとドメインサービス間のドメインに必要な通信の待ち時間を短縮します。
  • サイトは、それらに適用されるサブネットによって定義されます
  • _msdcsサブドメインには、一般的な検索(_tcp)およびサイト固有の検索(_sites)のSRVレコードの階層が含まれています
  • コンピューターはどういうわけか、自分がどのサイトにいるかを知っていますか、それともドメインコントローラーがDNSの魔法の中で透過的に決定するのでしょうか...

このブログ投稿 ADネットワーク内のクライアントコンピューターは、メンバーであるサイトを「知る」ことができるというヒント。私の質問は、これが事実である場合、どうやってそれを見つけるのですか?

クライアント自体が知らない場合、DCは、そのクライアントコンピューターに最も近いADサービスを選択するプロセスでマシンをどのように支援しますか?

21
Peter Grace

その答えは、クライアントが初めてActive Directoryに認証されるとき、どのサイトにいるかがわからないということです。

最初にドメインに参加するとき、クライアントは一般的なDNSおよびLDAPクエリを実行し、ドメイン内のすべてのドメインコントローラーのリストを取得し、リストを下に移動してLDAPバインドを試み、最初の成功したDCそれはバインドします-それは認証する最初のDCです。

クライアントがドメインに参加した後、Active Directoryはクライアントが所属するサイトをクライアントに通知します。管理者がクライアントのIPサブネットをADサイトとサービスに配置し、それをサイトに関連付けたため、Active Directoryはこれを認識します。

Active DirectoryはクライアントにそのADサイトとは何かを伝え、クライアントはそれをHKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\DynamicSiteNameレジストリ値の独自のレジストリに格納します。これにより、次回クライアントが起動したときに、クライアントはサイト固有のDNSクエリを認識して、そのサイトにあるDCのみを取得します。

もちろん 完全な動作はKB247811に記載されています ですが、自分で確認したい場合は、WiresharkまたはNetMonを実行してパケットトレースを実行し、トレースの実行中にドメインに参加できます。 DNSクエリとLDAPバインドの正確なシーケンスが表示されます。後続のDNSクエリとLDAPバインドは、サイト固有のサブゾーンに対して行われます。これは、クライアントが所属するサイトがADによってクライアントに通知されているためです。

Netlogonサービスは定期的にADサイト情報を更新するため、別のネットワークに移動すると、クライアントは新しいサイトを自動的に取得します。これは、HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\SiteNameTimeoutレジストリ値で調整できます。 ( リンク

29
Ryan Ries

実際には、いくつかの相互に関連する関数/ 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に渡します。NetLogonは、クライアントの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

8
Greg Askew