今週は、Active Directoryを運用する上で注意が必要な機能のひとつ、操作マスタについて取り上げよう。

NTドメインでは、ドメインコントローラにPDC(Primary Domain Controller)・BDC(Backup Domain Controller)という主従の区別があった。ユーザーアカウント情報を管理するのはPDCの仕事で、BDCはアカウント情報のコピーを受け取るだけ、という違いがある。

一方、Active Directoryではすべてのドメインコントローラが対等で、プライマリ/バックアップという区別はない。しかし、一部のドメインコントローラだけが持っている機能があるため、すべてのドメインコントローラが完全に同一というわけではない。

FSMOを構成する5つの機能

具体的には、以下に示す5種類の機能について、フォレスト、あるいはドメインを構成するドメインコントローラのうち1台だけが担当するようになっている。

  • スキーママスタ(フォレストごとに1台): Active Directoryが管理する情報の種類(データベーススキーマ)を管理する
  • ドメイン名前付け操作マスタ(フォレストごとに1台): フォレストにおけるドメインの追加/削除を管理する。Windows 2000 Serverで、ドメインネーミングマスタと呼んでいたものと同一
  • RIDプールマスタ(ドメインごとに1台): オブジェクトの固有識別に使用するSIDの一部を構成する、RIDの情報を管理して重複を防ぐ
  • PDCエミュレータ(ドメインごとに1台): ドメインコントローラが、クライアントPCからNTドメインのプライマリドメインコントローラとして見えるようにして、Windows 9x/NTとの互換性を確保するための機能。また、複数のドメインコントローラの間で情報の同期が完了していないと、パスワード情報の食い違いが原因でログオンに失敗することがあるが、その際にログオン情報の転送を受け付けて認証を行う機能も受け持つ
  • インフラストラクチャマスタ(ドメインごとに1台): ドメイン内で、グループに所属しているユーザーアカウントのメンバ情報を管理する

これら5種類の機能を総称して、FSMO(Flexible Single Master Operation、フィズモ)という。また、FSMOの機能を持つドメインコントローラのことを操作マスタという。

スキーママスタとドメイン名前付け操作マスタは、フォレストルートドメインで最初にセットアップしたドメインコントローラが担当する。その他の機能は、各々のドメインで最初にセットアップしたドメインコントローラが担当する。

つまり、単一ドメイン構成であれば、最初にActive Directoryを構成したときに構成する1台目のドメインコントローラが、操作マスタとして上記の機能すべてを受け持っていることになる。その後、同一フォレスト内にドメインを追加すると、それぞれのドメインで最初に構成したドメインコントローラが、当該ドメインのRIDプールマスタ・PDCエミュレータ・インフラストラクチャマスタを受け持つ。

フォレストやドメインから操作マスタがいなくなると、ドメインの動作に支障をきたす。そのため、ドメインコントローラに障害が発生した場合、あるいはドメインコントローラを降格してドメインを削除する場合に備えて、どのドメインコントローラが操作マスタになっているかを把握しておく必要がある。

操作マスタになっているドメインコントローラの確認

次回に、操作マスタを別のドメインコントローラに移動する方法について解説する予定だ。その際に使用するMMC管理コンソールの画面で、どのドメインコントローラが操作マスタになっているかを把握できる。しかし、いささか煩雑な手順になるのは否めないため、ntdsutilコマンドを使って調べる方法を紹介する。

このコマンドは、操作マスタの状態確認だけでなく、障害発生時に必要となる操作マスタの強制移動やActive Directoryの各種メンテナンス作業でも使用する。今回はひとまず、状態確認の方法だけ解説しよう。なお、以下の解説で「入力する」とある場合、最後に[Enter]キーを押す操作まで含む。

  1. コマンドプロンプトを実行して、「ntdsutil」と入力する
  2. 「ntdsutil:」というプロンプトを表示する。そこで「Roles」と入力する
  3. プロンプトが「fsmo maintenance:」に変化する。これは、ntdsutilコマンドのモード(コンテキストと呼んでいる)が切り替わったことを意味している
  4. 「connections」と入力して、対象となるドメイン、あるいはドメインコントローラに接続する指示を行う。
  5. プロンプトが「server connections:」に変化するので、そこで「connect to domain <ドメインDNS名>」または「connect to domain <ドメインコントローラのDNS名>」と入力する。ドメインを対象に指定した場合、当該ドメインを構成するドメインコントローラをどれか1台、自動的に指定して接続する。
  6. 「\<ドメインコントローラのDNS名> に結合しています...」というメッセージを表示する。続いて、接続に成功すると「ローカルでログオンしているユーザーの資格情報を使って \<ドメインコントローラのDNS名> に接続しました。」と表示する。
  7. 「quit」と入力して、元のコンテキストへ戻る。プロンプトも「fsmo maintenance:」に戻る。
  8. 「Select operation target」と入力する。プロンプトが「select operation target:」に変化する。
  9. 「List roles for connected server」と入力する。この操作により、FSMOの機能ごとに、それぞれどのサーバが受け持っているかを表示する。このとき、LDAP識別名で表示する点に注意したい。
  10. 「quit」を3回続けて入力すると、コンテキストから順に元に戻り、最後にntdsutilコマンドそのものを終了する。