Настройка DFSR для репликации SYSVOL

«Эллес» реализует протокол DFS Replication (DFSR) для синхронизации содержимого каталога SYSVOL с контроллерами домена Microsoft Active Directory Domain Services (AD DS).

DFSR в «Эллес»

DFSR (Distributed File System Replication) — многопоточный событийно-ориентированный протокол Microsoft для репликации файлов в домене, включая общие папки SYSVOL (GPO, скрипты) и NETLOGON (скрипты входа).

«Эллес» реализует ключевые компоненты DFSR:

  • автоматическое создание и управление объектами LDAP: группами репликации (msDFSR-ReplicationGroup), участниками (msDFSR-Member), подписками (msDFSR-Subscription) и глобальными настройками (msDFSR-GlobalSettings) при первом запуске службы;

  • обработка RPC-запросов службы репликации файлов (FRSTRANS) через серверную часть dfsr_join;

  • сканирование файловой системы SYSVOL, вычисление SHA1-хешей файлов с учетом ACL и потоков данных, управление версионными векторами (VV) и их хранение в базе данных;

  • разрешение конфликтов на основе комбинации fence, атрибутов, временной метки изменения файла (clock), UID и GVSN; при равенстве предыдущих критериев побеждает файл с более поздней временной меткой;

    Рассинхронизация системных часов между участниками может привести к тому, что файл с более ранним содержимым будет принят как «последний», что влечет за собой необратимую потерю данных.
  • автоматическое присоединение к группе репликации SYSVOL при включении dfsrsrv:sysvol_join = true (по умолчанию) и наличии корректной топологии в домене.

Репликация выполняется по протоколу, описанному в MS-FRS2 (DFSR), с использованием в качестве транспорта DCE/RPC.

Настройка работы «Эллес» в роли контроллера домена с DFSR

Для настройки DFSR на контроллере домена «Эллес»:

  1. Добавьте в конфигурационный файл «Эллес» /app/inno-samba/etc/smb.conf параметры:

    [global]
        ...
        server services = +dfsr +dfsr_join
        dcerpc endpoint servers = +frstrans
        ...

    Описание параметров:

    • server services добавляет в список сервисов:

      • dfsr — клиентская часть DFSR (обработка входящих обновлений);

      • dfsr_join — серверная часть DFSR (обработка RPC-запросов, управление LDAP, инициализация топологии);

    • dcerpc endpoint servers — добавляет в список конечных точек DCE/RPC серверную реализацию RPC-интерфейса FRSTRANS, который необходим для приема входящих запросов репликации от других контроллеров домена.

    Также на работу DFSR влияет параметр dfsrsrv:sysvol_join, который включает автоматическое создание объектов DFSR в LDAP и инициализацию локальной репликации SYSVOL при первом запуске службы. При включении этого параметра служба автоматически создает недостающие объекты DFSR в LDAP, если они отсутствуют. Данный параметр включен по умолчанию: dfsrsrv:sysvol_join = true.
  2. Перезапустите службу inno-samba:

    sudo systemctl restart inno-samba
  3. Проверьте, что службы DFSR запущены:

    sudo systemctl status inno-samba

    Служба inno-samba в «Эллес» объединяет все серверные компоненты, включая DFSR. Убедитесь, что служба активна и работает без ошибок. Для более детальной проверки можно просмотреть логи:

    journalctl -u inno-samba -n 50 --no-pager

    Если функциональность DFSR включена, то при старте inno-samba в логах должны появляться сообщения вида:

    • Adding ourselves as a member of sysvol replication group;

    • Subscribing ourselves to sysvol replication group;

    • dfsrsrv: Periodic run pid …​.

    Это подтверждает, что модуль DFSR инициализирован, создал необходимые объекты в LDAP и работает в составе inno-samba.

  4. Убедитесь, что в домене созданы объекты DFSR. Примеры проверок:

    • поиск объекта группы репликации DFSR с именем "Domain System Volume" и проверка его типа:

      ldbsearch -H ldap://elles-dc.example.com -Y GSSAPI -b "CN=DFSR-GlobalSettings,CN=System,DC=example,DC=com" "(objectClass=msDFSR-ReplicationGroup)" name msDFSR-ReplicationGroupType

      Вывод должен содержать запись с name: Domain System Volume и msDFSR-ReplicationGroupType: 1, что подтверждает наличие корректно созданной группы репликации.

    • поиск объекта набора содержимого (ContentSet) для SYSVOL:

      ldbsearch -H ldap://elles-dc.example.com -Y GSSAPI -b "CN=DFSR-GlobalSettings,CN=System,DC=example,DC=com" "(objectClass=msDFSR-ContentSet)" name msDFSR-FileFilter

      Вывод должен содержать запись с name: SYSVOL Share и msDFSR-FileFilter: ~,.TMP,*.BAK, что подтверждает наличие корректной подписки на репликацию файлов SYSVOL с фильтром исключений.

    • поиск участников группы репликации в топологии:

      ldbsearch -H ldap://elles-dc.example.com -Y GSSAPI -b "CN=Topology,CN=Domain System Volume,CN=DFSR-GlobalSettings,CN=System,DC=example,DC=com" "(objectClass=msDFSR-Member)" name serverReference msDFSR-ComputerReference

      Вывод должен содержать запись с name: elles-dc.EXAMPLE.COM, serverReference — ссылкой на NTDS Settings этого контроллера и msDFSR-ComputerReference — ссылкой на соответствующий ему объект компьютера в OU "Domain Controllers". Это подтверждает, что «Эллес» успешно интегрирован в DFSR-инфраструктуру.

  5. Проверьте доступность общих папок NETLOGON и SYSVOL с клиентов AD DS:

    dir \\elles-dc.example.com\NETLOGON
    dir \\elles-dc.example.com\SYSVOL

Проверка репликации

Для проверки репликации:

  1. На контроллере домена AD DS запустите командную строку (CMD) от имени администратора домена и создайте тестовый файл:

    echo "Test from AD DS" > %TMP%\test.txt
    move /Y %TMP%\test.txt \\win-dc.example.com\NETLOGON
  2. На контроллере домена «Эллес» проверьте, что файл реплицирован:

    cat /app/inno-samba/var/locks/sysvol/example.com/scripts/test.txt
    Новые файлы обрабатываются с интервалом 60 секунд. Поэтому файл становится доступен через какое-то время.
  3. На контроллере домена «Эллес» создайте тестовый файл:

    echo "Test from Elles" > /app/inno-samba/var/locks/sysvol/example.com/scripts/test2.txt
  4. На контроллере домена AD DS проверьте, что файл реплицирован:

    type \\elles-dc.example.com\NETLOGON\test2.txt
    Новые файлы обрабатываются с интервалом 60 секунд. Поэтому файл становится доступен через какое-то время.

Обновлено: