fSMORoleOwner 属性の Infrastructure マスターの値にご注意

こんにちは。Windows プラットフォーム サポートチームの工藤です。
今回は、ドメイン コントローラの移行作業を、適切に問題なく実施するための参考情報のひとつをご紹介させていただきます。

 

弊社 Windows プラットフォーム サポートでは、エラーが発生してドメイン コントローラの降格ができないというお問合せを、ときどきお寄せいただくことがあります。
具体的には、ドメイン コントローラの削除をウィザードで進めているときに、以下のようなエラーが発生する状況です。

「ディレクトリ サービスで必須の構成情報が不足しているため、浮動単一マスター操作の役割に対する所有権を判断できません。」

このエラーは、アプリケーションパーティションの fSMORoleOwner と呼ばれる属性の値がフォレスト内に存在しない DC 名になっていると発生するのですが、実は、対処方法について、弊社では以下のサポート技術情報を公開しております。
– 参考情報
インフラストラクチャ マスター役割の強制転送を行っても、アプリケーション パーティションの fSMORoleOwner 属性の値が変更されません
https://support.microsoft.com/ja-jp/kb/2904044

 

ただ、この公開情報は、問題の発生を未然に防止する観点では書かれておりません。
そのため、本ブログでは、ドメイン コントローラーを降格させるときに、事前確認を行うポイントをエラーの内容詳細と併せて、以下におまとめしてみたいと思います。

 

=============================================================
A. 未然に防げる現象
=============================================================

事前確認によって、以下のふたつの問題の発生を抑えることができます。

1. ドメイン コントローラーの降格が行えない

ドメイン コントローラーの降格を行おうとすると、「ディレクトリ サービスで必須の構成情報が不足しているため、浮動単一マスター操作の役割に対する所有権を判断できません。」というエラー メッセージが表示され、降格ができません。

2. Adprep /rodcprep コマンドの実行に失敗する

Adprep /rodcprep コマンドを実行すると、「Adprep は、パーティション DC=DomainDnsZones,DC=Contoso,DC=com のレプリカに接続できませんでした。 」というエラー メッセージが表示されます。

 

=============================================================
B. fSMORoleOwner 属性について
=============================================================

確認対象の fSMORoleOwner 属性は、以下の 3 ヶ所に保存されている値であり、各パーティションのインフラストラクチャー マスターの役割を保持しているサーバーを示します。
(フォレストがマルチドメインで構成されている場合には、各ドメイン毎にドメイン パーティション、 DomainDnsZones パーティションが作成され、そこにもインフラストラクチャーマスターが設定されます)

---------------------------------------
<ドメイン パーティション>
CN=Infrastructure,DC=contoso,DC=com

<アプリケーション パーティション>
CN=Infrastructure,DC=DomainDnsZones,DC=contoso,DC=com
CN=Infrastructure,DC=ForestDnsZones,DC=contoso,DC=com
---------------------------------------
※ ドメイン名は contoso.com という名前を例として挙げています。

fSMORoleOwner 属性は、該当のドメイン コントローラーを通常降格した場合には役割は移行されます。
しかし、この属性に登録されていたドメイン コントローラーを強制的に降格して、その後 Metadata Cleanup (強制降格したドメイン コントローラーのコンピューター オブジェクトを削除する作業) を実施した場合には、”0ADEL” のタグが追加された状態で情報が残存します。

ドメイン パーティションについてのインフラストラクチャーマスターであれば ntdsutil コマンドを利用して役割に移行が可能です。その結果 fSMORoleOwner 属性には有効なドメイン コントローラー名が入ります。
一方、アプリケーション パーティションの fSMORoleOwner 属性は ntdsutil コマンドでは移行されません。DNS が利用するアプリケーション パーティションではインフラストラクチャー マスターは特に何も行わないため、そのままでも通常の運用の中では何ら影響はありませんが、降格処理や Adprep コマンドを実行するときには、アプリケーション パーティションの fSMORoleOwner 属性もチェックされて、ここで不正な情報 (0ADEL を含む情報) が入っている場合にエラーになります。

 

=============================================================
C. 問題を未然に防止する方法
=============================================================

強制降格、それに伴う Metadata Cleanup の作業を実施した場合には、その作業を実施した後で ADSI エディタを使用し fSMORoleOwner 属性に問題ないことを確認しておきます。
(強制降格後のタイミングでなくても、それ以降にドメイン コントローラーを降格したり、Adprep コマンドを実行する前のタイミングで確認するのでも構いません)

 

– 確認手順
1. Infrastructure master の役割を持つドメイン コントローラー (netdom query fsmo から確認できます) に管理者権限を持つユーザーでログオンします。
2. [管理ツール] – [ADSI エディター] を起動します。
3. 左ペインの “ADSI エディター” を右クリックし、[接続] を押します。
4. [接続の設定] 内の “接続ポイント” の “識別名または名前付けコンテキストを選択または入力する” に以下を入力し、[OK] を押します。
DC=DomainDnsZones,<ドメインの DN>

例:DC=DomainDnsZones,DC=contoso,DC=com

5. 左ペインから以下のパスに移動します。
[既定の名前付けコンテキスト ] – [DC=DomainDnsZones,<ドメインの DN>]
6. 右ペインに [CN=Infrastructure] と表示されるので、右クリックし、[プロパティ] を選択します。
7. [CN=Infrastructure のプロパティ] にて [属性エディター] タブから [fSMORoleOwner] を選択し、[編集] を押します。
8. [文字列の属性エディター] と表示されるので、[CN=NTDS Settings,CN=,CN=Servers,CN=,CN=Sites,CN=Configuration,・・・] 内の “サーバー名” の箇所が “0ADEL” の文字が入っていないことを確認します。
9. 続けて、ForestDnsZones に関しても、3 ~ 9 の作業の DomainDnsZones を ForestDnsZones に置き換えて、確認を実施します。
10. DomainDnsZones を ForestDnsZones の fSMORoleOwner 属性の値が “0ADEL” となっていた場合は、以下の KB 949257 の VBS スクリプトを実行し、fSMORoleOwner 属性を適切な値に変更します。

– 参考情報
Windows Server 2008 で “Adprep /rodcprep” コマンドを実行すると、エラー メッセージ “Adprep は、パーティション DC=DomainDnsZones,DC=Contoso,DC=com のレプリカに接続できませんでした” が表示される
https://support.microsoft.com/ja-jp/kb/949257
(※ 上記で案内している VBS は fSMORoleOwner 属性の値に接続不可能な DC の名前、もしくは “0ADEL” という値が設定されていた場合に、接続可能な FSMO の役割を持つサーバーに値を変更するというスクリプトです)

 

以上になります。
それでは、夏の暑さでくれぐれも体調を崩されないようお過ごしくださいませ。