Windows でのドメイン コントローラーの配置方法

この記事では、Windows ベースのドメイン内のドメイン コントローラーを見つけるために Windows によって使用されるメカニズムについて説明します。

注:

この記事は Windows 2000 に適用されます。 Windows 2000 のサポートは、2010 年 7 月 13 日に終了します。 Windows 2000 サポート終了ソリューション センターは、Windows 2000 からの移行戦略を計画するための出発点です。 詳細については、「Microsoft サポート ライフサイクル ポリシー」を参照してください。

適用対象: Windows Server 2019、Windows Server 2016、Windows Server 2012 R2
元の KB 番号: 247811

概要

この記事では、DNS スタイルの名前とそのフラット スタイル (NetBIOS) 名でドメインを検索するプロセスについて詳しくは説明します。 フラット スタイルの名前は、下位互換性のために使用されます。 それ以外の場合は、DNS スタイルの名前をポリシーの問題として使用する必要があります。 この記事では、ドメイン コントローラーの場所プロセスのトラブルシューティングについても説明します。

ロケーターがドメイン コントローラーを検出する方法

このシーケンスでは、ロケーターがドメイン コントローラーを検出する方法について説明します。

  • クライアント (ドメイン コントローラーを検索しているコンピューター) で、ロケーターはローカル Netlogon サービスへのリモート プロシージャ コール (RPC) として開始されます。 Locator DsGetDcName アプリケーション プログラミング インターフェイス (API) 呼び出しは、Netlogon サービスによって実装されます。

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

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

    • DNS 名の場合、Netlogon は IP/DNS 互換ロケーターを使用して DNS を照会します。 つまり、DsGetDcName は DnsQuery 呼び出しを呼び出して、SRV レコードを指定する適切な文字列にドメイン名を追加した後、DNS からサービス リソース (SRV) レコードと "A" レコードを読み取ります。

    • Windows ベースのドメインにログオンしているワークステーションは、一般的な形式で DNS で SRV レコードを照会します。

      _service._protocol.DnsDomainName
      

      Active Directory サーバーは、TCP プロトコル経由でライトウェイト ディレクトリ アクセス プロトコル (LDAP) サービスを提供します。 そのため、クライアントは、フォームのレコードに対して DNS を照会して LDAP サーバーを検索します。

      _ldap._tcp。DnsDomainName

  • NetBIOS 名の場合、Netlogon は Microsoft Windows NT バージョン 4.0 互換ロケーターを使用してドメイン コントローラーの検出を実行します。 つまり、WINS などのトランスポート固有のメカニズムを使用します。

    Windows NT 4.0 以前では、"検出" は、プライマリ ドメインまたは信頼されたドメインのいずれかで認証用のドメイン コントローラーを見つけるためのプロセスです。

  • Netlogon サービスは、名前を登録したコンピューターにデータグラムを送信します。 NetBIOS ドメイン名の場合、データグラムは mailslot メッセージとして実装されます。 DNS ドメイン名の場合、データグラムは LDAP ユーザー データグラム プロトコル (UDP) 検索として実装されます。 (UDP は、TCP/IP プロトコル スイートの一部であるコネクションレス データグラム トランスポート プロトコルです。TCP は、接続指向のトランスポート プロトコルです)。

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

UDP を使用すると、あるコンピューター上のプログラムが別のコンピューター上のプログラムにデータグラムを送信できます。 UDP にはプロトコル ポート番号が含まれています。これにより、送信者はリモート コンピューター上の複数の宛先 (プログラム) を区別できます。

  • 使用可能な各ドメイン コントローラーは、データグラムに応答して現在動作していることを示し、その情報を DsGetDcName に返します。
  • Netlogon サービスは、後の要求で検出プロセスを繰り返す必要がないように、ドメイン コントローラー情報をキャッシュします。 この情報をキャッシュすると、同じドメイン コントローラーの一貫性のある使用と Active Directory の一貫性のあるビューが推奨されます。

クライアントがネットワークにログオンまたは参加する場合は、ドメイン コントローラーを見つける必要があります。 クライアントは DNS ルックアップ クエリを DNS に送信して、ドメイン コントローラー (できればクライアント独自のサブネット) を検索します。 そのため、クライアントは、フォームのレコードに対して DNS を照会してドメイン コントローラーを見つけます。

_LDAP._TCP.dc._msdcs.domainname

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

クライアントが最も近い (最適な) サイトにないドメイン コントローラーと通信している場合、ドメイン コントローラーはクライアントのサイトの名前を返します。 クライアントが既にそのサイト内のドメイン コントローラーを見つけようとしている場合、クライアントは最適ではないドメイン コントローラーを使用します。 たとえば、クライアントは DNS ルックアップ クエリを DNS に送信して、クライアントのサブネット内のドメイン コントローラーを検索します。

それ以外の場合、クライアントは、新しい最適なサイト名を使用してサイト固有の DNS 参照を再度実行します。 ドメイン コントローラーは、サイトとサブネットを識別するためにディレクトリ サービス情報の一部を使用します。

クライアントがドメイン コントローラーを見つけた後、ドメイン コントローラー エントリがキャッシュされます。 ドメイン コントローラーが最適なサイトにない場合、クライアントは 15 分後にキャッシュをフラッシュし、キャッシュ エントリを破棄します。 次に、クライアントと同じサイトで最適なドメイン コントローラーを見つけようとします。

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

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

ドメイン ロケーター プロセスのトラブルシューティング

ドメイン ロケーター プロセスのトラブルシューティングを行うには:

  1. クライアントとサーバーの両方でイベント ビューアーを確認します。 イベント ログには、問題があることを示すエラー メッセージが含まれている可能性があります。 イベント ビューアーを表示するには、[スタート] を選択し、[プログラム>管理ツール] をポイントし、[イベント ビューアー] を選択します。 クライアントとサーバーの両方でシステム ログを確認します。 また、サーバー上のディレクトリ サービス ログと DNS サーバー上の DNS ログをチェックします。

  2. コマンド プロンプトで コマンドを ipconfig /all 使用して、IP 構成を確認します。

  3. Ping ユーティリティを使用して、ネットワーク接続と名前解決を確認します。 IP アドレスとサーバー名の両方に ping を実行します。 ドメイン名に ping を実行することもできます。

  4. Netdiag ツールを使用して、ネットワーク コンポーネントが正しく動作しているかどうかを判断します。 テキスト ファイルに詳細な出力を送信するには、次のコマンドを使用します。

    netdiag /v >test.txt
    ログ ファイルを確認し、問題を探し、関連するコンポーネントを調査します。 このファイルには、他のネットワーク構成の詳細も含まれています。

  5. 軽微な問題を解決するには、次の構文で Netdiag ツールを使用します。

    netdiag /fix.

  6. コマンドを nltest /dsgetdc:domainname 使用して、ドメイン コントローラーが特定のドメインに対して配置できることを確認します。

  7. このツールを NSLookup 使用して、DNS エントリが DNS に正しく登録されていることを確認します。 サーバー ホスト レコードと GUID SRV レコードを解決できることを確認します。

    たとえば、レコードの登録を確認するには、次のコマンドを使用します。
    nslookup servername. childofrootdomain. rootdomain.com
    nslookup guid._msdcs. rootdomain.com

  8. これらのコマンドのいずれかが成功しない場合は、次のいずれかの方法を使用して、DNS を使用してレコードを再登録します。

    • ホスト レコードの登録を強制するには、「ipconfig /registerdns」と入力します。
    • ドメイン コントローラー サービスの登録を強制するには、Netlogon サービスを停止して開始します。
  9. ドメイン コントローラーの問題を検出するには、コマンド プロンプトから DCdiag ユーティリティを実行します。 このユーティリティは、ドメイン コントローラーが正しく実行されていることを確認するために、多くのテストを実行します。 次のコマンドを使用して、結果をテキスト ファイルに送信します。 dcdiag /v >dcdiag.txt

  10. Ldp.exe ツールを使用して、ドメイン コントローラーに接続してバインドし、適切な LDAP 接続を確認します。

  11. 特定のドメイン コントローラーに問題があると思われる場合は、Netlogon デバッグ ログを有効にすると便利な場合があります。 NLTest ユーティリティを使用するには、次のコマンドを入力します。 nltest /dbflag:0x2000ffff その後、情報は、Netlogon.log ファイルの [デバッグ] フォルダーに記録されます。

  12. それでも問題が解決しない場合は、ネットワーク モニターを使用して、クライアントとドメイン コントローラーの間のネットワーク トラフィックを監視します。

関連情報

詳細については、Windows リソース キット、第 10 章「Active Directory 診断、トラブルシューティング、および回復」を参照してください。