Записки IT специалиста
Синхронизация времени Active Directory с внешним источником
- Автор: Уваров А.С.
- 07.05.2020
Синхронизация времени — важный и во многом достаточно критичный аспект работы Active Directory, особенно сегодня, когда широко используется взаимодействие с внешними системами и работа с сотрудниками, которые могут находиться в различных часовых поясах. Применение систем виртуализации вносит дополнительные особенности, которые также следует учитывать. Поэтому данный вопрос может оказаться не столь простым, как кажется, а синхронизация с внешним источником точного времени становится одной из актуальных задач.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Прежде всего вспомним, как происходит синхронизация времени в Active Directory. В качестве эталона времени выступает контроллер, владеющий ролью эмулятора PDC. Это FSMO-роль и эмулятором PDC может являться только один контроллер в каждом домене. С ним синхронизируют время остальные контроллеры домена. Доменные ПК и рядовые серверы сверяют часы с ближайшим контроллером домена.
Сам эмулятор PDC в качестве источника точного времени может использовать либо аппаратные часы материнской платы, либо внешний источник точного времени, при нахождении в виртуальной среде также может быть использовано время хоста виртуализации.
О последней поговорим более подробно. Раньше все было довольно просто, источником времени в домене обычно служили аппаратные часы эмулятора PDC, ну отстали или убежали на пару минут, в конце концов можно и подвести. Когда добавилось требование взаимодействия с внешними системами критичными к точному времени (например, использующих криптографию), то в качестве источника времени стал выступать внешний сервер. От него получал время эмулятор PDC, с ним синхронизировались контроллеры, а от них точное время расходилось на остальных участников домена.
С приходом виртуализации все изменилось, появился еще один источник времени — время хоста виртуализации. Многие гипервизоры по умолчанию имеют включенной настройку синхронизации времени гостевых систем и при попадании в виртуальную среду контроллера может возникнуть следующая коллизия: контроллер синхронизирует время с хостом, но сам хост, являясь членом домена, в свою очередь синхронизируется с контроллером.
Еще хуже, если в виртуальную среду попадает эмулятор PDC, в силу особенностей таймера виртуальных машин, время внутри может достаточно сильно плавать, поэтому виртуальный эмулятор PDC всегда должен синхронизировать время с внешним источником, а синхронизация времени с хостом должна быть отключена, последнее касается и всех остальных виртуальных членов домена.
Давайте перейдем от теории к практике. Начнем с того, что выясним кто из контроллеров является эмулятором PDC и эталоном времени для домена. Это можно сделать на любом контроллере домена командой:
В выводе будут показаны все хозяева операций, нас интересует только эмулятор PDC.
Затем перейдем на указанный контроллер и узнаем источник времени для него, для этого выполните команду:
Если в выводе вы увидите:
то источником времени являются аппаратные часы. А если там будет:
то вы имеете дело с виртуальной машиной, которая синхронизирует время с хостом.
Данную настройку следует исправить, это можно сделать в настройках виртуальной машины, отключив синхронизацию времени с хостом, либо в самой системе, для этого откройте ветвь реестра:
и установите для параметра Enabled значение 0.
После данного изменения следует перезапустить Службу времени Windows или перезагрузить компьютер.
Следующим шагом будет настройка нашего эмулятора PDC на работу с внешними источниками точного времени. Все изменения также будут вноситься через реестр. Прежде всего изменим тип сервера на NTP, для этого откроем ветку
и для параметра Type укажем строковое значение NTP. А для параметра NtpServer зададим адреса серверов точного времени, после каждого из которых, через запятую укажем 0x8, если мы хотим работать как стандартный NTP-клиент или 0x1 если будем использовать собственные параметры, например:
Параметр Enabled установим в значение 1.
Затем перейдем в
и установим для параметра AnnounceFlags значение A.
Следующие параметры будут работать, только если мы при указании серверов добавили 0x1, иначе будут использоваться настройки, предлагаемые сервером. Чтобы задать период синхронизации откройте ветку
и для параметра SpecialPollInterval укажите десятичное значение в секундах.
и зададим максимальное время опережения и отставания часов, после которых синхронизация производиться не будет. Для этого используются параметры MaxPosPhaseCorrection (опережение) и MaxNegPhaseCorrection (отставание) для которых также следует задать десятичное значение в секундах. По умолчанию стоит 48 часов. Это значит, что если время на эмуляторе PDC уйдет от точного источника более чем на 48 часов в любую сторону, то синхронизация производиться не будет.
Если вы хотите, чтобы время синхронизировалось всегда, то установите в оба параметра шестнадцатеричное значение FFFFFFFF.
Выполнив настройки перезапустите Службу времени Windows, это также можно сделать в командной строке:
После чего еще раз выполним
и убедимся, что источником времени для эмулятора PDC является внешний сервер.
Затем выполним данную команду на рядовых контроллерах домена, в качестве источника времени там должен быть указан эмулятор PDC, и на обычных ПК, где в выводе будет присутствовать любой из контроллеров домена. Обязательно выполните контроль для виртуальных машин, чтобы быть уверенным, что они используют время домена, а не хоста виртуализации.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Дополнительные материалы:
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
Или подпишись на наш Телеграм-канал:
Команда NET TIME вывод текущего времени сервера
NET TIME синхронизирует показания часов компьютера с другим компьютером или доменом. Если используется без параметров в домене Windows Server, выводит текущую дату и время дня, установленные на компьютере, который назначен сервером времени для данного домена. Эта команда позволяет задать сервер времени NTP для компьютера.
Видео: NET TIME — как синхронизировать время с сервером в Windows
Синтаксис команды NET TIME
- net time [<\\имя_компьютера | /domain[:имя_домена] | /rtsdomain[:имя_домена]>] [/set]
- net time [\\имя_компьютера] [/querysntp]
- net time [\\имя_компьютера] [/setsntp[:список_серверов_NTP]], где
- \\имя_компьютера — указывает имя сервера, время на котором нужно проверить или с которым нужно синхронизировать таймер.
- /domain[:имя_домена] — задает имя домена, с которым синхронизируются часы.
- /rtsdomain[:имя_домена] — указывает домен сервера надежного времени (RTS), с которым будут синхронизироваться часы.
- /set — синхронизирует часы с временем указанного компьютера или домена.
- /querysntp — выводит имя сервера NTP (Network Time Protocol), сконфигурированного для локального компьютера, или компьютера, указанного в параметре \\имя_компьютера.
- /setsntp[:список_серверов_NTP] — указывает список серверов времени NTP для использования на локальном компьютере.
Примеры команды NET TIME
- net help time — отображение справки для указанной команды net;
- net time \\PC1— вывод на экран текущего времение сервера в сети для компьютера PC1;
- net time /querysntp — отображение на экране имени сервера NTP для локальнго компьютера;
- net time \\Proton /set — синхронизация часов локального компьютера с временем компьютера Proton.
Net time системные ошибки в ходе выполнения
Системная ошибка 5. Отказано в доступе
Часто спрашивают, почему появляется «Системная ошибка 5. Отказано в доступе» при использовании команды Net time. Отвечаю, все в правах пользователя под которым запускается команда. В качестве примера пробовал запустить команду сначала с правами локального администратора на Windows 10 — получил ошибку, далее запустил с правами администратора домена — результат на рисунке ниже.
Системная ошибка 1314. Клиент не обладает требуемыми правами
Вам нужно зайти в «редактор локальной политики безопасности». Открываем «Выполнить» Win+R. Ввести — «secpool».
Локальные политики-Параметры безопасности-Контроль учетный записей: Все администраторы работают в режиме одобрения администратором-Отключить-ОК-Перезагрузить компьютер/ноутбук.
Далее запустил с правами администратора домена, команда успешно выполнилась.
Настройка времени в домене AD
Настройка синхронизации времени на PDC и остальных контроллерах домена AD
Настраивать время в домене нужно как только мы развернули новый лес, или же если мы передали роль PDC другому контроллеру домена в существующем лесу.
Стандартная схема синхронизации времени в домене довольно проста:
Есть контроллер домена, который держит роль FSMO — PDC (Primary Domain Controller). Его нужно настроить на синхронизацию времени с каким-либо внешним NTP сервером. Есть другие контроллеры домена, которые в стандартной схеме синхронизируются с вышестоящим контроллером домена в иерархии Active Directory.
Контроллеры наивысшего уровня синхронизируются с PDC эмулятором. Рядовые серверы AD и клиентские компьютеры синхронизируют время с соответствующим контроллером домена своего сайта.
Настраиваем контроллер домена с ролью PDC
PS C:\> w32tm /config /manualpeerlist:192.168.5.10 /syncfromflags:manual /reliable:yes /update
The command completed successfully.
PS C:\> Restart-Service w32time
PS C:\> w32tm /resync
Sending resync command to local computer
The command completed successfully.
где 192.168.5.10 — внешний или корпоративный NTP сервер. Также здесь можно указать и несколько пиров, разделенных пробелами и заключить все в двойные кавычки. Пиры можно указывать как с помощью IP-адресов, так и с помощью DNS-имён.
Настраиваем члена домена, не держащего роли PDC, на работу в стандартной доменной схеме Хочу отметить, что данную процедуру нужно проводить в том случае, если настройки времени на текущем компьютере домена перед этим менялись на нестандартные. Таким образом мы вернем все в дефолтные настройки.
PS C:\> w32tm /config /update /syncfromflags:DOMHIER
The command completed successfully.
PS C:\> w32tm /resync
Sending resync command to local computer
The command completed successfully.
Настройка синхронизации времени в домене Active Directory
Много теории и немного практики о:
- топологии синхронизации времени среди участников Active Directory
- оптимальной с моей точки зрения конфигурации сервера времени корневого эмулятора PDC
- полезных командах для настройки и диагностики синхронизации времени
- особенностях, которые нужно учитывать для виртуализированных контроллеров домена
Топология синхронизации времени среди участников Active Directory
Среди компьютеров, участвующих в Active Directory работает следующая схема синхронизация времени.
Контроллер корневого домена в лесу AD, которому принадлежит FSMО-роль эмулятора PDC (назовем его корневым PDC), является источником времени для всех остальных контроллеров этого домена. Контроллеры дочерних доменов синхронизируют время с вышестоящих по топологии AD контроллеров домена. Рядовые члены домена (сервера и рабочие станции) синхронизируют свое время с ближайшим к ним доступным контроллером домена, соблюдая топологию AD.
Корневой PDC может синхронизировать свое время как со внешним источником, так и с самим собой, последнее задано конфигурацией по умолчанию и является абсурдом, о чем периодически намекают ошибки в системном журнале.
Синхронизация клиентов корневого PDC может осуществятся как с его внутренних часов, так и с внешнего источника. В первом случае сервер времени корневого PDC объявляет себя как «надежный» (reliable).
Далее я приведу оптимальную с моей точки зрения конфигурацию сервера времени корневого PDC, при которой сам корневой PDC периодически синхронизирует свое время от достоверного источника в интернете, а время обращающихся к нему клиентов синхронизирует со своими внутренними часами.
Конфигурация NTP-сервера на корневом PDC
Конфигурирование сервера времени (NTP-сервера) может осуществляться как с помощью утилиты командной строки w32tm, так и через реестр. Где возможно, я приведу оба варианта.
Включение синхронизации внутренних часов с внешним источником [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters] «Type»=»NTP» w32tm /config /syncfromflags:manual
Объявление NTP-сервера в качестве надежного
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config] «AnnounceFlags»=dword:0000000a w32tm /config /reliable:yes Подробности — в библиотеке TechNet.
NTP-сервер по умолчанию включен на всех контроллерах домена, однако его можно включить и на рядовых серверах.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer] «Enabled»=dword:00000001 Задание списка внешних источников для синхронизации [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters] «NtpServer»=»time.nist.gov,0x8 ntp1.imvp.ru,0x8 ntp2.imvp.ru,0x8 time.windows.com,0x8 ru.pool.ntp.org,0x8″ w32tm /config /manualpeerlist:»time.nist.gov,0x8 ntp1.imvp.ru,0x8 ntp2.imvp.ru,0x8 time.windows.com,0x8 ru.pool.ntp.org,0x8»
Флаг 0x8 на конце означает, что синхронизация должна происходить в режиме клиента NTP, через предложенные этим сервером интервалы времени. Для того, чтобы задать свой интервал синхронизации, необходимо использовать флаг 0x1. Все остальные флаги описаны в библиотеке TechNet.
Задание интервала синхронизации с внешним источником Время в секундах между опросами источника синхронизации, по умолчанию 900с = 15мин. Работает только для источников, помеченных флагом 0x1.
Установка минимальной положительной и отрицательной коррекции Максимальная положительная и отрицательная коррекция времени (разница между внутренними часами и источником синхронизации) в секундах, при превышении которой синхронизация не происходит. Рекомендую значение 0xFFFFFFFF, при котором коррекция сможет производиться всегда.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config] «MaxPosPhaseCorrection»=dword:FFFFFFFF «MaxNegPhaseCorrection»=dword:FFFFFFFF
Все необходимое одной строкой
w32tm.exe /config /manualpeerlist:»time.nist.gov,0x8 ntp1.imvp.ru,0x8 ntp2.imvp.ru,0x8 time.windows.com,0x8 pool.ntp.org,0x8″ /syncfromflags:manual /reliable:yes /update
Применение внесенных в конфигурацию службы времени изменений
w32tm /config /update
Принудительная синхронизация от источника
w32tm /resync /rediscover
Отображение состояния синхронизации контроллеров домена в домене
Отображение текущих источников синхронизации и их статуса
w32tm /query /peers
Особенности виртуализированных контроллеров домена
Контроллеры домена, работающие в виртуализированной среде, требуют к себе особенного отношения.
Средства синхронизации времени виртуальной машины и хостовой ОС должны быть выключены. Во всех адекватных системах виртуализации (Microsoft, vmWare и т. д.) присутствуют компоненты интеграции гостевой ОС с хостовой, которые значительно повышают производительность и управляемость гостевой системой. Среди этих компонентов всегда есть средство синхронизации времени гостевой ОС с хостовой, которое очень полезно для рядовых машин, но противопоказано для контроллеров домена. Потому как в этом случае весьма вероятен цикл, при котором контроллер домена и хостовая ОС будут синхронизировать друг друга. Последствия печальны.
Для корневого PDC синхронизация с внешним источником должна быть настроена всегда. В виртуальной среде часы не настолько точны как в физической, потому как виртуальная машина работает с виртуальным процессором и прерываниями, для которых характерно как замедление, так и ускорение относительно «обычной» частоты. Если не настроить синхронизацию виртуализированного корневого PDC с внешним источником, время на всех компьютерах предприятия может убегать/отставать на пару часов в сутки. Не трудно представить неприятности, которые может принести такое поведение.
Настройка синхронизации времени по NTP с помощью групповых политик
09.07.2020
itpro
Active Directory, Групповые политики
комментария 43
Служба времени Windows, несмотря на кажущуюся простоту, является одной из основ, необходимых для нормального функционирования домена Active Directory. В правильно настроенной среде AD служба времени работает следующим образом: компьютеры пользователей получают точное время от ближайшего контроллера домена, на котором они зарегистрировались. Все контроллеры домена в свою очередь получают точное время от DC с FSMO ролью «Эмулятор PDC», а контролер PDC синхронизирует свое время с неким внешним источником времени. В качестве внешнего источника времени может выступать один или несколько NTP серверов, например time.windows.com или NTP сервер вашего Интернет-провайдера. Также нужно отметить, что по умолчанию клиенты в домене синхронизируют время с помощью службы времени Windows (Windows Time), а не с помощью протокола NTP.
Если вы столкнулись с ситуацией, когда время на клиентах и контроллерах домена различается, возможно, в вашем домене есть проблемы с синхронизацией времени и эта статья будет вам полезна.
В первую очередь выберите подходящий NTP сервер, который вы могли бы использовать. Список общедоступных NTP серверов доступен на сайте http://ntp.org . В нашем примере мы будем использовать NTP сервера из пула ru.pool.ntp.org:
- 0.ru.pool.ntp.org
- 1.ru.pool.ntp.org
- 2.ru.pool.ntp.org
- 3.ru.pool.ntp.org
Настройка синхронизации времени в домене с помощью групповых политик состоит из двух шагов:
1) Создание GPO для контроллера домена с ролью PDC
2) Создание GPO для клиентов (опционально)
Настройка политики синхронизации NTP на контролере домена PDC
Этот шаг предполагает настройку контроллера домена с ролью эмулятора PDC на синхронизацию времени с внешним NTP сервером. Т.к. теоретически роль эмулятора PDC может перемещаться между контроллерами домена, нам нужно сделать политику, которая применялась бы только к текущему владельцу роли PDC. Для этого в консоли управления Group Policy Management Console (GPMC.msc), создадим новый WMI фильтр групповых политик. Для этого в разделе WMI Filters создадим фильтр и именем PDC Emulator и WMI запросом: Select * from Win32_ComputerSystem where DomainRole = 5
Затем создайте новую GPO и назначьте ее на контейнер Domain Controllers.
Перейдите в режим редактирования политики и разверните следующий раздел политик: Computer Configuration->Administrative Templates->System->Windows Time Service->Time Providers
Нас интересуют три политики:
- Configure Windows NTP Client: Enabled (настройки политики описаны ниже)
- Enable Windows NTP Client: Enabled
- Enable Windows NTP Server: Enabled
В настройках политики Configure Windows NTP Client укажите следующие параметры:
- NtpServer: 0.ru.pool.ntp.org,0x1 1.ru.pool.ntp.org,0x1 2.ru.pool.ntp.org,0x1 3.ru.pool.ntp.org,0x1
- Type: NTP
- CrossSiteSyncFlags: 2
- ResolvePeerBackoffMinutes: 15
- Resolve Peer BAckoffMaxTimes: 7
- SpecilalPoolInterval: 3600
- EventLogFlags: 0
Примените созданный ранее фильтр PDC Emulator к данной политике.
Осталось обновить политики на контроллере PDC:
gpupdate /force
Вручную запустите синхронизацию времени:
w32tm /resync
Проверьте текущие настройки NTP:
w32tm /query /status
Настройка синхронизации времени на клиентах домена
В среде Active Directory по умолчанию клиенты домена синхронизируют свое время с контролерами домена (опция Nt5DS – синхронизировать время согласно иерархии домена). Как правило, эта схема работает и не требует перенастройки. Однако при наличии проблем с синхронизацией времени на клиентах домена, можно попробовать принудительно назначить сервер времени для клиентов с помощью GPO.
Для этого создайте новую GPO и назначьте ее на контейнеры (OU) с компьютерами. В редакторе GPO перейдите в раздел Computer Configuration -> Administrative Templates -> System -> Windows Time Service -> Time Providers и включите политику Configure Windows NTP Client.
В качестве сервера NTP укажите имя или ip адрес PDC, например msk-dc1.winitpro.ru,0x9, а в качестве типа синхронизации — NT5DS
Обновите настройки групповых политик на клиентах и проверьте, что клиенты успешно синхронизировали свое время с PDC.