はじめに
SambaのDomain Controllerでレプリケーションを行っている構成で障害が起こったときの対象方法です。
環境
- Debian bullseye 64bit - Samba 4.13.13+dfsg-1~deb11u5 - Windows Server 2022 Standard - Client - Windows10 Pro - Client
Active Directoryの環境
1台目のDC: beta(FSMOの役割) 192.168.1.1 2台目のDC: omega 192.168.1.2 ドメイン名: ND レルム: ND.somedomain 機能レベル : 2008 R2
故障したのがFSMOのDCだった場合
自動で2台目のDC(192.168.1.2)がFSMOになります。
故障した1台目のDC(192.168.1.1)と同じ名前で、DCに参加させると便利です。
故障した1台目(192.168.1.1)のDCのresolv.confを修正します。
sudo vi /etc/resolv.conf
正常に動作している2台目(192.168.1.2)のDCを最初に参照するように追記します。
これを行わないとKerberosによる認証が行えません。
search xx.xx.xx nameserver 192.168.1.2 nameserver 127.0.0.1
不要なファイルを削除して、DCに参加させます。
ND.SOMEDOMAINは、構築時に設定したRealmです。
sudo rm -f /etc/samba/smb.conf sudo systemctl stop samba-ad-dc sudo rm -fr /var/lib/samba/sysvol/* sudo rm -fr /var/lib/samba/private/* sudo rm -fr /var/lib/samba/*.tdb sudo samba-tool domain join ND.SOMEDOMAIN DC -U administrator --dns-backend=SAMBA_INTERNAL
smb.confの修正
/etc/samba/smb.confを修正します。
dns forwarderは、1台目のDCのIPアドレス、または1台目のDCを作成したときに設定したdns forwarderを指定します。
Active DirectoryのDomain Contorollerではbackendにadおよびridは設定できないので、強制的にtdbになります。
「backend = ad」と設定した場合、testparmを実行すると分かりますが無視されます。
Samba Wikiの「RFC2307 on AD Domain Controllers」項目にあるように「idmap_ldb:use rfc2307 = yes」は非推奨なので設定しません。
また、Samba Wikiの「Identity Mapping on a Samba Domain Controller」項目にあるようにActive DirectoryのDomain Contorollerにはidmapの設定を記述することは非推奨なのでコメントします。
[global] dns forwarder = 192.168.100.2 netbios name = BETA realm = ND.SOMEDOMAIN server role = active directory domain controller workgroup = ND ; idmap config * : backend = tdb ; idmap config * : range = 100000-999999 ; idmap config ND.xxx: backend = ad ; idmap config ND.xxx : range = 1001-99999 ; idmap config ND.xxx: schema_mode = rfc2307 ; idmap config ND.xxx: unix_nss_info = yes ; idmap config ND.xxx: unix_primary_group = yes ; idmap_ldb:use rfc2307 = yes winbind enum users = yes winbind enum groups = yes ; winbind offline logon = yes obey pam restrictions = yes template homedir = /home/%U template shell = /bin/bash [sysvol] path = /var/lib/samba/sysvol read only = No [netlogon] path = /var/lib/samba/sysvol/ND.SOMEDOMAIN/scripts read only = No
故障したのが2台目のDCだった場合
不要なファイルを削除して、DCに参加させます。
故障した2台目のDC(192.168.1.1)と同じ名前で、DCに参加させると便利です。
ND.SOMEDOMAINは、構築時に設定したRealmです。
sudo rm -f /etc/samba/smb.conf sudo systemctl stop samba-ad-dc sudo rm -fr /var/lib/samba/sysvol/* sudo rm -fr /var/lib/samba/private/* sudo rm -fr /var/lib/samba/*.tdb sudo samba-tool domain join ND.SOMEDOMAIN DC -U administrator --dns-backend=SAMBA_INTERNAL
smb.confの修正
/etc/samba/smb.confを修正します。
dns forwarderは、1台目のDCのIPアドレス、または1台目のDCを作成したときに設定したdns forwarderを指定します。
Active DirectoryのDomain Contorollerではbackendにadおよびridは設定できないので、強制的にtdbになります。
「backend = ad」と設定した場合、testparmを実行すると分かりますが無視されます。
Samba Wikiの「RFC2307 on AD Domain Controllers」項目にあるように「idmap_ldb:use rfc2307 = yes」は非推奨なので設定しません。
また、Samba Wikiの「Identity Mapping on a Samba Domain Controller」項目にあるようにActive DirectoryのDomain Contorollerにはidmapの設定を記述することは非推奨なのでコメントします。
[global] dns forwarder = 192.168.100.2 netbios name = OMEGA realm = ND.SOMEDOMAIN server role = active directory domain controller workgroup = ND ; idmap config * : backend = tdb ; idmap config * : range = 100000-999999 ; idmap config ND.xxx: backend = ad ; idmap config ND.xxx: range = 1001-99999 ; idmap config ND.xxx: schema_mode = rfc2307 ; idmap config ND.xxx: unix_nss_info = yes ; idmap config ND.xxx: unix_primary_group = yes ; idmap_ldb:use rfc2307 = yes winbind enum users = yes winbind enum groups = yes ; winbind offline logon = yes obey pam restrictions = yes template homedir = /home/%U template shell = /bin/bash [sysvol] path = /var/lib/samba/sysvol read only = No [netlogon] path = /var/lib/samba/sysvol/ND.SOMEDOMAIN/scripts read only = No
Daemonのリスタート
sudo systemctl restart samba-ad-dc
動作確認
fsmo(Flexible Single Master Operation)が2台目のDCになっていること、レプリケーションが動作していることを確認します。
sudo samba-tool fsmo show sudo samba-tool drs showrepl
Comments