rsyncとxinetdを使ったSambaのSysVolレプリケーション

Linux

はじめに

Sambaで未実装のSysVolのレプリケーションについてです。
Samba WikiにはSamba DCのみの構成で使える3種類の方法が記載されています。
今回はrsyncとxinetdを使った方法を試します。
この方法は、常時rsyncのdaemonが動作しないので負荷がかかりません。

SysVol replication (DFS-R) - SambaWiki
Rsync based SysVol replication workaround - SambaWiki

注意

rsyncのコピーは一方向なので、ユーザー操作などのグループポリシー操作は必ず1台目のDC(FSMO)で行う必要があります。

環境

- Debian bullseye 64bit
    - Samba 4.13.13+dfsg-1~deb11u5
    - xinetd 1:2.3.15.3-1+b1
    - rsync 3.2.3-4+deb11u1
- 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

1台目(FSMO)のDCの設定

1台目(FSMO:192.168.1.2)の設定です。
必要なものをインストールします。

sudo apt install xinted rsync

xinetdの設定を行います。

cd /etc/xinetd.d

sudo vi /etc/xinetd.d/rsync

内容は以下となります。

service rsync
{
  disable         = no
  only_from       = 192.168.1.2/24  <-- 2台目のDCのIPアドレス
  socket_type     = stream
  wait            = no
  user            = root
  server          = /usr/bin/rsync
  server_args     = --daemon
  log_on_failure += USERID
}

/etc/hostsの設定

名前解決のため、2台目のDCのIPを/etc/hostsに記載します。

sudo vi /etc/hosts

内容は以下となります。

192.168.1.2    omega.somedomain    omega

rsyncのパスワード

rsyncのパスワードを記載します。

sudo vi /etc/samba/rsyncd.secret

rsyncのパスワードを記載します。
MyPassWordは平文のパスワードです。

sysvol-replication:MyPassWord

rootだけが閲覧できるようにパーミッションを設定します。

sudo chmod 600 /etc/samba/rsyncd.secret

rsyncd.confの設定

2台目のDCからrsyncで指定するための設定ファイルを作成します。

sudo vi /etc/rsyncd.conf

内容は以下となります。
「SysVol」が2台目のDCからrsyncで指定する文字列です。

 [SysVol]
path = /var/lib/samba/sysvol/
comment = Samba Sysvol Share
uid = root
gid = root
read only = yes
auth users = sysvol-replication
secrets file = /etc/samba/rsyncd.secret

Daemonの再起動

xinetdを再起動します。

sudo systemctl restart xinetd

sudo systemctl status xinetd

2台目のDCの設定

rsyncをインストールして、パスワードを設定します。

sudo apt install rsync

sudo vi /etc/samba/rsyncd.secret
内容は以下となります。
1台目のDCで、/etc/samba/rsyncd.secretに設定したパスワードのみを記載します。
[bash]
MyPassWord

rootだけが閲覧できるようにパーミッションを設定します。

sudo chmod 600 /etc/samba/rsyncd.secret

コマンドのテスト

1台目のDCから2台目のDCにsysvolをコピーできるかテストします。
「–dry-run」を指定すると、実際にはコピーしません。
「192.168.1.1」は1台目のDCのIPアドレスです。

sudo rsync --dry-run -XAavz --delete-after --password-file=/etc/samba/rsyncd.secret rsync://sysvol-replication@192.168.1.1/SysVol/ /var/lib/samba/sysvol/

cronの設定

2台目のDCでcronを使って定期的にコピーするようにします。

sudo crontab -e

5分ごとにコピーするように設定します。

*/5 * * * * sudo rsync -XAavz --delete-after --password-file=/etc/samba/rsyncd.secret rsync://sysvol-replication@192.168.1.1/SysVol/ /var/lib/samba/sysvol/

Comments