Active DirectoryのFSMO役割とは?FSMOロールの確認・転送・強制取得(Seize)手順を徹底解説
本記事では、Active Directory環境においてFSMO役割(FSMOロール)を保持しているドメインコントローラー(DC)を特定する方法、1つまたは複数のFSMO役割を別の(追加・セカンダリ)ドメインコントローラーへ転送する方法、そしてFSMO役割を保持していたDCが障害を起こした場合に役割を強制取得(Seize)する方法について詳しく解説します。
Active DirectoryドメインにおけるFSMO役割の基礎知識
FSMO(Flexible Single Master Operation:柔軟な単一マスター操作)役割とは、Active Directoryドメインにおいてどのような役割を果たすのでしょうか?
Active Directoryでは、ユーザーアカウントやセキュリティグループの作成、コンピューターのドメイン参加といった標準的な操作は、どのドメインコントローラー上でも実行できます。これらの変更内容は、ADレプリケーションサービスによってディレクトリ全体に伝播されます。複数のDCで同時にユーザーアカウントの名前変更が行われた場合などの競合は、「最後に書き込んだものが優先される」というシンプルな原則で解決されます。
しかし、子ドメインやフォレストの新規作成、ADスキーマの変更など、競合が許されない操作も存在します。こうした一意性が求められる操作を実行するには、FSMO役割を持つドメインコントローラーが必要です。FSMO役割の主な目的は、このような競合の発生を未然に防ぐことです。
Active Directoryフォレストには5つのFSMO役割が存在します。
フォレスト全体で一意となる2つの役割
- スキーママスター(Schema Master):Active Directoryスキーマへの変更を担います。例えば、
adprep /forestprepコマンドによるスキーマ拡張時などに使用されます。 - ドメイン命名マスター(Domain Naming Master):ADフォレスト内に作成されるすべてのドメインおよびアプリケーションパーティションに対して、一意の名前を保証します。管理には「Enterprise Admins」権限が必要です。
各ドメインごとに存在する3つの役割
以下の3つの役割は各ドメインごとに存在し、管理にはアカウントが「Domain Admins」グループのメンバーである必要があります。
- PDCエミュレーター(PDC Emulator):Windowsネットワークの主要ブラウザー(ネットワーク環境に表示されるコンピューターの一覧を管理するDomain Master Browser)として機能します。パスワード誤入力によるユーザーのロックアウトを追跡し、ドメイン内の主要NTPサーバーとしても動作します。さらに、Windows 2000/NTクライアントとの互換性維持や、DFSルートサーバーによる名前空間情報の更新にも利用されます。
- インフラストラクチャマスター(Infrastructure Master):ドメイン間のオブジェクト参照の更新を担当します。
adprep /domainprepコマンドもこのサーバー上で実行されます。 - RIDマスター(RID Master):他のドメインコントローラーへRID(Relative Identifier)を500個単位のプールとして配布し、オブジェクトの一意な識別子(SID)の生成を可能にします。
FSMO役割の所有者(ホルダー)を確認する方法
自分のActive Directoryドメインで、どのドメインコントローラーがFSMO役割を保持しているかを調べるにはどうすればよいでしょうか?
ドメイン内のすべてのFSMO役割所有者を確認するには、次のコマンドを実行します。
netdom query fsmo
Schema master dc01.test.com Domain naming master dc01.test.com PDC dc01.test.com RID pool manager dc01.test.com Infrastructure master dc01.test.com
他のドメインのFSMO役割を確認することもできます。
netdom query fsmo /domain:woshub.com
上記の例では、すべてのFSMO役割がDC01上に配置されています。新しいADフォレスト(ドメイン)を構築した際は、すべてのFSMO役割が最初のDCに集約されます。RODC(読み取り専用ドメインコントローラー)以外であれば、任意のDCが任意のFSMO役割を保持できます。したがって、ドメイン管理者はFSMO役割を他のドメインコントローラーへ自由に移行できます。
PowerShellを使用してFSMO役割の情報を取得することも可能です(Get-ADDomainController コマンドレットの利用には、RSATの「Active Directory PowerShell モジュール」が必要です)。
Get-ADDomainController -Filter * | Select-Object Name, Domain, Forest, OperationMasterRoles |Where-Object {$_.OperationMasterRoles}
フォレストレベルおよびドメインレベルのFSMO役割は、次のコマンドでも確認できます。
Get-ADDomain | Select-Object InfrastructureMaster, RIDMaster, PDCEmulator
Get-ADForest | Select-Object DomainNamingMaster, SchemaMaster
Microsoft推奨のFSMO役割配置ガイドライン
- フォレストレベルの役割(スキーママスターとドメイン命名マスター)は、グローバルカタログ(GC)サーバーを兼ねるフォレストルートドメインのDCに配置します。
- ドメインレベルの3つのFSMO役割は、十分なパフォーマンスを持つ1台のDCにまとめて配置します。
- フォレスト内のすべてのDCをグローバルカタログサーバーにすると、ADの信頼性とパフォーマンスが向上します。その場合、インフラストラクチャマスターの役割は実質的に不要になります。GCを持たないDCが存在する場合は、そのDCにインフラストラクチャマスターを配置してください。
- FSMO役割を保持するDCには、他の負荷の高いタスクを割り当てないようにしましょう。
FSMO役割の移行は、GUIのMMCスナップイン、ntdsutil.exe、またはPowerShellという複数の方法で実施できます。FSMO役割の転送が必要になるのは、ADインフラストラクチャの最適化を行う場合や、FSMO役割を保持するDCに深刻なハードウェア・ソフトウェア障害が発生した場合です。移行方法には大きく分けて2種類あります。両方のDCが稼働している状態での転送(Transfer)と、役割保持DCがダウンしている場合の強制取得(Seize)です。
PowerShellでFSMO役割を転送する方法
ドメイン内のFSMO役割を最も簡単かつ迅速に転送する方法は、Move-ADDirectoryServerOperationMasterRole コマンドレットを使うことです。
このコマンドレットでは、指定したDCに対して1つ以上のFSMO役割を同時に転送できます。次のコマンドは、2つの役割をDC02へ移動させる例です。
Move-ADDirectoryServerOperationMasterRole -Identity dc02 -OperationMasterRole PDCEmulator, RIDMaster
OperationMasterRole パラメーターには、FSMO役割の名前または下表の番号(インデックス)を指定できます。
| PDCEmulator | 0 |
| RIDMaster | 1 |
| InfrastructureMaster | 2 |
| SchemaMaster | 3 |
| DomainNamingMaster | 4 |
先ほどのコマンドは、番号指定を使うと次のように簡潔に書けます。
Move-ADDirectoryServerOperationMasterRole -Identity dc02 -OperationMasterRole 0,1
追加のドメインコントローラーへ5つのFSMO役割をすべて一度に転送するには、次のコマンドを実行します。
Move-ADDirectoryServerOperationMasterRole -Identity dc02 -OperationMasterRole 0,1,2,3,4
Active Directory管理ツール(GUI)でFSMO役割を転送する方法
標準のActive Directoryグラフィカルスナップインを使用してもFSMO役割を移動できます。転送操作は原則として、FSMO役割を保持しているDC上で実行するのが望ましいでしょう。対象サーバーのローカルコンソールにアクセスできない場合は、MMCスナップインの「ドメインコントローラーの変更」オプションから目的のDCを選択してください。
RIDマスター・PDCエミュレーター・インフラストラクチャマスターの転送方法
ドメインレベルの役割(RID、PDC、Infrastructure Master)を転送するには、「Active Directory ユーザーとコンピューター」(DSA.msc)コンソールを使用します。
- 「Active Directory ユーザーとコンピューター」(ADUC)スナップインを開きます。
- ドメイン名を右クリックし、「操作マスター」を選択します。
- 3つのタブ(RID、PDC、インフラストラクチャ)が表示されたウィンドウが開きます。該当するタブから新しいFSMO所有者を指定し、「変更」ボタンをクリックして役割を転送します。
スキーママスターの転送方法
フォレストレベルのFSMOであるスキーママスターの転送には、「Active Directory スキーマ」スナップインを使用します。
- スナップインを使用する前に、コマンドプロンプトで
regsvr32 schmmgmt.dllを実行してschmmgmt.dllライブラリを登録しておく必要があります。 - コマンドプロンプトで「MMC」と入力し、MMCコンソールを開きます。
- メニューから「ファイル」→「スナップインの追加と削除」を選択し、「Active Directory スキーマ」コンソールを追加します。
- コンソールルート(Active Directory スキーマ)を右クリックし、「操作マスター」を選択します。
- スキーママスター役割の転送先となるドメインコントローラー名を入力し、「変更」→「OK」をクリックします。「変更」ボタンがグレーアウトしている場合は、アカウントが「Schema Admins」グループのメンバーであることを確認してください。
ドメイン命名マスターの転送方法
- ドメイン命名マスターFSMO役割を転送するには、「Active Directory ドメインと信頼関係」コンソールを開きます。
- ドメイン名を右クリックし、「操作マスター」を選択します。
- 「変更」をクリックし、ドメインコントローラー名を入力して「OK」を押します。
Ntdsutil.exeを使ったコマンドラインでのFSMO役割転送
注意: ntdsutil.exeは強力なツールです。操作内容を十分に理解せずに使用すると、Active Directoryドメインを破損させる恐れがあるため、慎重に実行してください。
- ドメインコントローラー上でコマンドプロンプトを起動し、
ntdsutilを実行します。 - 続けて
rolesと入力します。 - 次に
connectionsと入力します。 - FSMO役割の転送先となるDCに接続します。接続には
connect to server <サーバー名>と入力します。 qを入力してEnterキーを押し、接続メニューを抜けます。- FSMO役割を転送するには、
transfer <役割>コマンドを使用します。<役割>には転送したい役割を指定します。例:transfer schema master、transfer rid masterなど。 - FSMO役割の転送を確認するプロンプトが表示されたら、承認します。
- 完了したら、
qを入力してEnterキーを押し、ntdsutil.exeを終了します。 - ドメインコントローラーを再起動します。
FSMO役割の強制取得(Seize)
FSMO役割を保持するDCが故障し(復旧不可能)、または長期間利用できない状況になった場合、その役割を強制的に引き継ぐことができます。ただし、強制取得を行う前に必ず確認すべき重要な点があります。役割を奪われた旧サーバーが二度とネットワークに接続されないようにしなければなりません。さもないと、ADに深刻な問題が発生します(バックアップからDCを後日復元する場合でも同じです)。障害が発生したDCをドメインに戻したい場合は、唯一の正しい方法として、まずADからそのコンピューターアカウントを削除し、新しいホスト名でWindowsをクリーンインストールし、AD DS役割をインストールして、改めてドメインコントローラーとして昇格させます。
FSMO役割の強制取得は、PowerShellまたはNTDSUtilを使用して行えます。
最も簡単なのはPowerShellによる方法です。同じMove-ADDirectoryServerOperationRole コマンドレットを使用しますが、ここに-Force パラメーターを追加します。
例えば、PDCEmulator役割を強制取得してDC02へ移すには、次のコマンドを実行します。
Move-ADDirectoryServerOperationMasterRole -Identity DC02 -OperationMasterRole PDCEmulator -Force
ntdsutil.exeを使用してDC02へFSMO役割を強制取得することも可能です。手順は通常の転送とほぼ同じですが、transfer の代わりに seize コマンドを使用します。
ntdsutil
roles
connections
connect to server DC02(役割の受け取り先サーバー)
quit
各FSMO役割を強制取得するには、次のコマンドを使用します。
seize schema master
seize naming master
seize rid master
seize pdc
seize infrastructure master
quit
-
「Active Directory ドメインコントローラーに接続できません」エラーの解決方法
Windowsワークステーションをドメインに参加させようとした際、「An Active Directory Domain Controller for the domain could not be contacted(ドメインのActive Directoryドメインコントローラーに接続できませんでした)」というエラーメッセージが表示されて困った経験はありませんか? この問題は、新しいWindowsワークステーションをドメインに追加しようとする場面で発生することが多く、その原因は主に以下の2つに分類できます。 DNSの構成ミス: 最も一般的な原因です。幸い、設定を見直すことで簡単に解決でき
-
Google Apps(G Suite)で取得したドメインを別のホスティングに移行する方法
G Suite(旧Google Apps)で独自ドメインを取得したものの、ウェブサイト自体はGoogle Sites以外の別のホスティング事業者で運用したい——そんな場合には、ドメインのDNS設定を変更して、新しいホストへ接続先を切り替える必要があります。この記事では、Googleドメインのウェブサイトを別のホストへリダイレクト(移行)させる具体的な手順を、初心者の方にもわかりやすく解説します。 移行前に知っておきたい注意点:MXレコードについて ドメインをGoogle Sites以外のホストへ向ける場合でも、引き続きG SuiteのGmailをメールサービスとして使い続けたいケースは多いはず