Сегодня речь пойдет о некоторых особенностях настройки службы времени на виртуальных контроллерах домена. Обычно схема синхронизации времени в домене Active Directory выглядит следующим образом:
• Все рядовые сервера и рабочие станции синхронизируют свое время с ближайшим доступным контроллером домена;
• Все контроллеры домена синхронизируются с контроллером, которому принадлежит роль PDC-эмулятор;
• PDC-эмулятор является главным источником времени в домене и поэтому должен быть настроен на синхронизацию с надежным внешним источником времени.
Например так выглядят настройки времени на нашем виртуальном контроллере домена. Как видите, на нем с помощью групповых политик настроена синхронизация с внешним источником pool.ntp.org.
Однако если проверить текущий источник времени, то можно довольно сильно удивиться, т.к. в качестве источника выступает непонятная сущность с названием VM IC Time Synchronization Provider.
Дело в том, что по умолчанию виртуальные машины Hyper-V синхронизируют свое время с хостом, причем вне зависимости от настроек службы времени внутри машины. В результате может получиться довольно странная ситуация, когда хост является членом домена и синхронизируется с контроллером, который в свою очередь является виртуальной машиной и синхронизируется с хостом.
Для того, чтобы избежать подобной ситуации, для виртуальных контроллерах домена необходимо отключить синхронизацию времени с хостом. Сделать это можно двумя способами.
Способ первый — отключить синхронизацию в свойствах ВМ. Для этого надо в оснастке Hyper-V Manager открыть свойства виртуальной машины, перейти в раздел «Integration Services» и снять галку с пункта «Time synchronization».
Или то же самое с помощью PowerShell. Например такой командой выведем состояние службы для ВМ:
Get-VMIntegrationService -VMName SRV1 -Name ″Time synchronization″
А такой отключим синхронизацию:
Get-VMIntegrationService -VMName SRV1 -Name ″Time synchronization″ | Disable-VMIntegrationService
Способ второй — отредактировать реестр внутри виртуальной машины. Для отключения синхронизации надо выставить значение 0 для параметра Enabled, находящегося в разделе HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\VMICTimeProvider.
Эту настройку можно произвести из командной строки, выполнив команду:
reg add HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\VMICTimeProvider /v Enabled /t reg_dword /d 0
После отключения синхронизации любым из описанных способов необходимо хорошенько пнуть службу времени, чтобы она перестроилась на новый источник. На контроллере домена с ролью PDC-emulator необходимо рестартовать службу и запустить синхронизацию:
net stop w32time & net start w32time
w32tm /resync /force
На остальных контроллерах дополнительно надо выполнить команду:
w32tm/config /syncfromflags:DOMHIER /update
Это заставит службу времени выбрать в качестве источника PDC-emulator согласно доменной иерархии. Таким образом мы получим правильную схему синхронизации времени в домене.
Спасибо за интересную статью, но у нас исторически (ещё со времён VMware Server) сложилась другая схема (описанная вами в то время не работала — время на виртуальных машинах синхронизирующихся с точным источником времени «плавало» судя по всему из-за особенностей таймера в виртуальных машинах) при которой имеется два недоменных физических сервера синхронизирующихся с источником точного времени в сети интернет а у же с ними синхронизируются все физические серверы, а уже с физическими серверами синхронизируются все виртуальные машины (серверы, рабочие станции, телефоны,..). Вся логика настроена с помощью GPO (на недоменных устройствах настраивается вручную). Проблем с рассинхронизацией времени не наблюдаем на протяжении уже 10 лет. Может быть кому-то будет полезно.