Миграция Active Directory: переносим домен на новые контроллеры без простоя
Привет! Меня зовут Семёнов Евгений Сергеевич, и я руковожу компанией АйТи Фреш. За мои 15 лет в администрировании AD я лично провёл больше 30 миграций. Представляете, это были проекты самых разных масштабов: от небольших офисов на 25 пользователей до огромных многосайтовых холдингов, где учётных записей было до 1500! И знаете, что я вам скажу честно? Миграция домена — это такая задачка, где примерно половина всех проектов терпит неудачу. Причём дело не всегда в сложности, гораздо чаще админы просто упускают из виду или перепрыгивают через по-настоящему критичные шаги. Этот гайд как раз для того, чтобы показать вам правильный порядок действий. В нём я не только поделюсь инструкцией, но и покажу реальный кейс переноса с Server 2012 R2 на Server 2022 для холдинга, в котором работало 400 пользователей.
Зачем вообще мигрировать AD
Поводов сменить контроллеры домена обычно три, и они часто наслаиваются друг на друга:
- End of support текущей версии Windows Server. Windows Server 2012 R2 ушёл в Extended Support End в октябре 2023 года, расширенные платные обновления заканчиваются в октябре 2026. Server 2016 в Mainstream Support до января 2027. То есть прямо сейчас актуальная цель миграции — Windows Server 2022.
- Замена железа. HP ProLiant Gen8/Gen9, на которых обычно стоят DC, морально устарели, выпускаются перебои с запчастями. Проще закупить новые серверы и сразу поднять на них свежий Windows.
- Переход в виртуализацию или в новый дата-центр. Старый DC физический, новые — виртуальные на кластере Hyper-V/VMware. Это требует не только переустановки, но и пересмотра топологии сайтов.
Когда миграция выполнена правильно, это прямо-таки находка! Вы разом избавляетесь и от устаревшего железа, и от старой ОС, да ещё и всех тех «косяков», что накопились в схеме за долгие годы. Но вот если что-то пойдёт не так… Ох, это беда! Могут запросто пропасть GPO, куда-то исчезнуть DNS-зоны, сломаться репликация. И потом вы будете буквально две недели выслушивать от пользователей панические крики: «У меня файлы пропали!»
Архитектурные решения перед стартом
Прежде чем что-то делать, садимся и решаем четыре вопроса:
- Сколько новых DC нужно? Минимум два для отказоустойчивости. Для крупных распределённых сетей — один на сайт плюс RODC в филиалах.
- Каков целевой функциональный уровень домена и леса? Для Windows Server 2022 — рекомендуется уровень Windows Server 2016 (новых уровней Microsoft с 2016 года не выпускала). Поднимать имеет смысл только если все DC уже на 2016+.
- Где будут размещены новые DC и какие у них IP? Желательно те же IP, что у старых, но не обязательно. На IP опираются клиенты с жёстко прописанными DNS — их потом проще не переконфигурировать.
- Какая стратегия миграции SYSVOL? Если ваш домен раньше работал на FRS (репликация SYSVOL до Server 2008), нужно сначала перейти на DFSR через утилиту dfsrmig. Без этого новый Server 2022 откажется становиться DC.
Шаг 1. Аудит текущего состояния домена
Перед тем как вообще что-либо начать трогать, обязательно сделайте полный снимок текущего состояния вашей системы. Считайте, что это будет ваш главный лог, к которому вы станете возвращаться после завершения каждого шага:
# Версия и функциональный уровень
Get-ADForest | Select-Object Name, ForestMode, SchemaMaster, DomainNamingMaster
Get-ADDomain | Select-Object Name, DomainMode, PDCEmulator, RIDMaster, InfrastructureMaster
# Все DC в домене
Get-ADDomainController -Filter * | Select-Object Name, OperatingSystem, Site, IPv4Address
# Состояние репликации
repadmin /replsummary
repadmin /showrepl * /csv | Out-File "C:\Audit\repl-before.csv"
# Проверка SYSVOL — DFSR или FRS?
dfsrmig /getmigrationstate
# Проверка ошибок репликации
Get-ADReplicationFailure -Target * -Scope Server | Select-Object Server, Partner, FailureCount, FirstFailureTime, LastError
Если на этом этапе у вас уже есть ошибки репликации, lingering objects или незавершённая миграция SYSVOL — миграцию запускать НЕЛЬЗЯ. Сначала чиним. Иначе все проблемы переедут на новые DC и умножатся.
Шаг 2. Подготовка схемы — adprep
Сначала нам нужно расширить схему AD, чтобы она была готова к новой версии Windows. Для этого используем команду Adprep. Запускать её будем прямо с установочного носителя свежей версии Windows Server — того самого ISO-образа Server 2022. Важный момент: заходим локально под учётной записью Schema Admin (она же является членом группы Enterprise Admins) на наш текущий Schema Master:
# С монтированного ISO Server 2022, в каталоге support\adprep
.\adprep.exe /forestprep
# Через 5-15 минут
.\adprep.exe /domainprep
# Если планируете в будущем readonly DC
.\adprep.exe /domainprep /gpprep
.\adprep.exe /rodcprep
После adprep — ждём минимум час и проверяем репликацию схемы по всем сайтам:
repadmin /showrepl * /csv | Out-File "C:\Audit\repl-after-adprep.csv"
repadmin /replsummary
Если есть ошибки репликации схемы — стоп, разбираемся, без полной репликации новые DC не поднимутся.
Шаг 3. Установка первого нового контроллера домена
Теперь берём наш новенький сервер с Windows Server 2022 — неважно, физический он или виртуальный — и проводим минимальную, но важную подготовку. Задаём ему имя, прописываем статический IP, а затем вводим его в домен. И только после этого приступаем к установке роли AD DS:
# Установка роли
Install-WindowsFeature AD-Domain-Services -IncludeManagementTools
# Промоушн в DC
Install-ADDSDomainController `
-DomainName "corp.example.ru" `
-SiteName "MainOffice" `
-InstallDns:$true `
-ReplicationSourceDC "DC01.corp.example.ru" `
-DatabasePath "D:\NTDS" `
-LogPath "D:\NTDS\Logs" `
-SysvolPath "D:\SYSVOL" `
-SafeModeAdministratorPassword (Read-Host -AsSecureString "DSRM password") `
-Force:$true
Сервер перезагрузится. После этого — критическая часть: проверяем, что репликация со старыми DC прошла полностью:
repadmin /showrepl
repadmin /replsummary
dcdiag /v /c | Out-File "C:\Audit\dcdiag-newdc1.txt"
В выводе dcdiag не должно быть failures. Если есть — фиксим прежде, чем поднимать второй новый DC.
Шаг 4. Установка второго и последующих DC
После того как первый новый DC прошёл все проверки и реплицируется со старыми, поднимаем второй (и последующие) той же командой Install-ADDSDomainController. Источником репликации лучше указывать первый новый DC — так снизим нагрузку на старые серверы.
Через 24 часа после ввода всех новых DC — обязательный полный мониторинг репликации:
Get-ADReplicationFailure -Scope Forest |
Select-Object Server, Partner, FailureCount, LastError |
Format-Table -AutoSize
Get-ADReplicationPartnerMetadata -Target * -Scope Server |
Select-Object Server, Partner, LastReplicationSuccess, LastReplicationResult
Если LastReplicationSuccess для каждой пары старше 1 часа — есть проблема, разбираемся.
Шаг 5. Перенос FSMO-ролей
FSMO (Flexible Single Master Operations) — это пять ролей, которые в каждый момент времени могут быть только на одном DC. Перед понижением старых DC переносим все пять на новые. Удобнее всего — через PowerShell, одной командой:
Move-ADDirectoryServerOperationMasterRole `
-Identity "NEWDC01" `
-OperationMasterRole SchemaMaster, DomainNamingMaster, PDCEmulator, RIDMaster, InfrastructureMaster `
-Confirm:$false
Проверяем, что все роли уехали:
Get-ADForest | Select-Object SchemaMaster, DomainNamingMaster
Get-ADDomain | Select-Object PDCEmulator, RIDMaster, InfrastructureMaster
netdom query fsmo
Все пять ролей должны указывать на новый DC. Дальше — критично: ждём минимум 24 часа реальной работы с переносом нагрузки на новые DC. Если за сутки ничего не сломалось, идём дальше.
Шаг 6. Перенаправление DNS-клиентов
Имейте в виду: самый распространённый корень всех зол после миграции — это, конечно же, клиенты, у которых DNS-серверы прописаны вручную! Если ваш DHCP сейчас раздаёт IP-адреса старых DC в качестве DNS-серверов, то не забудьте поменять опции 6 (DNS Servers) на новые DC. А если у вас есть устройства со статически назначенными IP-адресами — например, серверы или какие-то специфичные клиенты — то их придётся править руками, никуда не денешься.
# Изменение DHCP scope option
Set-DhcpServerv4OptionValue -ComputerName "DHCP01" `
-OptionId 6 -Value "10.0.0.10","10.0.0.11" -ScopeId 10.0.0.0
# Проверка форвардеров на DNS-серверах
Get-DnsServerForwarder
Get-DnsServerZone -Name "corp.example.ru"
Если хотите минимизировать риски — старые DC можно временно оставить как DNS-серверы (без роли DC), пока все клиенты не получат новые настройки.
Шаг 7. Корректное понижение старых DC
Как только убедились, что все роли успешно перенесены, репликация работает как часы, а DNS переключён куда надо — самое время приступить к понижению старых DC. Делаем это на каждом старом контроллере, строго по очереди:
Uninstall-ADDSDomainController `
-DemoteOperationMasterRole `
-RemoveDnsDelegation:$false `
-LocalAdministratorPassword (Read-Host -AsSecureString "Local admin password") `
-Force
Сервер перезагрузится в режим member server. На этом этапе можно его выключить или вывести из домена окончательно.
После понижения проверяем, что метаданные в AD очистились:
Get-ADDomainController -Filter * | Select Name, IPv4Address
nltest /dclist:corp.example.ru
repadmin /showrepl
dcdiag /v
Если старый DC присутствует в выводе или есть ошибки — выполняем metadata cleanup через ntdsutil или утилиту Remove-ADDomainController -Identity "OLDDC01" -ForceRemoval с другого DC.
Шаг 8. Финальные проверки и повышение функционального уровня
После того как все старые DC выведены, делаем последний контрольный обход:
# Все DC только новые?
Get-ADDomainController -Filter * | Select Name, OperatingSystem
# Репликация чистая?
Get-ADReplicationFailure -Scope Forest
# DCDIAG?
dcdiag /v /c | Select-String "failed"
# DNS чистый?
Get-DnsServerResourceRecord -ZoneName "corp.example.ru" -RRType A |
Where-Object {$_.HostName -eq "@"}
Если всё чисто — можем поднимать функциональный уровень домена и леса:
Set-ADDomainMode -Identity "corp.example.ru" -DomainMode Windows2016Domain
Set-ADForestMode -Identity "corp.example.ru" -ForestMode Windows2016Forest
Помните: повышение функционального уровня необратимо, понизить нельзя. Делать это имеет смысл только когда вы уверены, что все DC новые.
Реальный кейс: холдинг 400 пользователей с Server 2012 R2 на Server 2022
Расскажу вам про один наш кейс. В январе 2026 года к нам, в АйТи Фреш, обратился крупный промышленный холдинг — они занимаются производством стройматериалов. У них был центральный офис в Москве и ещё два региональных — в Московской и Тверской областях. Инфраструктура такая: домен крутился на Server 2012 R2, было 4 контроллера, порядка 400 пользователей, 60 GPO и 230 групп безопасности. Их главная задача звучала так: нужно было переехать на Server 2022, и самое главное — чтобы пользователи вообще не почувствовали никакого простоя.
Работы мы спланировали на 5 рабочих дней:
- День 1. Полный аудит. Нашли 14 lingering objects, 3 ошибки репликации между сайтами, незавершённую миграцию SYSVOL с FRS на DFSR (висела с 2018 года). Всё починили.
- День 2. Adprep, ввод двух новых DC в центральном офисе. Проверка репликации.
- День 3. Ввод двух RODC в региональных офисах через VPN-канал. Перенос FSMO-ролей на центральные новые DC.
- День 4. Перевод DHCP-опций на новые DNS-серверы. Сутки наблюдения за нагрузкой и поведением клиентов.
- День 5. Понижение старых DC по очереди. Финальные проверки. Повышение функционального уровня до Server 2016.
И что вы думаете? За все пять дней — ни одного обращения в саппорт от пользователей! Это ли не успех? Был, правда, один совсем небольшой инцидент: на 3 серверах, где IP старых DC были прописаны статически, застряли кеши DNS. Но это легко решилось: мы сделали ipconfig /flushdns, перезагрузили, и всё тут же заработало.
Стоимость работ — 280 000 руб. за полный цикл. Заодно мы выгрузили в архив 67 неактивных учёток, которые HR подтвердил как уволенных, и удалили 14 устаревших GPO. А бонусом провели аудит безопасности и составили план дальнейшей закалки домена (FGPP, AD Recycle Bin, аудит входов).
Типичные ошибки при миграции и как их избежать
Что я регулярно вижу в чужих миграциях, которые приходится «спасать»:
- Пропуск adprep. Промоушн нового DC падает с криптической ошибкой про объекты схемы. Лечится только запуском adprep — но если уже что-то наполовину поломали, чинить сложнее.
- Понижение старого DC до переноса FSMO. Если PDC Emulator уехал в небытие, домен встанет: остановится синхронизация времени, упадёт Kerberos, пароли перестанут меняться.
- Старый DC в DHCP scope option 6. После выключения старых DC клиенты с устаревшим DHCP-адресом DNS не могут резолвить домен — массовые жалобы «всё пропало».
- Игнорирование DFSR migration. Server 2019/2022 отказывается становиться DC, если SYSVOL ещё на FRS. Нужно полностью перейти на DFSR через
dfsrmig /setglobalstate 3с пятью этапами проверки. - Выключение старого DC без demote. Метаданные остаются в AD, репликация бесконечно пытается достучаться, в логах warnings. Очистка через ntdsutil metadata cleanup.
- Lingering objects. Объекты, которые были удалены на одном DC, но не удалены на другом из-за длительного отсутствия репликации. Лечатся через
repadmin /removelingeringobjects.
Сделаем миграцию AD без боли и простоев
Я лично провёл больше 30 миграций доменов — от 25 до 1500 пользователей. Полный цикл: аудит, план, развёртывание новых DC, перенос FSMO, корректное понижение старых, финальные проверки и обучение вашего штатного админа. Бесплатное обследование инфраструктуры за 2 часа на месте, фиксированный бюджет проекта без неожиданностей.
Телефон: +7 903 729-62-41
Telegram: @ITfresh_Boss
Семёнов Евгений Сергеевич, директор АйТи Фреш
FAQ — частые вопросы по миграции AD
- Можно ли мигрировать AD без простоя для пользователей?
- Да. Современная миграция выполняется в горячем режиме: новые DC поднимаются параллельно со старыми, после полной репликации FSMO-роли и DNS переводятся на новые, старые корректно понижаются. Пользователи не замечают переключения.
- Сколько времени занимает миграция домена 400 пользователей?
- Полный цикл — 2–4 рабочих дня: подготовка схемы (adprep), развёртывание двух новых DC, проверка репликации 24–48 часов, перевод FSMO, понижение старых DC. На крупных доменах с несколькими сайтами — до недели.
- Зачем нужен adprep и что он делает?
- Adprep расширяет схему AD под новую версию Windows Server, добавляя необходимые атрибуты и классы. Запускается один раз с носителя новой версии Windows на текущем Schema Master перед вводом первого нового DC. Без adprep новый DC не сможет подняться в существующем домене.
- Какие FSMO-роли надо переносить и как?
- Пять ролей: Schema Master, Domain Naming Master, RID Master, PDC Emulator, Infrastructure Master. Перенос — командой Move-ADDirectoryServerOperationMasterRole или ntdsutil. Сначала переносим, проверяем работу 24 часа, только потом понижаем источник.
- Что будет, если просто выключить старый DC без понижения?
- Останутся метаданные в AD, репликация будет пытаться достучаться до несуществующего сервера, в логах посыпятся ошибки KCC. В DNS останутся SRV-записи. Очистка через ntdsutil metadata cleanup — обязательная процедура.
