第852回と第853回でSambaを使ったActive Directory
FSMOロールの転送
第853回で解説したように、ADにはFSMOロールと呼ばれるものが複数あります。DC同士は基本的に対等な関係にありますが、特定の操作で競合・
このFSMOロールは他のDCに転送が可能です。もっとも、FSMOロールを持つDCが正常に稼働している限りは特に転送する必要はありません。しかし、あるFSMOロールを持っているDCをメンテナンスのために停止させる状況やFSMOロールを持つDCが正常に動作してないといった状況ではロールの転送が必要となります。本節ではこれらのシチュエーションを想定して、FSMOロールの転送方法について紹介します。
まず、用語について整理すると、FSMOロールの移動には転送
構成については、前回までに構築した環境を前提とします。
- ドメイン名: example.
com - 1台目のDC
- ホスト名: samba-ad-dc01
- 2台目のDC
- ホスト名: samba-ad-dc02
- 1台目のDC
- OS: Ubuntu Server 24.
04 LTS
操作を始める前に、第853回までの作業が完了した時点でのFSMOロールの所在を確認してみます。次のようにsamba-ad-dc01
がすべてのFSMOロールを持っているはずです。
samba-ad-dc02$ sudo samba-tool fsmo show SchemaMasterRole owner: CN=NTDS Settings,CN=SAMBA-AD-DC01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example,DC=com InfrastructureMasterRole owner: CN=NTDS Settings,CN=SAMBA-AD-DC01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example,DC=com RidAllocationMasterRole owner: CN=NTDS Settings,CN=SAMBA-AD-DC01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example,DC=com PdcEmulationMasterRole owner: CN=NTDS Settings,CN=SAMBA-AD-DC01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example,DC=com DomainNamingMasterRole owner: CN=NTDS Settings,CN=SAMBA-AD-DC01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example,DC=com DomainDnsZonesMasterRole owner: CN=NTDS Settings,CN=SAMBA-AD-DC01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example,DC=com ForestDnsZonesMasterRole owner: CN=NTDS Settings,CN=SAMBA-AD-DC01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example,DC=com
この状態を前提にDC samba-ad-dc01
をメンテナンスのために計画的に停止するというシチュエーションを想定します。この場合、マシンの停止に先立って、DC samba-ad-dc01
が持つFSMOロールを平和的にDC samba-ad-dc02
に転送させたいところです。そのため、FSMOロールを引き受けるsamba-ad-dc02
側で次のコマンドを実行します。
samba-ad-dc02:$ sudo samba-tool fsmo transfer --role=all -U [email protected] ... FSMO transfer of 'rid' role successful FSMO transfer of 'pdc' role successful FSMO transfer of 'naming' role successful FSMO transfer of 'infrastructure' role successful FSMO transfer of 'schema' role successful Password for [[email protected]]: FSMO transfer of 'domaindns' role successful FSMO transfer of 'forestdns' role successful
すべてのFSMOロールの転送が完了したようなので、実際に確認してみます。
samba-ad-dc02$ sudo samba-tool fsmo show SchemaMasterRole owner: CN=NTDS Settings,CN=SAMBA-AD-DC02,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example,DC=com InfrastructureMasterRole owner: CN=NTDS Settings,CN=SAMBA-AD-DC02,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example,DC=com RidAllocationMasterRole owner: CN=NTDS Settings,CN=SAMBA-AD-DC02,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example,DC=com PdcEmulationMasterRole owner: CN=NTDS Settings,CN=SAMBA-AD-DC02,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example,DC=com DomainNamingMasterRole owner: CN=NTDS Settings,CN=SAMBA-AD-DC02,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example,DC=com DomainDnsZonesMasterRole owner: CN=NTDS Settings,CN=SAMBA-AD-DC02,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example,DC=com ForestDnsZonesMasterRole owner: CN=NTDS Settings,CN=SAMBA-AD-DC02,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example,DC=com
確かにsamba-ad-dc02
にすべてのFSMOロールが転送されています。なお、第853回で構成したようなSYSVOLフォルダの同期をおこなっている場合は適宜同期を止めるなどの対応が別途必要です。
また、一部のFSMOロールだけ転送する場合には--role
オプションで転送したいロールを指定できます。--role
オプションに指定できる内容はsamba-tool fsmo transfer --help
で確認できます。
samba-ad-dc02$ samba-tool fsmo transfer --help Usage: samba-tool fsmo transfer [options] Transfer the role. Options: ... --role=ROLE The FSMO role to seize or transfer. rid=RidAllocationMasterRole schema=SchemaMasterRole pdc=PdcEmulationMasterRole naming=DomainNamingMasterRole infrastructure=InfrastructureMasterRole domaindns=DomainDnsZonesMasterRole forestdns=ForestDnsZonesMasterRole all=all of the above You must provide an Admin user and password.
このようにFSMOロールを持っているDCが利用可能な場合は転送できます。しかし、障害等でDCが利用できない場合には押収が必要となります。
そのため、次はsamba-ad-dc02
で問題が発生し、DCとして動作できないというシチュエーションを想定します。この場合、DC samba-ad-dc02
は利用不可なので転送はおこなえず、すべてのFSMOロールをDC samba-ad-dc01
が押収することになります。
それでは具体的に見ていきます。まずは、疑似障害を起こすために、DC samba-ad-dc02
をシャットダウンします。
samba-ad-dc02$ sudo poweroff
OSがシャットダウンしてもFSMOロールはDC samba-ad-dc02
が持ったままで転送されていません。また、DC samba-ad-dc02
が動作していないため、転送によるFSMOロールの移動はうまくいきません。
samba-ad-dc01$ sudo samba-tool fsmo show SchemaMasterRole owner: CN=NTDS Settings,CN=SAMBA-AD-DC02,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example,DC=com InfrastructureMasterRole owner: CN=NTDS Settings,CN=SAMBA-AD-DC02,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example,DC=com RidAllocationMasterRole owner: CN=NTDS Settings,CN=SAMBA-AD-DC02,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example,DC=com PdcEmulationMasterRole owner: CN=NTDS Settings,CN=SAMBA-AD-DC02,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example,DC=com DomainNamingMasterRole owner: CN=NTDS Settings,CN=SAMBA-AD-DC02,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example,DC=com DomainDnsZonesMasterRole owner: CN=NTDS Settings,CN=SAMBA-AD-DC02,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example,DC=com ForestDnsZonesMasterRole owner: CN=NTDS Settings,CN=SAMBA-AD-DC02,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example,DC=com samba-ad-dc01:~$ sudo samba-tool fsmo transfer --role=all -U [email protected] ... ERROR: Transfer of 'rid' role failed: Failed FSMO transfer: WERR_HOST_UNREACHABLE
仕方がないので押収します。
$ sudo samba-tool fsmo seize --role=all -U [email protected] ... Attempting transfer... Transfer unsuccessful, seizing... Seizing rid FSMO role... FSMO seize of 'rid' role successful Attempting transfer... Transfer unsuccessful, seizing... Seizing pdc FSMO role... FSMO seize of 'pdc' role successful Attempting transfer... Transfer unsuccessful, seizing... Seizing naming FSMO role... FSMO seize of 'naming' role successful Attempting transfer... Transfer unsuccessful, seizing... Seizing infrastructure FSMO role... FSMO seize of 'infrastructure' role successful Attempting transfer... Transfer unsuccessful, seizing... Seizing schema FSMO role... FSMO seize of 'schema' role successful Attempting transfer... Failed to connect to ldap URL 'ldap://703255c4-6c27-4329-b5d4-1b92ac7219d2._msdcs.example.com' - LDAP client internal error: NT_STATUS_HOST_UNREACHABLE Failed to connect to 'ldap://703255c4-6c27-4329-b5d4-1b92ac7219d2._msdcs.example.com' with backend 'ldap': LDAP client internal error: NT_STATUS_HOST_UNREACHABLE Transfer unsuccessful, seizing... Seizing domaindns FSMO role... FSMO seize of 'domaindns' role successful Attempting transfer... Failed to connect to ldap URL 'ldap://703255c4-6c27-4329-b5d4-1b92ac7219d2._msdcs.example.com' - LDAP client internal error: NT_STATUS_HOST_UNREACHABLE Failed to connect to 'ldap://703255c4-6c27-4329-b5d4-1b92ac7219d2._msdcs.example.com' with backend 'ldap': LDAP client internal error: NT_STATUS_HOST_UNREACHABLE Transfer unsuccessful, seizing... Seizing forestdns FSMO role... FSMO seize of 'forestdns' role successful
押収が完了しました。
なお、出力から確認できる通り、samba-tool fsmo seize
で押収をおこなうよう指示した場合でも、まずは転送が試みられます。冒頭で述べた通り、押収は強制的に実施されて、動作に影響の出るリスクがありますので、まずは転送を試すという動きになっていると考えられます。
とはいえ、繰り返しになりますが押収は最後の手段です。いくら押収前に転送が試されるとしても、いきなり押収する、というのは避けて、転送できるよう手を尽くしてからのほうがいいでしょう[2]。
DCの降格
DCとして動作しているマシンをドメインのDCから除外できます。この操作を降格
今回は、DC samba-ad-dc02
を降格させるというシチュエーションを想定して進めます。
まずは現在のDCの状況を確認してみましょう。
samba-ad-dc02:~$ sudo samba-tool computer list --full-dn CN=SAMBA-AD-DC02,OU=Domain Controllers,DC=example,DC=com CN=SAMBA-AD-DC01,OU=Domain Controllers,DC=example,DC=com
当然ですが、ドメインコントローラーが2台見えています。それではいよいよDC samba-ad-dc02
を降格させます。
メンテナンスや機器の入れ替え等で計画的にDCを降格させる場合は降格させるDC自身から操作をおこないます。
samba-ad-dc02$ sudo samba-tool domain demote -U [email protected] ... Using samba-ad-dc01.example.com as partner server for the demotion Password for [[email protected]]: ... Demote successful
うまく降格できました。実際、samba-ad-dc02
というマシンはドメインコントローラーでなくなったことが確認できます。
samba-ad-dc01$ sudo samba-tool computer list --full-dn CN=SAMBA-AD-DC01,OU=Domain Controllers,DC=example,DC=com CN=SAMBA-AD-DC02,CN=Computers,DC=example,DC=com
DCから降格させたらsamba-ad-dc.
を停止・
samba-ad-dc02$ sudo systemctl disable samba-ad-dc --now
ただし、samba-ad-dc02
はDCから降格しただけで、メンバーコンピューターとしては残っています[3]。もし、降格したDCを再度DCとして復帰させたい
samba-ad-dc02$ sudo rm /var/lib/samba/private/ -rf # 以下、構築時の手順を再実施する
降格させたい理由が障害などでDCが操作不能となったためということもあります。この場合は、降格させるDC以外からsamba-tool domain demote
コマンドを--remove-other-dead-server
オプション付きで実行します。そうすることで、操作不能となったDCも降格させられます。
samba-ad-dc01$ sudo samba-tool domain demote --remove-other-dead-server=samba-ad-dc02
なお、この方法ではコンピューターオブジェクトも削除されます。
今回はSamba AD DCの基本的な取り扱い方を中心に解説しましたが、本来、ADはそれだけで一大技術領域をなすトピックです。実際に利用してみる場合は、Sambaの公式WikiやSambaが