Samba DCのレプリケーションの設定

Linux

はじめに

耐障害性を高めるために、SambaでDomain Controllerでレプリケーションを構築します。
Sambaで未実装のSysVolのレプリケーションは、別記事に記載します。

Joining a Samba DC to an Existing Active Directory - SambaWiki

環境

- 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

2台目のDCの設定

固定IPアドレスに変更

DHCPに関連するパッケージを削除します。

sudo apt purge isc-dhcp-common isc-dhcp-client

/etc/network/interfacesを編集します。

source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback

allow-hotplug eno1
#iface eno1 inet dhcp
auto eno1
iface eno1 inet static
  address 192.168.1.2
  netmask 255.255.255.0
  gateway xx.xx.xx.xx
  dns-domain xx.xx.xx
  dns-nameservers xx.xx.xx.xx

/etc/resolv.confを編集します。
1台目のDCから検索するように設定します。

search xx.xx.xx
nameserver 192.168.1.1
nameserver 127.0.0.1

パッケージのインストール

sudo apt install samba krb5-user winbind smbclient ntp ntpdate

NTPの設定

時刻を合わせます。

sudo systemctl stop ntp
sudo ntpdate -B ntp.nict.jp
sudo systemctl start ntp

NTPが動作しているか確認します。
同期まで少し時間がかかります。

ntpq -np

サービスを無効化する

不要なサービスを無効化します。

sudo systemctl stop smbd nmbd winbind
sudo systemctl disable smbd nmbd winbind
sudo systemctl daemon-reload

krb5.confのコピー

1台目のDCで生成されたkrb5.confの内容をコピーします。
1台目のDCの名前を2台目のDCの名前(omega)に修正します。

 [libdefaults]
        default_realm = ND.SOMEDOMAIN
        dns_lookup_realm = false
        dns_lookup_kdc = true

 [realms]
ND.somedomain = {
        default_domain = nd.somedomain
}

 [domain_realm]
        omega = ND.SOMEDOMAIN

2台目のDCを参加させる

ND.SOMEDOMAINは、1台目のDCを作成したときに設定したRealmです。
「–option=’idmap_ldb:use rfc2307 = yes’」は非推奨なので設定しません。

Setting up RFC2307 in AD - SambaWiki
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を指定します。

1台目のDCと同様に、
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

自動実行の設定

OSの起動時にDaemonが実行するように設定します。

sudo systemctl unmask samba-ad-dc
sudo systemctl enable samba-ad-dc
sudo systemctl start samba-ad-dc
sudo systemctl status samba-ad-dc
sudo systemctl daemon-reload

動作確認

FSMO(Flexible Single Master Operation)が1台目のDCになっていること、レプリケーションが動作していることを確認します。

sudo samba-tool fsmo show
sudo samba-tool drs showrepl

FSMOの移行

FSMOを1台目のDCから2台目のDCに移行したい場合は、以下のコマンドを移行先(2台目のDC)で実行します。

sudo samba-tool fsmo transfer --role=all -U administrator

sudo samba-tool fsmo show
sudo samba-tool drs showrepl

1台目のDCの/etc/resolv.conf

DNSをSAMBA_INTERNALにしているため、以下の設定では「apt update; apt upgrade」を実行すると失敗します。
apt updateを行う際は、外部DNSを「nameserver 192.168.1.2」の上に記述する必要があります。
「apt update; apt upgrade」の実行後は外部DNSをコメント、または最下段に移動して優先度を下げないとレプリケーションに失敗します。

search xx.xx.xx
nameserver 192.168.1.2
nameserver 127.0.0.1

同期漏れなど

sysvolディレクトリはレプリケーションしないのでrsyncを使って同期させます。
このことからFSMOのDCでユーザ追加などの操作を行った方が安心です。

SysVol replication (DFS-R) - SambaWiki

Comments