Samba SysVol replication

folder_replicationВ настоящее время Samba AD не поддерживает репликацию SysVol. Для реализации этой важно функции в среде, состоящей из нескольких контроллеров домена, можно использовать скрипт синхронизации osync

Настройка репликации SysVol будет производиться на контроллерах, настроенных по этим статьям:

Samba Active Directory domain controller
Joining a Samba DC to an Existing Active Directory

Osync производит синхронизацию через SSH соединение с использованием SSH ключей. Инициатором подключения будет выступать пользователь root на DC1, соответственно генерацию SSH ключей нужно производить из под его учетной записи. Для повышения прав административного пользователя до root, с использованием домашнего каталога root, нужно выполнить команду

$ sudo -i

Если SSH сервер не установлен на контроллерах, нужно установить его командой

# apt install ssh

На первичном контроллере DC1 нужно сгенерировать SSH ключи командой

# ssh-keygen -t rsa

На все вопросы жмем Enter.

В целях безопасности пользователь root не имеет пароля, который понадобится для передачи открытого ключа на контроллер DC2. Установим временно пароль для пользователя root на контроллере DC2

# passwd root

По умолчанию пользователю root запрещено подключаться по SSH с использованием пароля. Выключим временно это ограничение на DC2

# nano /etc/ssh/sshd_config

. . .
#PermitRootLogin prohibit-password
PermitRootLogin yes
. . .

Перезапустим службу SSH

# service ssh reload

Теперь можно передать открытый ключ на контроллер DC2, для этого на контроллере DC1 выполним команду

# ssh-copy-id -i ~/.ssh/id_rsa.pub root@DC2

После успешной передачи открытого ключа, заблокируем пароль пользователя root на контроллере DC2

# passwd -l root

и запретим подключение по SSH с использованием пароля

# nano /etc/ssh/sshd_config

. . .
PermitRootLogin prohibit-password
. . .

Перезапустим службу SSH

# service ssh reload

Попробуем подключится к DC2, используя SSH ключи

root@dc1:~# ssh DC2
. . .
root@dc2:~# exit
выход
Connection to dc2 closed.
root@dc1:~#

Скачаем архив, содержащий текущую версию скрипта osync, и распакуем его

# cd /usr/src/
# wget https://github.com/deajan/osync/archive/v1.2.tar.gz
# tar xzvf v1.2.tar.gz

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

# cd osync-1.2/
# bash ./install.sh

Скопируем конфигурационный файл osync и изменим значения некоторых ключей

# cp /etc/osync/sync.conf.example /etc/osync/sync.conf
# nano /etc/osync/sync.conf
. . .
INSTANCE_ID="sync_sysvol"                                     # Идентификатор задания синхронизации.                                         
INITIATOR_SYNC_DIR="/var/lib/samba/sysvol"                    # Расположение папки sysvol на DC1. 
TARGET_SYNC_DIR="ssh://root@dc2:22//var/lib/samba/sysvol/"    # Расположение папки sysvol на DC2.
SSH_RSA_PRIVATE_KEY="/root/.ssh/id_rsa"                       # Расположение закрытого SSH ключа на DC1.  
PRESERVE_ACL=yes                                              # Сохранять ACL. 
PRESERVE_XATTR=yes                                            # Сохранять Xattr.
DESTINATION_MAILS="alert@4skill.ru"                           # Почтовый ящик для оповещений на случай ошибки синхронизации. 
REMOTE_RUN_AFTER_CMD="/usr/bin/samba-tool ntacl sysvolreset"  # Сброс ACL на значения по умолчанию на sysvol, расположенной на DC2.
. . .

Для работы почтовых оповещений нужно установить пакет mailutils

# apt install mailutils

Выполним тестовый запуск

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

Если все прошло успешно, можно убрать ключ —dry и выполнить первую синхронизацию

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

Добавим задание в планировщик

crontab -e 
*/5 * * * *     /usr/local/bin/osync.sh /etc/osync/sync.conf --silent

Дополнительную информацию по настройке репликации на основе osync можно найти на странице официального руководства в разделе Bidirectional Rsync/osync based SysVol replication workaround.

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *