Настройка SysVol репликации на базе RSYNC/OSYNC

Samba AD в настоящее время не поддерживает репликацию Sysvol. Для достижения этой важной функции в мульти-DC, до тех пор, пока она не будет реализована, необходимо использовать альтернативные методы для синхронизации, например решение основанное на RSYNC/OSYNC.

Действия выполняются на всех машинах участвующих в репликации

sudo apt install rsync
whereis rsync
rsync: /usr/bin/rsync /usr/share/rsync

Устанавливаем Osync

cd ~
wget https://github.com/deajan/osync/archive/refs/tags/v1.3.tar.gz --no-check-certificate
mv ./v1.3.tar.gz ./osync_v1.3.tar.gz
tar xvf ./osync_v1.3.tar.gz
cd ./osync-1.3/
sudo bash ./install.sh
sudo nano /etc/ssh/sshd_config
PermitRootLogin yes
sudo systemctl restart ssh
sudo apt install -y ufw
sudo ufw allow ssh

Создаем ключи, чтобы можно было подключаться по SSH без пароля

sudo su
ssh-keygen -t rsa

Следующие действия выполняются на vmdc01

ssh-copy-id -i ~/.ssh/id_rsa.pub root@vmdc02.ladm.lazyadmin.ru
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host 'vmdc02.ladm.lazyadmin.ru (10.0.0.253)' can't be established.
ED25519 key fingerprint is SHA256:blablablaiamsecretkey.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@vmdc02.ladm.lazyadmin.ru's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@vmdc02.ladm.lazyadmin.ru'"
and check to make sure that only the key(s) you wanted were added.

после того как ключ скопирован на машину vmdc02, пробуем подключиться

ssh 'root@vmdc02.ladm.lazyadmin.ru'
Welcome to Ubuntu 24.04.3 LTS (GNU/Linux 6.8.0-79-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

This system has been minimized by removing packages and content that are
not required on a system that users do not log into.

To restore this content, you can run the 'unminimize' command.
root@vmdc02:~#

Подключились. Хорошо. Возвращаемся на vmdc01

exit
sudo cp /etc/osync/sync.conf.example /etc/osync/sync.conf
sudo nano /etc/osync/sync.conf

Меняем следующие строки

INSTANCE_ID="sysvol_sync"

## Directories to synchronize.
## Initiator is the system osync runs on. The initiator directory must be a local path.
INITIATOR_SYNC_DIR="/var/lib/samba/sysvol"

## Target is the system osync synchronizes to (can be the same system as the initiator in case of local sync tasks).
## The target directory can be a local or remote path. 
TARGET_SYNC_DIR="ssh://root@vmdc02.ladm.lazyadmin.ru:22//var/lib/samba/sysvol"

## If the target system is remote, you can specify a RSA key (please use full path).
## If not defined, the default ~/.ssh/id_rsa will be used. See documentation for further information.
SSH_RSA_PRIVATE_KEY="/root/.ssh/id_rsa"

PRESERVE_ACL=true
PRESERVE_XATTR=true
SOFT_DELETE=true
DESTINATION_MAILS="your@email.com"
REMOTE_RUN_AFTER_CMD="/usr/bin/samba-tool ntacl sysvolreset"

Перед запуском сделайте копию sysvol

Пробуем запуститься в тестовом режиме

sudo /usr/local/bin/osync.sh /etc/osync/sync.conf --dry --verbose

Если выполнилось, убираем ключ -dry и запускаем еще раз

Добавляем автоматический запуск по расписанию

sudo apt install -y cron
sudo systemctl start cron
sudo systemctl enable cron
sudo crontab -e
# Silent Osync
#*/5 * * * * /usr/local/bin/osync.sh /etc/osync/sync.conf --silent

# Osync test with output to file
*/1 * * * * /usr/local/bin/osync.sh /etc/osync/sync.conf --verbose >> /var/log/osync_cron_root.log 2>&1