はじめに
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を再起動します。
順番に以下を入力していきます。
- ntdsutil
- roles
- connections
- connect to server 【新DCの名前】
- q
- Seize schema master
- q
- 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は入れ替える必要があるかもしれません・・・。
- 新DCを追加する。
- FSMOを担っているDCを調べる。
- FSMOを新DCに移行する。
- 旧DCを降格する。
- 新DCから旧DCのデータを削除する。
- 旧DCをドメインに追加する。
Comments