【AD基礎】ADデータベースの複製の仕組みの基礎知識

  • 2022年12月19日
  • AD DS

Active Directory ドメイン サービスでは、組織内のユーザーやリソースなどのデータをドメイン コントローラーで管理しています。ドメインには複数のドメイン コントローラーを構築することができ、全てのドメイン コントローラーで同じデータを保持している必要があります。

そのため、ドメイン コントローラー間でAD データベース内のデータを複製し、全てのドメイン コントローラーが同じデータを保持しています。全てのドメイン コントローラーがデータの変更を受け付けることができる「マルチマスター レプリケーション」の仕組みで複製しています。

今回は、AD データベースの複製の仕組みについて、基本的な仕組みについて紹介します。

 

AD データベースの複製

ドメイン コントローラーでは、ユーザーやグループ、コンピューター アカウントなど、ドメインの管理に必要な各種オブジェクトの情報を AD データベースで管理しています。ドメイン内では複数のドメイン コントローラーを構築することができ、ドメイン コントローラー間でデータを複製して、全てのドメイン コントローラーの AD データベースで同じデータを保持しています。

ドメイン コントローラーでは AD データベースの複製に、「マルチマスター レプリケーション」で行われます。マルチマスター レプリケーションとは、どのドメイン コントローラーでもデータを更新できる仕組みのことです。

全てのドメイン コントローラーにて、AD データベースのデータを更新することができ、ドメイン コントローラー同士で更新されたデータを複製しあっています。データの複製は、同一サイト内のドメイン コントローラー同士の複製と、サイト間の複製には複製の仕組みが異なっています。そのため、サイト内の複製とサイト間の複製の仕組みついて、それぞれ概要を紹介します。

 

サイト内の複製

同一のサイト内のドメイン コントローラーの複製には、通常複製と緊急複製があります。

通常複製

サイト内でのドメイン コントローラーの AD データベースの複製が行われるタイミングは以下の通りです。

  • データの変更が行われた後、15 秒後に変更通知
  • 60 分間隔の定期的な複製

特定のドメイン コントローラーで、ユーザーの新規作成や変更、削除などのデータの更新が行われた場合、更新の 15 秒後に、最も近いレプリケーション パートナーのドメイン コントローラーへ変更通知を送信します。同一サイト内に他にもレプリケーション パートナーのドメイン コントローラーが存在する場合は、最初に変更通知を行った3秒後に変更通知を送信します。

サイト内の複製では、AD データベース内のデータが更新される度に複製が行われます(更新の 15 秒後に変更通知を送信)。レプリケーション パートナーとなるドメイン コントローラーは、変更通知を受け取ると、通知の送信元のドメイン コントローラーへ変更された差分のデータを要求します(=Pull 複製)。

また、データの更新とは別に、定期的に 60 分間隔で複製が行われるようにスケジュールされています。この定期的な複製処理については、[Active Directory サイトとサービス] の管理コンソールにて変更可能です。自動生成された接続オブジェクトのプロパティ画面にて、[スケジュールの変更] をクリックすると、定期的な複製のスケジュールを変更できます。

 

緊急複製

緊急複製とは、通常複製の仕組みにおけるデータ変更の際の変更通知の 15 秒の遅延がなく、「特定の更新」 が発生した場合に即時に変更通知を送信することです。緊急複製の対象となる「特定の更新」は以下の通りです。

  • アカウント ロックアウトの発生
  • アカウント ロックアウト ポリシーの変更
  • ドメイン パスワード ポリシーの変更
  • 信頼関係など LSA により保持されるセキュア データの更新
  • ドメイン コントローラーのコンピューター アカウントの変更
  • RID マスターの役割の変更

緊急複製が行わる対象の範囲は、データの変更が行われたドメイン コントローラーが所属する同一サイト内になります。サイト間の複製については、通常のサイト間の複製の仕組みによって行われます。

緊急複製は、Windows 2000 Server の時に実装された Active Directory ドメイン サービスでの複製は、変更通知は 5 分後に送信されるという実装となっていたため、緊急に複製する必要があるデータを対象に即時複製する動作が用意されていました。しかしながら、Windows Server 2003 以降からは、データ変更時における変更通知は 15 秒後となったため、緊急複製の仕組みに大きな意味はなくなっています。

 

サイト間の複製

サイト間の複製は、データの変更の都度の更新ではなく、定期的な間隔で1度にまとめて複製を行います。

サイト間複製の仕組み

同一サイト内のドメイン コントローラーは物理的に近い距離に配置されているため高速通信が可能であり、データの変更の度に即時に複製しても問題ありません。一方、サイト間の通信であれば、ドメイン コントローラー同士が物理的に距離が離れている可能性があるため、頻繁に複製処理を行わない動作となります。

サイト間の複製は、既定の設定では3時間に1回の頻度で複製が行われ、次回の複製までに発生した変更箇所をまとめて複製します。また、サイト間の複製では、複製データを圧縮して送信されるため、帯域の節約となります。

サイト間での複製は、既定では3時間に1回ですが、複製間隔はサイト リンクのプロパティ画面より変更可能です。最短で 15 分間に1回という頻度での複製間隔を指定できます。

また、サイト間の複製の頻度とは別に、データの複製を行える時間帯を定義することができます。例えば、夜の1時から5時まではサイト間は複製しないという複製スケジュールを設定することができます。サイト間の複製のスケジュールは、サイトリンクのプロパティ画面の [全般] タブの [スケジュールの変更] より設定することができます。


※青の部分が複製が行われる時間帯で、白の部分が複製が行われない時間帯です。

 

サイト リンク オプション

サイト間の複製では、変更通知は送信されず、データは圧縮されて複製が行われる動作が既定の動作となります。サイト間の複製の動作はサイト リンクのオプションで指定することができます。サイト リンク オプションは、サイトリンクのオブジェクトの options 属性で指定することができます。

options 属性にはオプションに割り当てられた数値を設定値として割り当てます。

0x1 USE_NOTIFY 変更通知を有効にします
0x2 TWOWAY_SYNC 双方向の複製を有効にします。
0x4 DISABLE_COMPRESSION 複製データの圧縮を無効にします

オプションの属性値については、有効とするオプションを全て合計した値をoptions 属性に設定します。

0x1(USE_NOTIFY)+0x4(DISABLE_COMPRESSION)=0x5(USE_NOTIFY|DISABLE_COMPRESSION)

options 属性にて 0x5 を有効にすると、サイト間の複製にて変更通知を行い、複製データの圧縮が無効になります。サイト内の複製と同様の動作になります。

 

サイト リンク ブリッジ

サイト リンクを作成するこることを忘れていたり、停電や障害によりサイトごと利用できなくなった場合に、サイトが孤立して、サイト間の複製できなくなる状況になることが考えられます。サイト リンク ブリッジとは、孤立するサイトがでないように複製トポロジをー再計算して、接続オブジェクトを自動生成する機能のことです。

既定では、全てのサイトがサイト リンク ブリッジの対象となっています。

サイト リンク ブリッジの機能で自動生成された接続オブジェクトは、サイト リンクが復旧した後に自動的に削除されます。

もし、特定のサイトで障害が発生した時に、優先して繋げたいサイト同士がある場合は、[Active Directory サイトとサービス] の管理ツールで手動で接続オブジェクトを作成すれば、複製トポロジーを調整できます。

 

ブリッジヘッド サーバー

サイト間の複製は、サイト内にある1台のドメイン コントローラーのみが行っています。ブリッジ ヘッド サーバーとは、サイト間の複製を担当するドメイン コントローラーのことです。既定の設定では、サイト内のいずれか1台のドメイン コントローラーが自動的にブリッジヘッド サーバーとして選定されます。

サイト間の通信の場合、物理的に距離が離れた拠点ごとに配置されている端末間の通信であるため、通信経路にファイアウォールが配置されている可能性もあります。セキュリティの要件として、特定のドメイン コントローラーの間との通信しか許可していないこともあります。

ドメイン コントローラー「優先ブリッジヘッド サーバー」の設定を行うと、そのドメイン コントローラーをブリッジヘッド サーバーとして動作し、サイト間の複製を行います。優先ブリッジヘッド サーバーの設定は、[Active Directory サイトとサービス] にて、優先ブリッジヘッド サーバーにするドメイン コントローラーのプロパティ画面にて、[このサーバーが優先ブリッジヘッドサーバーとなるトランスポート] のボックスに [IP] を追加します。

優先ブリッジヘッド サーバーの設定をしているドメイン コントローラーが、停電や障害で利用不可となると、サイト間の複製が正常に行われなくなるためご留意ください。

各サイトのブリッジヘッドサーバーのドメイン コントローラーは、以下のコマンドで確認することができます。

repadmin /bridgeheads

 

ISTG

ISTG(Inter Site Topology Generator)とは、サイト内のブリッジヘッド サーバーを自動的を選出し、サイト間の複製に使用される接続オブジェクトを作成する役割のことです。

サイト内の1台のドメイン コントローラーの KCC の機能が、ISTG の役割の処理を行います。サイト内に最初に追加されたドメイン コントローラーが ISTG の役割を割り当てられます。

ISTG の役割をもつドメイン コントローラーの情報は、構成パーティションのサイトの NTDS Site Settings オブジェクトのinterSiteTopologyGenerator 属性に登録されています。以下のコマンドを実行すると、現在の ISTG のサーバーを確認できます。

repadmin /istg

 

知識整合性チェッカー(KCC)

知識整合性チェッカー(KCC: Knowledge Consistency Checker)とは、構成パーティションにあるサイトとサービスの情報から、適切な複製トポロジーを計算して接続オブジェクトを生成する機能です。KCC は lsass.exe で処理されています。

接続オブジェクトとは、ドメイン コントローラー同士の接続を定義するオブジェクトのことです。接続オブジェクトで結ばれたドメイン コントローラーのことを、レプリケーション パートナー(複製パートナー)と呼びます。AD データベースの複製は、レプリケーション パートナーのドメイン コントローラーとしか複製は行われません。

KCC は、各ドメイン コントローラーの稼働状況や、手動で作成した接続オブジェクトなども踏まえて、適切な複製トポロジーを計算します。ドメイン内にある各ドメイン コントローラーの KCC で、それぞれ複製トポロジーを算出します。複製トポロジーの計算の結果、各ドメイン コントローラーの KCC は自身の入力方向の接続オブジェクトの作成しか行いません。ただし、全てのドメイン コントローラーの KCC で算出される複製トポロジーは必ず同じ結果になるため、各ドメイン コントローラーが自身の入力方向の接続オブジェクトしか作成しなくても、計算通りの複製トポロジーが構成される結果となります。

KCC は既定で 15 分間隔で、複製トポロジーのチェック・再計算を行っています。各ドメイン コントローラーの稼働状態やネットワーク環境に問題があった場合でも、各ドメイン コントローラーの KCC は接続オブジェクトの複製状態を監視し、レプリケーション パートナーと複製に失敗している状態が続いていれば、適切な複製トポロジーが再計算して、新たな接続オブジェクトが作成されます。

KCC の複製トポロジーのチェック間隔は、以下のレジストリで変更できます。既定値は 900(秒)です。

キー : HKLM¥SYSTEM¥CurrentControlSetServices¥NTDS¥Parameters
値の名前: Repl topology update period
型:REG_DWORD
既定値 : 900

KCC により自動生成された接続オブジェクトは、[Active Directory サイトとサービス] より確認できます。

ドメイン コントローラー上で以下のコマンドを実行すると、手動で強制的に複製トポロジーのチェック・再計算を行わせることができます。

repadmin /kcc
 
また、サイト間の複製はサイト内でブリッジヘッド サーバーとして選出されたドメイン コントローラー同士で行います。ブリッジヘッドサーバーの選出とサイト間の複製に使用される接続オブジェクトの生成は、ISTG の役割を担うドメイン コントローラーの  KCC が行います。
サイト間の複製においても複製状態に問題がある場合、ブリッジヘッドサーバーの再選出や接続オブジェクトの再作成を行う必要があります。ISTG において、ブリッジヘッドサーバーの再選出や接続オブジェクトの再作成が行われるのは、以下の2つの条件を満たした場合です。
■条件1
レジストリ値 IntersiteFailuresAllowed で設定された回数よりも多くの回数、複製に失敗していること
キー: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NTDS\Parameters
値の名前: IntersiteFailuresAllowed
値の種類: REG_DWORD
既定値: 1 (単位:回)
※ IntersiteFailuresAllowed で設定できる最小値は0です。
 
■条件2
最後に複製が成功してからレジストリ値 MaxFailureTimeForIntersiteLink (sec) 秒以上複製に失敗していること
キー: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NTDS\Parameters
値の名前: MaxFailureTimeForIntersiteLink (sec)
値の種類: REG_DWORD
既定値: 7200 (単位:秒)
※ MaxFailureTimeForIntersiteLink で設定できる最小値は0です。

 

特別なデータ複製

緊急複製の仕組みとは別に、アカウントのパスワードの更新とロックアウトの解除については特別なデータ複製の仕組みが用意されています。

アカウントのパスワード変更は、PDC エミュレーターの役割をもつドメイン コントローラーに即時複製されます。そのため、PDC エミュレーターの役割をもつドメイン コントローラーは、常に全てのアカウントの最新のパスワードを管理しています。この仕組みにより、ドメイン コントローラー間の複製遅延によって最新のパスワードを管理していないことが原因で、パスワード間違いによりアカウントの認証に失敗する問題は発生しません。

また、アカウントのパスワード変更以外にも、badPwdCount 属性の値のリセットなども、PDC エミュレーターに即時複製されます。PDC エミュレーターへの即時反映の仕組みについては、以下の記事の PDC エミュレーターの役割に関する説明にて詳細を紹介しています。

あわせて読みたい!

Active Directory ドメイン サービスを利用すると、システム管理者が各端末やユーザーを一元的に管理することができます。管理を担っているのがドメイン コントローラーというサーバーとなりますが、その中でも特別な役割をもったドメイン[…]