16.11. 同期更新の送信
同期は、
winSyncInterval
(Active Directory ドメインから変更内容を取得する場合) またはnsds5replicaupdateschedule
設定 (Directory Server から変更内容をプッシュする場合) で設定された頻度で行われます。デフォルトでは、変更は 5 分ごとに Active Directory から取得され、Directory Server からの変更がすぐに送信されます。
同期の更新は手動でトリガーできます。また、完全な再同期を行うことも可能で、Directory Server と Active Directory のすべてのエントリーを、あたかも新しいもののように送信したり、引き出したりすることができます。完全な再同期には、以前同期されていない既存の Directory Server エントリーが含まれます。
16.11.1. 手動増分同期の実行
通常の運用では、Directory Server のエントリーに行われた更新のうち、Active Directory に送信する必要のあるものはすべて changelog に集められ、増分更新の際に再生されます。
変更を手動で同期するには、以下を実行します。
# dsconf -D "cn=Directory Manager" ldap://server.example.com repl-winsync-agmt poke --suffix="dc=example,dc=com" example-agreement
16.11.2. 完全同期の実行
データに大きな変更があった場合や、既存の Directory Server エントリーに同期属性を追加する場合は、再同期 を開始する必要があります。再同期は合計更新であり、同期されたサブツリーのコンテンツ全体が検証され、必要に応じて更新されます。再同期は changelog を使用せずに行われます。これは、レプリケーションのコンシューマーの初期化または再初期化に似ています。
16.11.2.1. コマンドラインを使用した完全同期の実行
コマンドラインで完全同期を開始するには、以下を実行します。
# dsconf -D "cn=Directory Manager" ldap://server.example.com repl-winsync-agmt init --suffix="suffix" agreement_name
同期の状態を表示するには、以下を実行します。
# dsconf -D "cn=Directory Manager" ldap://server.example.com repl-winsync-agmt init-status --suffix="suffix" agreement_name
16.11.2.2. Web コンソールを使用した完全同期の実行
完全同期を開始するには、以下を実行します。
- Web コンソールで Directory Server ユーザーインターフェイスを開きます。「Web コンソールを使用した Directory Server へのログイン」を参照してください。
- インスタンスを選択します。
- 同期合意の横にある Full Re-Synchronization を選択します。メニューを開き、再同期は、同期ピアのデータを削除しません。プロセスは、すべての更新を送受信して、新規または変更した Directory Server エントリーを追加します。たとえば、このプロセスは、ntUser オブジェクトクラスが追加される既存の Directory Server ユーザーを追加します。
Web コンソールで同期ステータスを表示するには、以下を実行します。
- 同期が正常に完了すると、Web コンソールは Last Update Status 列に Error (0) Replica acquired successfully: Incremental update succeeded メッセージを表示します。
16.11.3. 同期スケジュールの設定
同期は 2 つの方法で機能します。Directory Server は、
nsds5replicaupdateschedule
属性を使用して、レプリケーションと同様に設定可能なスケジュールの Active Directory に更新を適用します。Directory Server は Active Directory をポーリングして変更の有無 (Active Directory サーバーが winSyncInterval
属性に設定されている頻度) を確認します。
デフォルトでは、Directory Server の更新スケジュールは常に同期されます。Active Directory の間隔は、5 分ごとに Active Directory をポーリングする間隔です。
Directory Server が更新を Active Directory に送信するために使用するスケジュールを変更するには、
nsds5replicaupdateschedule
属性を編集します。スケジュールは、24 時間クロックを使用して HHMM 形式の開始 (SSSS) および終了 (EEEE) 時間で設定されます。同期の更新スケジュールを設定する日は、0 (日曜日) から 6 (土曜日) までです。
nsds5replicaupdateschedule: SSSS EEEE DDDDDDD
たとえば、日曜日、火曜日、木曜日、土曜日の正午から午後 2 時まで同期を実行するようにスケジュールを設定します。
nsds5replicaupdateschedule: 1200 1400 0246
注記
同期時間は真夜中を含むことはできないため、設定 2300 0100 は有効ではありません。
Directory Server が Active Directory エントリーへの変更をチェックする頻度を変更するには、
winSyncInterval
属性をリセットします。この属性は秒単位で設定されるため、デフォルトの 300 は、Directory Server が Active Directory サーバーを 300 秒または 5 分間隔でポーリングすることを意味します。これを高い値に設定すると、ディレクトリーの検索に時間がかかり、パフォーマンスに影響する場合に便利です。
winSyncInterval: 1000
16.11.4. 同期接続の変更
同期合意について接続の 2 つの側面を変更することができます。
- バインドユーザー名およびパスワード (
nsDS5ReplicaBindDN
およびnsDS5ReplicaCredentials
) - 接続方法 (
nsDS5ReplicaTransportInfo
)。nsDS5ReplicaTransportInfo
は LDAP から StartTLS に (その逆も) しか変更できません。LDAPS への変更、または LDAPS からの変更はポート番号を変更することができないため、LDAP と LDAPS の切り替えにはポート番号の変更が必要となります。
以下に例を示します。
nsDS5ReplicaBindDN: cn=sync user,cn=Users,dc=ad1 nsDS5ReplicaCredentials: {DES}ffGad646dT0nnsT8nJOaMA== nsDS5ReplicaTransportInfo: StartTLS
警告
Active Directory 同期ピアのポート番号を変更することはできません。そのため、標準ポートとセキュアでないポートの間で変更する必要があるため、標準/STARTTLS 接続と TLS 接続を切り替えることはできません。
TLS に変更するには、同期合意を削除し、更新されたポート番号と新しいトランスポート情報を再度追加します。
16.11.5. 同期しているサブツリーから移動するエントリーの処理
同期合意は、Active Directory と Directory Server の両方において、またその 2 つの間で同期するサブツリーを定義します。スコープ 内のエントリー (サブツリー) が同期され、他のエントリーは無視されます。
ただし、同期プロセスは実際にルート DN で開始し、同期のエントリーの評価を開始します。エントリーは、Active Directory の
samAccount
と Directory Server の uid
属性に基づいて相関します。同期プラグインは、(samAccount/uid
関係に基づいて) エントリーが削除または移動されたために、同期されたサブツリーから削除された場合、その旨を通知します。これは、同期プラグインに対して、そのエントリーがもう同期されないことを示す信号です。
この問題は、同期プロセスで、移動したエントリーの処理方法を決定するための設定が必要となることです。対応するエントリーの削除、エントリー (デフォルト) の無視、またはエントリーの同期解除を 3 つのオプションがあります。
注記
これらの同期アクションは、Active Directory 側でエントリーが範囲外に移動した場合の Directory Server 側での 処理方法にのみ関連しています。エントリーが Directory Server 側で同期されたサブツリーからエントリーを移動しても、Active Directory エントリーには影響はありません。
Directory Server 9.0 のデフォルトの動作では、対応する Directory Server エントリーが削除されるようになりました。これは、Active Directory 側のエントリーが Directory Server 側に同期されていなかった場合でも該当します。Directory Server 9.1 以降、デフォルトの動作ではエントリーを無視して、何も実行しません。
たとえば、
samAccount
ID が jsmith のユーザーは、Active Directory の ou=Employees サブツリーに作成されています。同期されたサブツリーは ou=Users であるため、jsmith ユーザーは Directory Server に同期されませんでした。
図16.4 Active Directory ツリー

バージョン 7.x および 8.x の Directory Server では、そのユーザーは同期されたサブツリーの外にあったため、同期は単にそのユーザーを無視していました。
Directory Server 9.0 以降、Directory Server はサブツリーの名前変更をサポートします。つまり、既存のエントリーはディレクトリーツリーのブランチ間で移動できるようになりました。同期プラグインは、Active Directory ツリーの中で、Directory Server のユーザー (
samAccount/uid
関係) に対応し、同期サブツリーの外にあるエントリーを、意図的に 同期サブツリーの外に移動させることを前提としています (基本的には名前の変更操作)。対応する Directory Server エントリーを削除する必要があることを前提とします。
図16.5 Active Directory と Directory Server ツリーの比較

この仮定は必ずしも正確なものではなく、特に同期サブツリーの外側に常に存在するユーザーエントリーの場合は注意が必要です。
同期合意の
winSyncMoveAction
属性は、これらの移動したエントリーの処理方法を設定します。
- none は何もしないため、同期した Directory Server エントリーが存在する場合は、同期するか、スコープ 内 に Active Directory エントリーを作成したりできます。同期された Directory Server エントリーが存在しない場合は、何も起こりません (Directory Server バージョン 9.1 以降では、これがデフォルトの動作です)。
- unsync は、Directory Server エントリーから同期関連の属性 (
ntUser
またはntGroup
) を削除しますが、Directory Server エントリーはそのまま残されます。重要エントリーの同期を解除すると、Active Directory のエントリーが後から削除され、Directory Server のエントリーがそのまま残ってしまう危険性があります。これにより、特に Active Directory 側でエントリーを再作成するのに Directory Server エントリーを使用する場合などに、データが不整合になる可能性があります。 - delete は、Active Directory と同期していたかどうかに関わらず、Directory Server で該当するエントリーを削除します (これは 9.0 のデフォルト動作です)。重要対応する Active Directory エントリーを削除せずに Directory Server エントリーを削除することはありません。このオプションは、Directory Server 9.0 システムとの互換性でのみ利用できます。
デフォルトを変更する必要がある場合:
# dsconf -D "cn=Directory Manager" ldap://server.example.com repl-winsync-agmt --move-action="action" --suffix="suffix" agreement_name