はじめに
耐障害性を高めるために、SambaでDomain Controllerでレプリケーションを構築します。
Sambaで未実装のSysVolのレプリケーションは、別記事に記載します。
環境
- 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’」は非推奨なので設定しません。
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の設定を記述することは非推奨なのでコメントします。
[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でユーザ追加などの操作を行った方が安心です。
Comments