Samba DCのレプリケーションの障害復旧

Linux

はじめに

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の設定を記述することは非推奨なのでコメントします。

Setting up RFC2307 in AD - SambaWiki
Configuring Winbindd on a Samba AD DC - SambaWiki
 [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の設定を記述することは非推奨なのでコメントします。

Setting up RFC2307 in AD - SambaWiki
Configuring Winbindd on a Samba AD DC - SambaWiki
 [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