【Windows Server】DC が死んだらグローバルカタログの移動も忘れずに

Tech・Ed のデモ環境テスト中ですが、ひょんなことから ドメインコントローラとなっているサーバーの動作がおかしくなりました。Active Directoryは正しく動いているようだったのですが、あわててもう1台のDCを作成して環境を複製し、おかしな DC を降格せず、FSMOの転送もせずに削除しました。

完全にはまるパターンですが、ちょっと自分に対して余裕のあるふりをしてみたかったのです...。

さて、DCを降格せずに削除したら何をやらなければならないか。典型的な作業は 2つです。

  • FSMOの転送
  • 存在しないDC関連オブジェクトの清掃

これらを行うには、エンジニアの心の友、ntdsutil.exe を使用します。

経験されている方も多いと思いますが、せっかくですので、Windows Server 2008 上で上の操作を行ってみます。

□FSMOの転送

まずは自分自身に接続するところまで行いましょう。

C:\>ntdsutil ntdsutil: roles fsmo maintenance: connection server connections: connect to server t4304-01 t4304-01 に結合しています... ローカルでログオンしているユーザーの資格情報を使って t4304-01 に接続しました。 server connections: quit fsmo maintenance:

次に、 FSMO の転送を行います。試しに「普通の転送」をしてみます。以下は PDC エミュレータを転送しています。

fsmo maintenance: transfer pdc ldap_modify_sW エラー 0x34(52 (利用できません). Ldap 拡張エラーメッセージ 000020AF: SvcErr: DSID-03210575, problem 5002 (UNAVAI ABLE), data 1753

Win32 エラー 0x20af(要求された FSMO の操作に失敗しました。現在の FSMO の所有者に 接続できませんでした。) ) エラー コードにより、接続、LDAP、または役割の転送エラー を示すことがあります。 サーバー "t4304-01" は 5 個の役割を認識しています スキーマ - CN=NTDS Settings,CN=T4304-DC01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example-t4304,DC=jp 名前付けマスタ - CN=NTDS Settings,CN=T4304-DC01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example-t4304,DC=jp PDC - CN=NTDS Settings,CN=T4304-DC01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example-t4304,DC=jp RID - CN=NTDS Settings,CN=T4304-DC01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example-t4304,DC=jp インフラストラクチャ - CN=NTDS Settings,CN=T4304-DC01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example-t4304,DC=jp

transfer ではエラーが発生することがわかります。これは、もとのFSMO役割を担当していたDCがすでに存在しないてめ、普通の転送することができないためです。

そこで、以下のように強制転送を行います。強制転送を行うには seize コマンドを使用します。最初に安全な転送を試みた後、失敗すると強制的に転送されます。

fsmo maintenance: seize PDC 強制前に PDC FSMO の安全転送を試みています。 ldap_modify_sW エラー 0x34(52 (利用できません). Ldap 拡張エラーメッセージ 000020AF: SvcErr: DSID-03210575, problem 5002 (UNAVAILABLE), data 1753

Win32 エラー 0x20af(要求された FSMO の操作に失敗しました。現在の FSMO の所有者に接続できませんでした。) ) エラー コードにより、接続、LDAP、または役割の転送エラーを示すことがあります。 PDC FSMO の転送に失敗しました。強制処理 (seize) 中です... サーバー "t4304-01" は 5 個の役割を認識しています

スキーマ - CN=NTDS Settings,CN=T4304-DC01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example-t4304,DC=jp 名前付けマスタ - CN=NTDS Settings,CN=T4304-DC01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example-t4304,DC=jp PDC - CN=NTDS Settings,CN=T4304-01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example-t4304,DC=jp RID - CN=NTDS Settings,CN=T4304-DC01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example-t4304,DC=jp インフラストラクチャ - CN=NTDS Settings,CN=T4304-DC01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example-t4304,DC=jp

fsmo maintenance:

これを、残りの4つのFSMOに対して繰り返せば転送は完了です。それぞれ、以下のコマンドを使用します。

  • Seize infrastructure master - 接続されたサーバーのインフラストラクチャ役割を上書きします
  • Seize naming master - 接続されたサーバーの名前付けマスタ役割を上書きします
  • Seize PDC - 接続されたサーバーの PDC 役割を上書きします
  • Seize RID master - 接続されたサーバーの RID 役割を上書きします
  • Seize schema master - 接続されたサーバーのスキーマ役割を上書きします

□不要なDCの清掃

不要なDCの清掃を行うには、Metadata Cleanup コマンドを使用します。実は、不要なDCの清掃を行うと、DCが持っていたFSMOを自動的に転送してくれるので、はじめからこちらをやったほうが楽かもしれません。

はじめに生きているドメインコントローラに接続します。

ntdsutil: metadata cleanup

server connections: connect to server t4304-01 t4304-01 に結合しています...

ローカルでログオンしているユーザーの資格情報を使ってt4304-01接続しました。

server connections: quit

metadata cleanup:

次に、以下のような流れで削除したいサーバーを選択します。今回削除したいのは、T4304-DC01 というドメインコントローラです。

select operation target: list domains 1 個のドメインを検出しました 0 - DC=example-t4304,DC=jp

select operation target: select domain 0 現在のサイトがありません ドメイン - DC=example-t4304,DC=jp 現在のサーバーがありません 現在の名前付けコンテキストがありません

select operation target: list site 1 個のサイトを検出しました

0 - CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example-t4304,DC=jp

select operation target: select site 0 サイト - CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example-t4304,DC=jp ドメイン - DC=example-t4304,DC=jp 現在のサーバーがありません 現在の名前付けコンテキストがありません

select operation target: list servers in site 2 個のサーバーを検出しました

0 - CN=T4304-DC01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example-t4304,DC=jp

1 - CN=T4304-01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example-t4304,DC=jp

select operation target: select server 0 サイト - CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example-t4304,DC=jp ドメイン - DC=example-t4304,DC=jp サーバー - CN=T4304-DC01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example-t4304,DC=jp DSA オブジェクト - CN=NTDS Settings,CN=T4304-DC01,CN=Servers,CN=Default First-Site-Name,CN=Sites,CN=Configuration,DC=example-t4304,DC=jp DNS ホスト名 - T4304-DC01.example-t4304.jp コンピュータ オブジェクト - CN=T4304-DC01,OU=Domain Controllers,DC=example-t4304,DC=jp 現在の名前付けコンテキストがありません select operation target: quit

metadata cleanup:

次に、Remove Selected Server コマンドを使用して選択したサーバーを削除します。

以下に示すように、残りのFSMOが強制的に転送され、不必要なオブジェクトが削除されます。

metadata cleanup: remove selected server

選択されたサーバーから FSMO 役割を転送/強制処理しています。 T4304-01.example-t4304.jp に結合しています...

Domain Naming Master FSMO を "CN=NTDS Settings,CN=T4304-01,CN=Servers,CN=Default-First-Site-Name, CN=Sites, CN=Configuration, DC=example-t4304, DC=jp" に移動させています。

強制前に domain naming FSMO の安全転送を試みています。

ldap_modify_sW エラー 0x34(52 (利用できません). Ldap 拡張エラーメッセージ 000020AF: SvcErr: DSID-03210380, problem 5002 (UNAVAIABLE), data 1753

Win32 エラー 0x20af(要求された FSMO の操作に失敗しました。現在の FSMO の所有者に接続できませんでした。) ) エラー コードにより、接続、LDAP、または役割の転送エラーを示すことがあります。

domain naming FSMO の転送に失敗しました。強制処理 (seize) 中です...

サーバー "t4304-01" は 5 個の役割を認識しています

スキーマ - CN=NTDS Settings,CN=T4304-01,CN=Servers,CN=Default-First-Site-Name, CN=Sites, CN=Configuration, DC=example-t4304, DC=jp 名前付けマスタ - CN=NTDS Settings,CN=T4304-01, CN=Servers, CN=Default-First-Site-Name, CN=Sites, CN=Configuration, DC=example-t4304, DC=jp PDC - CN=NTDS Settings,CN=T4304-01,CN=Servers,CN=Default-First-Site-Name, CN=Sites, CN=Configuration, DC=example-t4304,DC=jp RID - CN=NTDS Settings,CN=T4304-DC01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example-t4304,DC=jp インフラストラクチャ - CN=NTDS Settings,CN=T4304-01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example-t4304,DC=jp Rid Master FSMO を "CN=NTDS Settings,CN=T4304-01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example-t4304,DC=jp" に移動させています。

強制前に RID FSMO の安全転送を試みています。 ldap_modify_sW エラー 0x34(52 (利用できません). Ldap 拡張エラーメッセージ 000020AF: SvcErr: DSID-03210B34, problem 5002 (UNAVAIABLE), data 1753

Win32 エラー 0x20af(要求された FSMO の操作に失敗しました。現在の FSMO の所有者に接続できませんでした。) ) エラー コードにより、接続、LDAP、または役割の転送エラーを示すことがあります。 RID FSMO の転送に失敗しました。強制処理 (seize) 中です... ドメインの最高値の RID プールを検索しています

サーバー "t4304-01" は 5 個の役割を認識しています

スキーマ - CN=NTDS Settings,CN=T4304-01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example-t4304,DC=jp 名前付けマスタ - CN=NTDS Settings,CN=T4304-01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example-t4304,DC=jp PDC - CN=NTDS Settings,CN=T4304-01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example-t4304,DC=jp RID - CN=NTDS Settings,CN=T4304-01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example-t4304,DC=jp インフラストラクチャ - CN=NTDS Settings,CN=T4304-01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example-t4304,DC=jp

選択されたサーバーのために FRS メタデータを削除しています。

"CN=T4304-DC01,OU=Domain Controllers,DC=example-t4304,DC=jp" 下で FRS メンバを検索しています。 "CN=T4304-DC01,OU=Domain Controllers,DC=example-t4304,DC=jp" 下のサブツリーを削除しています。

CN=T4304-DC01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example-t4304,DC=jp 上の FRS 設定の削除に失敗しました。原因は次のとおりです: " 要素が見つかりません。";

メタデータのクリーンアップは続行されます。 "CN=T4304-DC01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,CN=example-t4304,DC=jp" をサーバー "t4304-01"から削除しました

metadata cleanup:

□コマンドラインから DC をグローバルカタログ にする

さて、私はこれですっかり安心しきって作業を継続しようとしたのですが、なにをするにも ドメインコントローラに接続できない というエラーが頻発しました。Active Directory ユーザーとコンピュータや、サイトとサービス までも起動できません。

これは困った...と思い、イベントログを確認してみると、ありました。原因らしきメッセージが。

gcerror

イベントID 1126 : Active Directory ドメイン サービスは、グローバル カタログとの接続を確立できませんでした。

追加データ
エラー値: 1355 指定されたドメインがないか、またはアクセスできません。
内部 ID:3200d50
ユーザー操作:
グローバル カタログがフォレストで利用可能なこと、このドメイン コントローラから到達可能なことを確認してください。 nltest ユーティリティを使ってこの問題を診断することもできます。

なるほど...そういうことか。ということで、現在のDCを強制的にグローバルカタログにします。使用するコマンドは dsmod です。

C:\>dsmod server "CN=T4304-01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example-t4304,DC=jp" -isgc yes

dsmod 成功:CN=T4304-01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example-t4304,DC=jp

C:\>

これでめでたく問題は解決したように見えたのですが....インストールしてあった SQL Server やその他のアプリケーションも修正しなければならないことに気づき....途中まで行ったのですが焦ってしまって作業ミスが増えてしまい、結局OSを最初からインストールしなおすほうが確実だと判断しました...。

で、いま再インストール中です....(泣)。

もし、SQL Server や Data Protection Manager、Operations Manager などでドメインを変更した場合のオペレーションについて「この手順が確実!」「この手順でやったことがある!」「これが最速!」という経験をお持ちのエンジニアの皆さま、是非とも情報をコンタクトください!