Сервер Windows отстаёт на минуты, w32tm показывает источник «Local CMOS Clock», а настройки «принимаются» и не действуют: иерархия времени, перерегистрация службы и политика, которая всё перекрывает

Три истории с одним симптомом: w32tm /query /source отвечает Local CMOS Clock, время расходится на минуты, а команды w32tm /config как будто выполняются, но ничего не меняют.

История 1: политика перекрывает всё. На Windows Server 2019 ни реестр, ни w32tm /config не действовали. Причина: групповая политика раздела «Служба времени Windows» (Конфигурация компьютера → Административные шаблоны → Система → Служба времени Windows) задаёт параметры поверх локальных, и w32tm /config пишет в реестр, который при следующем обновлении политики перезаписывается. Решение (подтверждено): отвязать или отключить эту политику, gpupdate /force, затем перерегистрация службы и настройка вручную. Проверка, есть ли политика: reg query "HKLM\SOFTWARE\Policies\Microsoft\W32Time" /s; наличие ключей означает управление политикой.

История 2: неправильная иерархия в домене. Члены домена отставали на 4–5 минут с ошибкой «no time data was available». Правильная схема: только контроллер с ролью эмулятора PDC синхронизируется с внешним NTP; остальные контроллеры и все машины домена берут время у контроллеров автоматически (NT5DS). Ручной manualpeerlist на рядовых машинах ломает схему. Решение (подтверждено многими): на PDC перерегистрация и настройка внешнего источника, на остальных w32tm /config /syncfromflags:domhier /update.

История 3: запрос к серверу проходит, синхронизация нет. На физическом сервере 2019 w32tm /stripchart показывал ответы внешнего NTP, а /resync не срабатывал. Помогла перерегистрация службы; в обсуждении окончательного ответа не было, но набор команд совпал с двумя другими историями.

Универсальный рецепт для сервера-источника (PDC или одиночный сервер вне домена):

net stop w32time
w32tm /unregister
w32tm /register
net start w32time
w32tm /config /manualpeerlist:"ntp1.example.net,0x8 ntp2.example.net,0x8" /syncfromflags:manual /reliable:yes /update
net stop w32time && net start w32time
w32tm /resync /rediscover
w32tm /query /source
w32tm /query /status

Флаг 0x8 означает клиентский режим (обычно правильный для внешних серверов); 0x1 задаёт специальный интервал опроса. Для машин домена вместо manual использовать /syncfromflags:domhier. AnnounceFlags = 5 в HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config делает PDC надёжным источником для домена.

Для виртуальных машин дополнительно: один источник времени. Если включена синхронизация от гипервизора, гость получает время от хоста и w32tm бесполезен; для контроллеров домена и серверов, требующих точности, интеграцию времени отключают и настраивают NTP, для остальных наоборот. Признак конфликта: источник VM IC Time Synchronization Provider при настроенном manualpeerlist.

Проверка сети. w32tm /stripchart /computer:ntp1.example.net /samples:3 должен показывать смещения; таймауты означают закрытый UDP 123 на брандмауэре площадки или машины.

Служба времени описана в документации Microsoft.