Плановая передача (Transfer) ролей FSMO в Active Directory

Active Directory без FSMO-ролей — как оркестр без дирижёра. Формально музыканты на месте, но кто даст отмашку — непонятно.

FSMO (Flexible Single Master Operations) — это пять специальных ролей, которые в AD выполняют операции, требующие единственного авторитетного источника. Нельзя, чтобы два контроллера одновременно выдавали идентификаторы объектам или вносили изменения в схему — получите конфликты, которые AD не умеет разрешать автоматически. Поэтому Microsoft закрепляет каждую такую операцию за конкретным DC.

По умолчанию все пять ролей достаются первому контроллеру домена. Это нормально для старта, но в реальной инфраструктуре ситуация меняется: серверы устаревают, появляются новые мощные машины, меняется топология сети. И тогда возникает задача — перенести роли на другой контроллер, не уронив при этом Active Directory.

Именно это мы и разберём: как передать роли FSMO штатно, без ошибок и последствий — через графический интерфейс, PowerShell или ntdsutil.

Быстрая передача ролей FSMO через PowerShell

Если нужно быстро передать все 5 ролей FSMO на другой контроллер домена, откройте PowerShell от имени администратора и выполните:

Move-ADDirectoryServerOperationMasterRole -Identity DC02 -OperationMasterRole 0,1,2,3,4

Где DC02 — имя нового контроллера домена. После выполнения проверьте результат командой netdom query fsmo.

Нужна пошаговая инструкция с GUI? Читайте Способ 1 ниже.
Предпочитаете ntdsutil? Переходите к Способу 3.

Содержание скрыть
  1. Transfer ≠ Seize — не перепутайте
  2. Что такое роли FSMO и когда их передавать
  3. Способ 1: Передача ролей FSMO через GUI
    1. PDC Emulator, RID Master, Infrastructure Master
    2. Domain Naming Master
    3. Schema Master
  4. Способ 2: Передача ролей FSMO через PowerShell (рекомендуется)
    1. Передача всех 5 ролей одной командой
    2. Передача конкретной роли (с именем вместо номера)
    3. Рекомендуемый порядок передачи ролей
    4. Скрипт с проверкой репликации перед передачей
    5. Проверка результата
  5. Способ 3: Передача ролей FSMO через ntdsutil
  6. Частые ошибки и их решение
    1. «Операция не может быть выполнена»
    2. «Не удалось подключиться к серверу»
    3. Кнопка «Изменить» неактивна в GUI
    4. «Access Denied» при выполнении команды
    5. Передача ролей по FQDN — известный баг
  7. Best Practices
  8. Итог
  9. FAQ
    1. Какие права нужны для передачи ролей FSMO?
    2. Можно ли передать роли без остановки служб?
    3. Сколько времени занимает передача?
    4. Можно ли передать роли обратно?
    5. Нужна ли перезагрузка после передачи?
    6. Что будет если все 5 ролей на одном DC?

Transfer ≠ Seize — не перепутайте

Transfer (передача) — штатная, плановая операция. Оба контроллера домена работают, репликация идёт нормально. Старый DC отдаёт роли и продолжает работать как рядовой контроллер.

Move-ADDirectoryServerOperationMasterRole -Identity DC02 -OperationMasterRole 0,1,2,3,4

Seize (захват) — аварийная операция, когда старый контроллер физически недоступен (сгорел, удалён из гипервизора, не поднимается). Вы принудительно забираете роли. Именно для этого случая добавляется -Force:

Move-ADDirectoryServerOperationMasterRole -Identity DC02 -OperationMasterRole 0,1,2,3,4 -Force

Под капотом командлет сначала всё равно пытается сделать graceful transfer. Если старый DC не отвечает — выполняет seize.

-Force не означает «сделать быстро» — он означает «захватить принудительно, если transfer невозможен».

🔴 Никогда не применяйте Seize, если старый DC ещё жив. Если сделаете Seize, а потом старый контроллер вернётся в сеть — получите split-brain, разрушение репликации и потенциальную потерю данных в AD. После Seize старый DC нужно немедленно изолировать от сети и вывести из домена.

В этой статье разбирается только Transfer — плановая передача между работающими серверами.

Что такое роли FSMO и когда их передавать

В Active Directory существует 5 ролей FSMO (Flexible Single Master Operations):

РольУровеньФункция
Schema MasterЛесУправление схемой AD — структурой классов и атрибутов объектов
Domain Naming MasterЛесДобавление и удаление доменов в лесу
PDC EmulatorДоменСинхронизация времени, обработка Kerberos, блокировки аккаунтов
RID MasterДоменВыдача пулов RID контроллерам для создания объектов AD
Infrastructure MasterДоменОбновление ссылок на объекты между доменами леса

Типичные сценарии передачи ролей:

  • Вывод старого DC из эксплуатации — перед demotion передайте роли
  • Плановое обслуживание — обновление железа или ОС контроллера с ролями
  • Оптимизация архитектуры — роли леса должны быть в главном сайте
  • Перераспределение нагрузки между контроллерами

Способ 1: Передача ролей FSMO через GUI

GUI — наглядный способ, но роли разбросаны по трём разным оснасткам.

PDC Emulator, RID Master, Infrastructure Master

Оснастка: Active Directory — пользователи и компьютеры (dsa.msc)

  1. Откройте dsa.msc
  2. Правой кнопкой на корне домена → Хозяева операций
  3. Перейдите на нужную вкладку (RID / Инфраструктура / Эмулятор PDC)
  4. Если нужно подключиться к другому DC: правой кнопкой на корне домена → Подключиться к контроллеру домена…
  5. Нажмите Изменить → подтвердите передачу → ОК

Важно для Infrastructure Master: не переносите эту роль на контроллер, который является Global Catalog сервером, если в домене есть DC без роли GC. Исключение — все DC в домене являются GC (типично для Single-domain forest).

Domain Naming Master

Оснастка: Active Directory — домены и доверие (domain.msc)

  1. Откройте domain.msc
  2. Правой кнопкой на Active Directory — домены и доверие (верхний элемент дерева) → Хозяин операций
  3. Нажмите Изменить → подтвердите передачу

Schema Master

Оснастка схемы по умолчанию не зарегистрирована в системе.

Шаг 1: Зарегистрируйте snap-in (CMD от администратора): regsvr32 schmmgmt.dll

Должно появиться: «DllRegisterServer в schmmgmt.dll успешно выполнен».

Шаг 2: Добавьте оснастку в MMC:

  1. Win + R → mmc → Enter
  2. Файл → Добавить или удалить оснастку
  3. Найдите Схема Active Directory → Добавить → ОК
  4. Подключитесь к DC, который сейчас держит роль Schema Master
  5. Правой кнопкой на Схема Active Directory → Хозяин операций → Изменить

Сохраните консоль как .msc-файл — не придётся регистрировать DLL повторно.

Способ 2: Передача ролей FSMO через PowerShell (рекомендуется)

Требования: модуль ActiveDirectory (входит в RSAT или устанавливается на Server с ролью AD DS).

Передача всех 5 ролей одной командой

Move-ADDirectoryServerOperationMasterRole -Identity DC02 -OperationMasterRole 0,1,2,3,4

Маппинг номеров ролей:

  • 0 = PDCEmulator
  • 1 = RIDMaster
  • 2 = InfrastructureMaster
  • 3 = SchemaMaster
  • 4 = DomainNamingMaster

Передача конкретной роли (с именем вместо номера)

# Только PDC Emulator
Move-ADDirectoryServerOperationMasterRole -Identity DC02 -OperationMasterRole PDCEmulator

# Несколько ролей
Move-ADDirectoryServerOperationMasterRole -Identity DC02 -OperationMasterRole PDCEmulator,RIDMaster

Рекомендуемый порядок передачи ролей

Если переносите по одной — соблюдайте этот порядок:

  1. RID Master
  2. PDC Emulator
  3. Infrastructure Master
  4. Domain Naming Master
  5. Schema Master (последним — наиболее критична)

Скрипт с проверкой репликации перед передачей

# Проверяем репликацию перед передачей
$replStatus = repadmin /showrepl
if ($replStatus -match "error") {
    Write-Warning "Обнаружены ошибки репликации. Исправьте их перед передачей ролей."
    exit
}

$newDC = "DC02"
$roles = @("RIDMaster","PDCEmulator","InfrastructureMaster","DomainNamingMaster","SchemaMaster")

foreach ($role in $roles) {
    Write-Host "Передаём роль: $role" -ForegroundColor Cyan
    Move-ADDirectoryServerOperationMasterRole -Identity $newDC -OperationMasterRole $role -Force -Confirm:$false
    Write-Host "Роль $role успешно передана" -ForegroundColor Green
}

Проверка результата

# Роли уровня домена
(Get-ADDomain).PDCEmulator
(Get-ADDomain).RIDMaster
(Get-ADDomain).InfrastructureMaster

# Роли уровня леса
(Get-ADForest).SchemaMaster
(Get-ADForest).DomainNamingMaster

# Все разом (классика)
netdom query fsmo

Способ 3: Передача ролей FSMO через ntdsutil

ntdsutil работает на всех версиях Windows Server и не требует установленного модуля RSAT. Используйте его, когда PowerShell-модуль ActiveDirectory недоступен (например, Server Core без RSAT).

ntdsutil
roles
connections
connect to server DC02.yourdomain.local
q
transfer rid master
transfer pdc
transfer infrastructure master
transfer naming master
transfer schema master
q
q

После каждой команды transfer … утилита запросит подтверждение — нажимайте Yes.

После connect to server обязательно введите q перед командами transfer — иначе получите ошибку «не подключён к серверу».

Частые ошибки и их решение

«Операция не может быть выполнена»

Причина: проблемы с репликацией AD.

repadmin /showrepl
repadmin /replsummary

Исправьте ошибки репликации, затем передавайте роли.

«Не удалось подключиться к серверу»

Причина: проблемы с DNS.

nslookup DC02.yourdomain.local

Убедитесь, что оба DC резолвят имена друг друга через корпоративный DNS.

Кнопка «Изменить» неактивна в GUI

Причина: вы подключены не к тому контроллеру.

Решение: правой кнопкой на корне домена → «Подключиться к контроллеру домена…» → выберите DC, который сейчас держит роль.

«Access Denied» при выполнении команды

Причина: недостаточно прав. Для передачи ролей домена нужно членство в группе Domain Admins.

Для Schema Master и Domain Naming Master — членство в Schema Admins и Enterprise Admins соответственно.

Передача ролей по FQDN — известный баг

Если вы указываете полное имя контроллера домена (FQDN) напрямую в -Identity, команда упадёт с ошибкой. Это задокументированный баг командлета.

Не работает:

Move-ADDirectoryServerOperationMasterRole -Identity "DC02.corp.contoso.com" -OperationMasterRole 0,1,2,3,4

Правильно — сначала получить объект через Get-ADDomainController:

$DC = Get-ADDomainController -Identity "DC02.corp.contoso.com"
Move-ADDirectoryServerOperationMasterRole -Identity $DC -OperationMasterRole 0,1,2,3,4

Если используете короткое имя (DC02) — дополнительный шаг не нужен, команда работает напрямую.

Best Practices

  • Проверьте репликацию перед началом: repadmin /showrepl должна показывать успешную репликацию между всеми DC
  • Передавайте в рабочее время — чтобы можно было мониторить процесс
  • Infrastructure Master ≠ Global Catalog — не совмещайте, если есть DC без роли GC
  • После передачи PDC Emulator проверьте службу времени: w32tm /query /status
  • Документируйте изменения — запишите дату, источник и целевой DC

Итог

Передача ролей FSMO — рутинная операция, но цена ошибки здесь высокая: неработающая аутентификация, сломанная репликация, недоступный домен. Поэтому важно делать всё осознанно, а не по наитию.

Запомните главное:

Transfer — это не Seize. Если старый контроллер жив и отвечает, вы делаете плановую передачу. Seize применяется только когда сервер мёртв и уже не вернётся. Перепутать эти два режима — значит гарантированно получить проблемы.

Перед передачей — проверьте репликацию. Роли нельзя нормально передать между контроллерами, которые не синхронизированы. repadmin /showrepl должен быть чистым.

Infrastructure Master не живёт рядом с Global Catalog — если в домене есть DC без роли GC. Это не рекомендация, это требование архитектуры AD.

После передачи — всегда проверяйте результат через netdom query fsmo или PowerShell. Не доверяйте сообщению «операция завершена» — убедитесь сами.

Из трёх инструментов для повседневной работы оптимален PowerShell: одна команда, скриптуется, логируется, воспроизводима. GUI подойдёт, если нужно показать процесс наглядно. ntdsutil — когда модуль RSAT недоступен или нужен низкоуровневый контроль.

Если после переноса что-то пошло не так — не паникуйте. Роли FSMO можно передать обратно в любой момент, операция полностью обратима. Главное — не трогать Seize, пока старый сервер в сети.

FAQ


Какие права нужны для передачи ролей FSMO?

Domain Admins — для ролей домена (PDC, RID, Infrastructure). Enterprise Admins + Schema Admins — для ролей леса (Domain Naming Master, Schema Master).

Можно ли передать роли без остановки служб?

Да, передача — онлайн-операция. Пользователи не заметят изменений.

Сколько времени занимает передача?

1–2 минуты на роль через PowerShell. Через GUI — 10–15 минут из-за ручных кликов.

Можно ли передать роли обратно?

Да, операция полностью обратима, количество переносов не ограничено.

Нужна ли перезагрузка после передачи?

Нет. Роли начинают работать на новом контроллере немедленно.

Что будет если все 5 ролей на одном DC?

Это допустимо и является конфигурацией по умолчанию в новых доменах. Риск — единая точка отказа. Рекомендуется разнести хотя бы PDC Emulator на отдельный DC в production-среде.

Тимлид команды системных администраторов Windows-инфраструктуры с 20-летним опытом. Специализация: сопровождение серверов Windows, Active Directory, Hyper-V, PowerShell-автоматизация, мониторинг.