Отключить синхронизацию времени vmware
Ранее, в статье Ошибки проектирования Active Directory, был поднят вопрос о времени. Точное время — гарантия успеха и корректной работы Active Directory Domain Services, но как обеспечить точность времени в среде VMware vSphere? Сегодня об этом практическом вопросе мы и поговорим.
Точный хронометраж — обязательное условие для проектирования служб Active Directory. Время участвует в множестве процессов, которые протекают в ИТ инфраструктуре. Если рассматривать пример служб каталогов, на точном времени завязаны процессы аутентификации и арбитраж репликации. Другим примером может послужить работа SIEM систем. Время для них не менее критично, так как их задача сводится к корреляции событий с различных источников данных. В случае рассинхронизации, контроли информационной безопасности просто не будут работать корректно.
Хронометраж в среде VMware vSphere
Существует расхожее мнение, что среда виртуализации оказывает влияние на механизмы исчисления времени внутри виртуальных машин, другими словами, хронометраж неточен. Погрешности происходят из-за совместного использования физических ресурсов гипервизора виртуальными машинами, которые работают на нем.
Для отслеживания течения времени, используется один из двух методов: подсчет тиков или отсчет времени. При подсчете тиков операционная система использует аппаратное устройство для передачи прерываний через заранее определенный интервал, например, 100 раз в секунду. Далее, отслеживаются эти прерывания или тики, чтобы определить, сколько времени прошло.
В режиме отсчета времени, происходит следующее: после старта системы аппаратное устройство начинает производить хронометраж. При необходимости производится считывание показаний этого счетчика. Системы на базе Windows используют периодический таймер CMOS для доставки прерываний или тиков.
Помимо подсчета времени, операционные системы также должны отслеживать абсолютное время. Когда система запускается, она считывает начальное время CMOS с точностью до секунды и запрашивает по сети данные с NTP сервера для получения более точных результатов. Затем используется один из методов, описанных выше, для измерения хода времени с этого момента.
Опция Synchronize guest time with host
При отставании часов в гостевой ОС, средства интеграции переместят часы в будущее, чтобы часы гостевой ОС и гипервизора совпадали. В обратном случае, когда часы гостевой ОС спешат по сравнению к часам гипервизора, будет начат процесс постепенного замедления времени до полной синхронизации. Синхронизация времени по умолчанию отключена для всех виртуальных машин. Чтобы убедиться в этом, можно проверить пользовательский интерфейс.
Но есть нюанс, даже если синхронизация времени VMware Tools отключена, синхронизация времени выполняется во время запуска гостевой операционной системы и во время некоторых операций обслуживания виртуальной машины на платформе vSphere. К этому интересному нюансу, я обязательно вернуть чуть позже в практической части.
Закладываем правильный фундамент
Чтобы заложить правильный фундамент, нужно выполнить 3 шага:
- Конфигурирвоание времени на хостах ESXi;
- Модификация параметров виртуальной машины с контроллером домена;
- Настройка служб точного времени Windows на самом контроллере домена.
Важно использовать несколько источников одного уровня.
Active Directory в среде виртуализации VMware vSphere
Второй шаг – необходимо добиться условия, при котором время контроллером домена синхронизируется только на моменте старта.
Как уже писалось ранее, есть нюанс в работе VMware Tools. Даже если синхронизация времени отключена, существуют частные случаи, когда это происходит. Например, когда виртуальная машина восстанавливается со снепшота, гибернации или выполняет миграция чрез vMotion.
Для рядовых серверов домена, такое поведение не является критичным ввиду того, что контроллер домена выступает для них источником точного времени. Причем время от него является приоритетнее, чем от ESXi гипервизора. С контроллером домена, держателем FSMO роли PDC эмулятора, оставить дефолтную конфигурацию будет не корректно. Он сам выступает источником точного времени и не должен зависеть от среды виртуализации. В конфигурацию виртуальной машины необходимо добавить следующие строки:
Name | Value |
tools.syncTime | 0 |
time.synchronize.continue | 0 |
time.synchronize.restore | 0 |
time.synchronize.resume.disk | 0 |
time.synchronize.shrink | 0 |
time.synchronize.tools.startup | 0 |
time.synchronize.tools.enable | 0 |
time.synchronize.resume.host | 0 |
Более подробную информацию можно найти в соответствующей KB
Третий шаг – это настройка службы времени Windows (w32tm). На контроллере домена выполняем 3 команды в cmd:
w32tm /config /syncfromflags:manual /manualpeerlist:ntp.time.in.ua (NTP сервера могут быть любыми)
w32tm /config /update
w32tm /resync
Выводы
Время – критический элемент инфраструктуры. На нем завязана работа множества систем, а не только инфраструктуры Active Directory. Но именно Active Directory Domain Services выполняют роль источника точного времени для всей Windows инфраструктуры, что означает необходимость в ее правильной конфигурации.
Сегодня мы поговорим о некоторых особенностях настройки службы времени на виртуализированных контроллерах домена. Как правило, схема синхронизации времени в домене Active Directory выглядит следующим образом:
- Контроллер домена с FSMO ролью эмулятора PDC является основным источником времени в домене AD и синхронизируется с внешним поставщиком точного времени.
- Все остальные контроллеры домена синхронизированы с контроллером, содержащим роль эмулятора PDC
- Все рядовые сервера домена и рабочие станции синхронизируют время с ближайшим контроллером домена.
Однако, если попытаться вывести текущего поставщика времени , неожиданно можно увидеть странный источник времени с именем VM IC Time Synchronization Provider.
w32tm / query / source
Дело в том, что по умолчанию виртуальные машины Hyper-V / VMWare синхронизируют свое время с хостовым гипервизором, в не зависимости от настроек службы времени внутри ВМ. В результате этого может оказаться довольно странная ситуация, когда хост Hyper-V является членом домена AD и синхронизирует время с контроллером домена, который, в свою очередь, является виртуальной машиной и синхронизирован с хостом (рекурсия?!).
Чтобы этого избежать, для контроллеров виртуальных доменов вы должны отключить синхронизацию времени с хостом. Есть два способа сделать это.
То же самое на сервере Hyper-V можно сделать с помощью консоли PowerShell. Например, с помощью этой команды можно получить статус службы синхронизации времени для виртуальной машины:
Get-VMIntegrationService -VMName dc1 -Name ‘Time synchronization’
А следующей командой можно отключить синхронизацию:
Get-VMIntegrationService -VMName dc1 -Name ‘Time synchronization’ | Disable-VMIntegrationService
Если в качестве хоста \виртуализации вы используете VMWare ESXi, вы можете отключить синхронизацию времени с хостом в настройках виртуальной машины.
ВМ->Edit Settings -> вкладка VM Options -> Снимите галку “Synchronize guest time with host”
Либо то же самое действие, но из командной строки:
reg add HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\VMICTimeProvider /v Enabled /t reg_dword /d 0
Кроме того, рекомендуется выполнить следующие настройки
- Изменить период опроса сервера NTP reg add HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient /v SpecialPollInterval /t reg_dword /d 900
- Настроить правильный ответ службы времени на нестандартное изменение времени более чем на 52 часа reg add HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config /v MaxNegPhaseCorrection /t reg_dword 0xFFFFFFFF
После отключения синхронизации с помощью любого из описанных выше методов необходимо перезапустить службу времени w32time, чтобы она перенастроилась на новый источник времени и запустить синхронизацию:
net stop w32time
net start w32time
w32tm /resync /force
На всех остальных DC в AD вы должны дополнительно выполнить команду:
w32tm/config /syncfromflags:DOMHIER /update
Это заставит службу времени выбрать PDC-эмулятор в качестве источника в соответствии с иерархией домена. Таким образом, мы настроим правильную схему синхронизации времени в домене при использовании виртуальных DC.
Читайте также: