# Настройка синхронизации времени в домене ###### tags: `Windows` `Server` `CLI` `TIME` `NTP` --- ## ==ВВЕДЕНИЕ== Синхронизация времени в домене может (теоретически) работать сама, безо всяких настроек. Выглядит это обычно так: Компьютеры домена и серверы синхронизируют свое время с контроллерами домена (с ближайшими к ним). Контроллеры домена синхронизируют свое время с контроллером домена, которому назначена FSMO роль PDC (в терминах windows 2000 - "первичный контроллер домена"). Контроллер домена (КД) с ролью PDC синхронизирует время с внешним источником. А дальше - начинаются ньюансы: Если контроллер домена виртуальный, в настройках виртуальной машины должна быть выключена синхронизация времени [с хостом]. Иначе (если, к примеру, хост с виртуальными машинами - в домене): виртуальный контроллер домена будет (автоматически) синхронизировать время с хостом, а хост - с ближайшим контроллером домена, т.е. со своей виртуалкой. Если синхронизация времени уже настроена (вручную или через групповые политики) то задаваемые Вами новые настройки могуть не примениться (несмотря на сообщение successful во всех командах) и тогда потребуется полный сброс настроек синхронизации времени на проблемных компьютерах или контроллерах домена. ## ==Проверка работоспособности синхронизации времени в домене== ### ==Показать список всех контроллеров домена (с которыми может выполняться синхронизация времени).== :::info :information_source: Может быть выполнена на любом компьютере (или контроллере) домена. ::: ```bash= w32tm /monitor ``` > Для каждого контроллера домена в поле "NTP:" отображает разницу во времени с PDC контроллером домена (который является источником для синхронизации времени во всём домене). > Для каждого контроллера домена в поле "RefID:" отображается информация об источнике синхронизации времени для этого контроллера домена. > **Для всех контроллеров домена (кроме КД с ролью PDC) это должен быть либо другой контроллер домена, либо КД с ролью PDC.** ### ==Показать источник синхронизации времени== :::info :information_source: Может быть выполнена на любом компьютере или контроллере домена. ::: ```bash= w32tm /query /Source ``` или ```bash= w32tm /query /peers ``` > Показывает источник для синхронизации времени (с каким компьютером синхронизируется время того компьютера, на котором запущена эта команда). > Для любых компьютеров/серверов это должен быть один из контроллеров домена, для любого контроллера домена (кроме PDC) это должен быть другой КД (обычно - с ролью PDC), для КД с ролью PDC это должен быть внешний источник синхронизации времени (интернет). > Если в результатах выполнения команды отобразилось сообщение "VM IC Time Synchronization Provider" - значит, эта виртуальная машина синхронизируется с хостом виртуализации. Если эта виртуальная машина - один из контроллеров домена, такую настройку следует изменить! ### ==Выводит все настройки службы времени windows для текущего компьютера.== :::info :information_source: Может быть выполнена на любом компьютере или контроллере домена. ::: ```bash= w32tm /query /Configuration /verbose ``` > Убедитесь, что в результатах выполнения команды на всех компьютерах и контроллерах домена (кроме PDC) в разделе [TimeProviders] поле Type имеет значение NT5DS. Если это не так, настройки синхронизации на таких компьютерах надо исправлять (как - см. далее). > Если у Вас Windows 2003, то Вы не можете выполнить эту команду. Вместо этого Вы можете посмотреть параметры конфигурации службы времени в реестре: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters, в частности параметр Type. ### ==Отображет состояние синхронизации (в т.ч. источник синхронизации, время и статус последней синхронизации) для компьютера, на котором выполняется.== :::info :information_source: Может быть выполнена на любом компьютере или контроллере домена. ::: ```bash= w32tm /query /status /verbose ``` > Опция "/verbose" дает более подробную информацию. ### ==Сравнивает время (и отображает разницу во времени) на текущем компьютере с компьютером, указанном в аргументе /computer.== :::info :information_source: Компьютер-источник для сравнения времени может быть как в интернете, так и в локальном домене. ::: ```bash= w32tm /stripchart /computer:"<computername>" /samples:3 /dataonly ``` :::warning :eye: **ПРИМЕР:** ```bash= w32tm /stripchart /computer:"ntp.org" /samples:3 /dataonly ``` ```bash= w32tm /stripchart /computer:"dc1.domain.local" /samples:3 /dataonly ``` ::: ## ==Как исправить настройки синхронизации времени== ### Настройка синхронизации времени на компьютерах и контроллерах домена (кроме КД с ролью PDC) 1. **Найдите все групповые политики**, изменяющие настройки синхронизации времени, и **отключите такие политики**. Через групповые политики служба времени настраивается здесь: `gpedit.msc => "Computer Configuration" => "Administrative Templates" => "System" => "Windows Time Service" => "Time Providers".` Проверьте, что политики синхронизации времени не применяются, для этого можно выполнить команду: ```bash= gpresult /R ``` 2. **Проверьте, что на всех виртуальных машинах - контроллерах домена отключена синхронизация времени с хостами виртуализации.** 3. **Обновите конфигурацию** на всех проблемных компьютерах / контроллерах домена (кроме КД с ролью PDC): ```bash= w32tm /config /syncfromflags:DOMHIER /update ``` 4. **Выполните принудительную синхронизацию времени**, дав команду заново найти источники синхронизации времени: ```bash= w32tm /resync /rediscover ``` 5. Если вышеуказанные действия не помогают, **перезагрузите службу времени** (на проблемных компьютерах) ```bash= net stop w32time net start w32time ``` и заново выполните пункты 3 и 4. 6. Если вышеуказанные действия не помогли решить проблему с синхронизацией времени, **необходима перерегистрация службы времени на проблемных компьютерах** (и повторная настройка параметров). ```bash= net stop w32time w32tm /unregister w32tm /register net start w32time ``` ### Настройка синхронизации времени на контроллере домена с ролью PDC Настройки времени на КД с ролью PDC принципиально отличаются от настроек на всех остальных компьютерах в домене (включая остальные контроллеры домена). PDC является источником времени во всём домене, именно его время будет использовано (прямо или косвенно - через другие контроллеры домена) всеми остальными компьютерами. Если контроллер домена с ролью PDC - виртуальная машина, убедитесь, в настройках этой виртуальной машины отключена синхронизациия времени с хостом, на котором она находится! Убедитесь, что групповые политики синхронизации времени во всем домене (если они у Вас есть) не применяются к КД с ролью PDC! У этого компьютера источник времени - в интернете, и тип синхронизации времени (в отличие от всего остального домена) не NT5DS, а NTP! Если есть сомнения в том, что синхронизация времени на КД с ролью PDC выполняется правильно, проще всего выполнить перерегистрацию и повторную настройку службы времени. Перерегистрация службы времени на контроллере домена с ролью PDC Для отмены регистрации и повторной регистрации службы времени выполните следующие команды: ```bash= net stop w32time w32tm /unregister w32tm /register net start w32time ``` Настройка синхронизации времени на контроллере домена с ролью PDC Наш КД с ролью PDC необходимо настроить на синхронизацию с внешним источником (в интернете). Для этой цели не подходит тип синхронизации NT5DS и синхронизации в соответствии с иерархией домена (DOMHIER). Поэтому на нашем КД с ролью PDC мы используем тип синхронизации NTP и синхронизация будет настроена вручную (MANUAL). Источники синхронизации (peers) указываются в кавычках, а если таких источников несколько, то они перечисляются через запятую. Кроме того, мы даем указание считать данный источник синхронизации (КД с ролью PDC) надежным источником времени (reliable): ```bash= w32tm /config /syncfromflags:manual /manualpeerlist:"0.pool.ntp.org, 1.pool.ntp.org, 2.pool.ntp.org" /reliable:yes /update ``` Теперь можно ускорить применение параметров и синхронизацию времени, перезагрузив службу времени и форсировав синхронизацию: ```bash= net stop w32time net start w32time w32tm /resync /force или w32tm /resync /rediscover ``` После выполнения этих команд (сделав паузу в несколько минут на применение параметров и выполнение синхронизации) сравните время на контроллере домена с временем в интернете: ```bash= w32tm /stripchart /computer:"0.ru.pool.ntp.org" /samples:3 /dataonly ``` Не забудьте проверить, что на всех контроллерах домена время синхронизировалось с PDC. Для этого наберите команду: ```bash= w32tm /monitor ``` Всё должно заработать! P.S.: Обратите внимание, что применение параметров команды w32tm требует времени. Поэтому после каждого обновления конфигурации рекомендуем делать паузу в 1-5 минут, а потом уже проверять, обновилась ли конфигурация службы времени, и как всё работает. Источники информации для данной статьи: https://docs.microsoft.com/en-us/windows-server/networking/windows-time-service/windows-time-service-tools-and-settings https://winitpro.ru/index.php/2011/03/30/sinxronizaciya-vremeni-s-vneshnim-ntp-serverom-v-windows-server-2008-r2/ http://windows.mixed-spb.ru/domain/time_sync.php http://forum.oszone.net/post-523806.html