次の方法で共有


Windows および Windows Server でドメイン コントローラーを検索する

ドメイン コントローラーの場所 (DC ロケーターとも呼ばれます) は、クライアント コンピューターが適切なドメイン コントローラーを検索するために使用するアルゴリズムのことを指します。 ドメイン コントローラーの場所は、Active Directory でのクライアント認証を許可するすべてのエンタープライズ環境で重要な機能です。

この記事では、検出、最も近いサイト検出、NetBIOS ドメイン名マッピングの構成など、ドメイン コントローラー ロケーター プロセスについて説明します。

ドメイン コントローラー ロケーター プロセス

ドメイン コントローラー ロケーター (ロケーター) アルゴリズムは、次の 2 つの部分で構成されます。

  • ロケーターは、登録されているドメイン コントローラーを検索します。

  • ロケーターは、指定されたドメイン内のドメイン コントローラーを見つけるためのクエリを送信します。

その後、LDAP User Datagram Protocol (UDP) 検索が応答に一覧表示されている 1 つ以上のドメイン コントローラーに送信され、可用性が確保されます。 最後に、Netlogon サービスは、検出されたドメイン コントローラーをキャッシュして、今後の要求の解決に役立てます。

検出プロセス

Active Directory ドメインには、常に完全修飾 DNS ドメイン名 (FQDN) と NetBIOS ドメイン名の 2 つの異なる名前があります。 NetBIOS ドメイン名には、従来の長さの制約とその他の制約があります。 たとえば、NetBIOS ドメインは 15 文字に制限されています。

Active Directory ドメインの NetBIOS ドメイン名は、Active Directory ドメインの FQDN と同じである必要はありません。 たとえば、Active Directory ドメインの FQDN は、fabrikam の NetBIOS ドメイン名を持つ contoso.com である可能性があります。

Windows の DC の場所は、次の 2 つの基本モードで動作できます。

  • DNSベースの検出 は、DNS を使用したドメイン コントローラーのアドバタイズに基づいています。

    ドメイン コントローラーは、キー配布センターやグローバル カタログなどの主要な機能を表すレコードや、Active Directory サイト レコードなどのローカリティを記述するレコードなど、さまざまな SRV レコードを DNS に登録します。 クライアントは DNS に適切な SRV レコードのクエリを実行し、UDP ベースの LDAP ping を使用してそのサーバーに ping を実行します。

    このモードは、DNS ドメイン名を使用していて、ドメイン コントローラーが Windows 2000 以降を実行している場合にのみサポートされます。 サポートされているドメイン コントローラーは、このモードでより最適に実行されますが、特定のシナリオでは他のモードに変更される場合があります。

  • NetBIOS ベースの検出には、Windows Internet Name Service (WINS) のレコードを登録するドメイン コントローラーが含まれます。 クライアントは、適切なレコードについて WINS を照会し、その後、ターゲット候補となる可能性のある DC に ping を送信します。 このモードのバリアントは、クライアントがローカル ネットワーク上でパケットをブロードキャストして DC を探す mailslot messages でサポートされているブロードキャスト メカニズムを使用します。

重要

アプリケーションで DC が要求されるものの、短い NetBIOS スタイルのドメイン名が指定される場合、DC の場所は常にその短いドメイン名を DNS ドメイン名にマッピングしようとします。 DC の場所がドメイン名を正常にマッピングできる場合は、マッピングされた DNS ドメイン名で DNS ベースの検出を使用します。

NetBIOS スタイルのドメイン名は、次の順序で複数のソースからの DNS ドメイン名にマッピングされます。

  1. 前回の検索でキャッシュされた情報

  2. 現在のフォレスト内のすべてのドメイン

  3. すべての信頼するフォレストの信頼と外部信頼の最上位レベル名 (TLN)

  4. For Windows Server 2025 以降:

    1. 管理者が構成したドメイン名マッピング

    2. 信頼するフォレストの信頼でのすべてのフォレストと子ドメインのドメイン名のマッピング

  5. クライアント コンピューターのサインイン セッション

これらのソースのどちらも DNS ドメイン名を検出できない場合、DC の場所は、元の NetBIOS スタイルの短いドメイン名を使用して、NetBIOS ベースの検出を続行できます。

Windows Server 2025以降、Netlogon は、すべての信頼するフォレスト内のドメインと子ドメインに関する名前付け情報をダウンロードしてキャッシュします。 この情報は、NetBIOS 形式のドメイン名を DNS ドメイン名にマッピングする場合に使用されます。

NetBIOS ベースの検出ではなく、DNS ベースの検出を使用することをお勧めします。 DNS ベースの検出は、より信頼性が高く、安全です。 DsGetDcName は、プライマリ DC Location API です。

重要

Windows Server 2025 以降、DC ロケーターでは NetBIOS スタイルの場所を使用できません。 この動作を構成する方法については、「NetBIOS 検出ポリシー設定」セクションを参照してください。

検出プロセスについて学習するには、学習する方法に対応するタブを選択します。

ロケーターが従うプロセスは、次のように要約できます。

  1. クライアント (ドメイン コントローラーを特定しているコンピューター) では、ロケーターはローカル Netlogon サービスへのリモート プロシージャ呼び出し (RPC) として開始されます。 Netlogon サービスは、Locator API (DsGetDcName) を実装します。

  2. クライアントは、ドメイン コントローラーを選択するために必要な情報を収集し、DsGetDcName API を使用して Netlogon サービスに情報を渡します。

  3. クライアント上の Netlogon サービスは、収集された情報を使用して、指定されたドメインのドメイン コントローラーを検索します。 検索プロセスでは、次の 2 つの方法のいずれかを使用します。

  4. Netlogon は、IP/DNS 互換ロケーターを使用して DNS をクエリします。 DsGetDcName は、DnsQuery 呼び出しを呼び出して、Service Resource (SRV) レコードを指定する適切な文字列にドメイン名を追加した後、SRV レコードと A レコードを DNS から読み取ります。

    • ワークステーションは、Windows ベースのドメインにサインインすると、_<service>._<protocol>.<DnsDomainName> 形式で SRV レコードの DNS をクエリします。 次の形式を使用してドメインの LDAP サーバーの DNS をクエリするクライアント 。ここでの、DnsDomainName はドメイン名です。

      _ldap._tcp.DnsDomainName

  5. Netlogon サービスは、名前を登録する検出されたドメイン コントローラーに LDAP UDP 検索としてデータグラムを送信します。

  6. 使用可能な各ドメイン コントローラーは、データグラムに応答して現在動作していることを示し、その情報を DsGetDcName に返します。

  7. Netlogon サービスは、最初に応答するドメイン コントローラーからクライアントに情報を返します。

  8. Netlogon サービスは、後続の要求に対して検出プロセスを繰り返す必要がないように、ドメイン コントローラー情報をキャッシュします。 この情報をキャッシュすると、同じドメイン コントローラーの一貫した使用が促進されるため、Active Directory の一貫性のあるビューが得られます。

NetBIOS 検出ポリシー設定

Windows Server 2025 以降、DC ロケーターでは NetBIOS ベースの検出を使用しません。 BlockNetBIOSDiscovery は、管理者がこの動作を制御できるようにする Netlogon サービスの新しいグループ ポリシー設定です。 グループ ポリシー管理エディターでポリシーにアクセスするには、[コンピューター構成]>[管理用テンプレート]>[システム]>[ネット ログオン]>[DC ロケーター DNS レコード]>[ドメイン コントローラーの場所の NetBIOS ベースの検出のブロック] の順に移動します。

次の設定が BlockNetBIOSDiscovery に適用されます。

  • TRUE (既定値): DC ロケーターでは NetBIOS スタイルの DC の場所の使用が許可されません。
  • FALSE: DC ロケータでは、すべてのレガシ制約で許可されている場合、WINS またはメールスロット ベースの検出を使用できます。

BlockNetBIOSDiscovery 設定を使用して、DC の場所に対して既定でセキュリティ保護される体制を適用します。 TRUE に設定しておくことをお勧めします。 他の軽減策を実行している間の一時的な期間にのみ無効にしてください。

新しいポリシー設定は、次のように表示されます。

既定が有効になっている BlockNetBIOSDiscovery グループ ポリシー設定のスクリーンショット。

ヒント

SMB EnableMailslots ポリシー設定を使用して、マシン全体でメールスロットを使用する機能を個別に有効または無効にすることができます。 DC ロケーターで DC 検出にメールスロットを使用できるようにするには、SMB レベルでメールスロットを有効にし、BlockNetBIOSDiscovery を無効にする必要があります。 Get-SmbClientConfiguration および Set-SmbClientConfiguration PowerShell コマンドレットを使用することで、EnableMailslots 設定をクエリして設定できます。

一番近い Active Directory サイト

クライアントはドメイン コントローラーを見つけた後、LDAP を使用して通信を確立して Active Directory にアクセスします。 そのネゴシエーションの一環として、ドメイン コントローラーは、クライアントの IP サブネットに基づいて、クライアントが存在するサイトを特定します。

クライアントが最も近い最適なサイトにないドメイン コントローラーと通信している場合、ドメイン コントローラーはクライアントのサイトの名前を返します。 クライアントがそのサイトでドメイン コントローラーを既に見つけようとしている場合、クライアントは最適でないサイトでドメイン コントローラーを使用します。 たとえば、クライアントは DNS 検索クエリを DNS に送信して、クライアントのサブネット内のドメイン コントローラーを検索します。 それ以外の場合、クライアントは、新しい最適なサイト名を使用してサイト固有の DNS 検索を再度実行します。 ドメイン コントローラーは、サイトとサブネットを識別するためにディレクトリ サービス情報の一部を使用します。

クライアントはドメイン コントローラー エントリをキャッシュします。 ドメイン コントローラーが最適なサイトにない場合、クライアントは 15 分後にキャッシュをフラッシュし、キャッシュ エントリを破棄します。 次に、クライアントと同じサイトで最適なドメイン コントローラーの検索を試行します。

クライアントは、ドメイン コントローラーへの通信パスを確立した後、ログオンと認証資格情報を確立できます。 必要に応じて、クライアントは Windows ベースのコンピューター用にセキュリティで保護されたチャネルを設定することもできます。 これで、クライアントは通常のクエリを実行し、ディレクトリに対する情報を検索する準備ができます。

クライアントは、サインインするドメイン コントローラーへの LDAP 接続を確立します。 サインイン プロセスでは、Security Accounts Manager を使用します。 通信パスは LDAP インターフェイスを使用し、ドメイン コントローラーはクライアントを認証します。 その後、クライアント アカウントが検証され、Security Accounts Manager を介してディレクトリ サービス エージェントに渡され、次にデータベース レイヤーに渡され、最後に拡張可能なストレージ エンジン (ESE) 内のデータベースに渡されます。

NetBIOS ドメイン名マッピングの構成

Windows Server 2025 以降、フォレスト管理者は DNS ドメイン名から NetBIOS ドメイン名へのカスタム マッピングを構成できます。 フォレスト レベルでの管理者構成のマッピングは、他のすべてのオプションが不十分な場合にのみ使用する必要があるオプションのメカニズムです。 たとえば、アプリケーションまたは環境で、他のソースが自動的に提供できない他のドメイン名マッピングが必要な場合が挙げられます。

カスタム ドメイン名のマッピングは、Active Directory 設定の名前付けコンテキストにある serviceConnectionPoint オブジェクトに保存されます。 たとえば、次のように入力します。

CN=DCLocatorDomainNameMappings,CN=Windows NT,CN=Services,CN=Configuration,DC=contoso,DC=com

この serviceConnectionPoint オブジェクトの msDS-Setting 属性には 1 つ以上の値を含めることができます。 各値には、DNS ドメイン名と NetBIOS ドメイン名が含まれ、dnsdomainname.com:NetBIOSdomainname のようにセミコロンで区切られます。

次に例を示します。

  • contoso.com:fabrikam
  • tatertots.contoso.com:tots
  • tailspintoys.com:tailspintoys

これらのマッピングは、次の手順に従って、Active Directory ドメインと信頼の管理設定で構成できます。

  1. ドメインを右クリックします。
  2. [プロパティ] を選択します。
  3. [DC ロケーター マッピング] タブを選択します。

その後、クライアント上の Netlogon サービスは、12 時間ごとにカスタム マッピングをダウンロードして DCLocatorDomainNameMappings オブジェクトにキャッシュします。 NetBIOS スタイルのドメイン名を DNS ドメイン名にマッピングするときに、このサービスではこの情報が自動的に使用されます。

新しいActive Directory ドメインと信頼関係管理ページは次のように表示されます。

[Active Directory ドメインと信頼] スナップインの [DC ロケーター ドメイン名マッピング] ページのスクリーンショット。

重要

管理者が構成したフォレスト レベルのドメイン名マッピングは、他のすべての名前マッピング ソースが不十分であることが確実な場合にのみ構成してください。 一般的なルールとして、このような任意のマッピングは、クライアントとターゲット ドメインの間に信頼関係が存在せず、クライアント アプリケーションが DNS スタイルのドメイン名の指定に移行できない場合のみ必要になります。