FSMOの役割を上書きする

Windows

はじめに

WindowsのActive Directoryで2台のDC(ドメインコントローラ)が存在するドメインに新DCを追加して1台の旧DCを降格したかったのですが、手順を間違えてしまい色々大変でした。

環境

新DC
    Windows Server 2019 Standard

旧DC
    Windows Server 2012 R2
    Windows Server 2012 R2

ミスしたこと

新DCを追加して、単純に旧DCを降格してしまったことで、新DCでDomain Controllersとして登録されている旧DCを削除できなくなりました。
ググるとFSMO(Flexible Single Master Operation)という5種類の役割を旧DCから移行する必要があるとのことです。
実際に新DC(○○○)で以下のコマンドを打つと「スキーママスター」だけが旧DC(●●●)になっていました。
旧DCを降格した段階で4個は移行できていたようです。

netdom /query fsmo

スキーママスター            ●●●.domainname.local
ドメイン名前付けマスター    ○○○.domainname.local
PDC                         ○○○.domainname.local
RIDプールマネージャー       ○○○.domainname.local
インフラストラクチャマスター   ○○○.domainname.local

スキーママスターの役割を上書きする

ntdsutilコマンドで上書きできることが分かったのですが、以下の2グループに属するユーザで実行するとエラーになりました。
・Enterprise Admins(ドメイン名前付けマスター)
・Domain Admins(PDC、RIDプールマネージャー、インフラストラクチャマスター)

Win32 エラー 0x2098(この操作を実行するのに十分なアクセス権がありません。) 
エラー コードにより、接続、LDAP、または役割の転送エラーを示すことがあります。

いろいろ調べて、ドメインのUsersに属するAdministratorアカウントを使って完了できました。
エラーになったユーザにSchema Adminsグループを追加したら良かったかもしれませんが試していません。

作業は新DCでPowerShellを管理者権限で実行して行い、完了後に新DCを再起動します。
順番に以下を入力していきます。

  1. ntdsutil
  2. roles
  3. connections
  4. connect to server 【新DCの名前】
  5. q
  6. Seize schema master
  7. q
  8. q

実際には下記のようになります。

PS C:\Windows\system32> ntdsutil
C:\Windows\system32\ntdsutil.exe: roles
fsmo maintenance: connections
server connections: connect to server 【新DCの名前】
【新DCの名前】に結合しています...
ローカルでログオンしているユーザーの資格情報を使って【新DCの名前】 に接続しました。
server connections: q
fsmo maintenance: Seize schema master
強制前に schema FSMO の安全転送を試みています。
ldap_modify_sW エラー 0x34(52 (利用できません).
Ldap 拡張エラーメッセージ 000020AF: SvcErr: DSID-032104DB, problem 5002 (UNAVAILABLE), data 1753 Win32 エラー 0x20af(要求された FSMO の操作に失敗しました。現在の FSMO の所有者に接続できませんでした。))
エラー コードにより、接続、LDAP、または役割の転送エラーを示すことがあります。
schema FSMO の転送に失敗しました。強制処理 (seize) 中です...
サーバー "【新DCの名前】" は 5 個の役割を認識しています

・・・省略・・・

fsmo maintenance: q
C:\Windows\system32\ntdsutil.exe: q

確認

新DCを再起動後に反映されたか確認します。
スキーママスターを上書きしたことで、新DCからDomain Controllersとして登録されている旧DCを削除できました。

netdom /query fsmo

スキーママスター            ○○○.domainname.local
ドメイン名前付けマスター    ○○○.domainname.local
PDC                         ○○○.domainname.local
RIDプールマネージャー       ○○○.domainname.local
インフラストラクチャマスター   ○○○.domainname.local

その他の役割を上書きする場合

今回はスキーママスターを修正したいのでSeize schema masterを指定しました。
その他の場合は「fsmo maintenance:」で「?」と入力すると表示されます。

fsmo maintenance: ?

 ?                             - このヘルプを表示します
 Connections                   - 特定の AD DC/LDS インスタンスに接続します
 Help                          - このヘルプを表示します
 Quit                          - 前のメニューに戻ります
 Seize infrastructure master   - 接続されたサーバーのインフラストラクチャ役割を
                                 上書きします
 Seize naming master           - 接続されたサーバーの名前付けマスター役割を
                                 上書きします
 Seize PDC                     - 接続されたサーバーの PDC 役割を上書きします
 Seize RID master              - 接続されたサーバーの RID 役割を上書きします
 Seize schema master           - 接続されたサーバーのスキーマ役割を上書きします
 Select operation target       - サイト、サーバー、ドメイン、役割および名前付け
                                 コンテキストを選びます
 Transfer infrastructure master - 接続されたサーバーをインフラストラクチャ マス
                                 タにします
 Transfer naming master        - 接続されたサーバーを名前付けマスターにします
 Transfer PDC                  - 接続されたサーバーを PDC にします
 Transfer RID master           - 接続されたサーバーを RID マスターにします
 Transfer schema master        - 接続されたサーバーをスキーマ マスターにします

正しい手順

今回やりたかった作業の正しい手順は、下記のようになるのでしょうか。
4と5は入れ替える必要があるかもしれません・・・。

  1. 新DCを追加する。
  2. FSMOを担っているDCを調べる。
  3. FSMOを新DCに移行する。
  4. 旧DCを降格する。
  5. 新DCから旧DCのデータを削除する。
  6. 旧DCをドメインに追加する。

Comments