Синхронизация системного времени в домене Active Directory имеет значение для корректной работы многих функций на пользовательских рабочих станциях под Windows. Сбившиеся системные часы могут повлиять на способность пользователя войти в систему, нарушить движение почты в Exchange и создать массу других проблем, которые достаточно трудно обнаружить.
В сложных случаях стандартные методы синхронизации времени в сети не являются на сто процентов надежными или даже предсказуемыми. К примеру, если часы физического хоста Hyper-V перестают синхронизироваться, это обычно сказывается на всех виртуальных машинах, иногда катастрофически. К счастью, не требуется много усилий, чтобы исправить ошибки синхронизации времени.
Выбор компьютера в качестве источника времени
Первое, что необходимо сделать перед настройкой синхронизации времени, – выбрать компьютер, который станет основным источником системного времени в вашем домене.
Как правило, в качестве такого источника выбирается компьютер, который в Active Directory обладает ролью эмулятора первичного контроллера домена (PDC). Согласно официальной документации Microsoft, именно он должен являться главным ресурсом, от которого сеть получает данные о времени. Однако на практике это не всегда возможно.
Машина, которую вы выберете, будет регулярно консультироваться с интернет-источниками, поэтому, если вы находитесь на строго охраняемом объекте с высокими требованиями к информационной безопасности, следует задуматься о делегировании этой роли другому компьютеру.
К примеру, можно создать выделенный сервер, который будет получать информацию о времени из Интернета и передавать ее эмулятору PDC. В этом случае у вас будет несколько компьютеров, служащих источниками времени для машин, включенных в сеть.
Настройка брандмауэра
Трафик при синхронизации времени с контроллером домена поступает на UDP-порт 123. На компьютере, служащем источником времени, данный порт необходимо открыть для входящих соединений. На всех машинах в сети порт 123 должен быть открыт для исходящих соединений, по крайней мере с контроллером домена.
Настройка контроллера домена
Для синхронизации времени с контроллером домена на сервере, выполняющем роль эмулятора PDC, с использованием командной строки должны быть выполнены следующие действия:
1. Проверьте, что контроллер домена, на котором вы работаете, является эмулятором PDC, выполнив команду
netdom query fsmo
2. На сервере-эмуляторе PDC запустите следующие команды синхронизации времени в указанном порядке:
net stop w32time
w32tm /configure /syncfromflags:manual /manualpeerlist:"0.us.pool.ntp.org,0x1 1.us.pool.ntp.org, 0x1 2.us.pool.ntp.org, 0x1 3.us.pool. ntp.org, 0x1"
Внешним источником времени по умолчанию для Windows Server является сервер time.windows.com. Наилучшим вариантом является синхронизация с несколькими серверами времени. В приведенной выше команде мы используем серверы времени, поддерживаемые NTP Pool Project.
net start w32time
w32tm /configure /reliable:yes /update
3. Если в Active Directory имеется несколько контроллеров домена, выполните в командной строке следующую команду:
w32tm /config /syncfromflags:domhier /update
4. Проверьте правильность настроек времени на сервере-эмуляторе PDC:
w32tm /query /status:
5. Проверьте правильность настройки времени на всех остальных контроллерах домена:
w32tm /query /status:
Настройка DHCP
Для того чтобы обеспечить синхронизацию времени с контроллером домена на устройствах, отвечающих за DHCP, в настройках DHCP-сервера установите параметры 004 и 042.
Для записей DHCP вы можете использовать только IP-адреса. Вы можете ввести имя сервера и нажать Resolve, чтобы получить IP-адрес сервера.
Если вы используете DHCP с помощью устройства Cisco, в настройках DHCP введите следующие команды:
option 4 ip [IP-адрес]
option 42 ip [IP-адрес]
IP-адрес следует заменить на фактический IP сервера, служащего источником времени.
Теперь все DHCP-устройства получат настройки времени от сервера при следующем обновлении.
Настройка статических устройств и компьютеров под другими ОС
Большинство устройств NAS и SAN имеют возможность ввода информации о сервере-поставщике настроек времени.
Чтобы настроить синхронизацию времени с контроллером домена на устройствах Cisco IOS, в командной строке введите:
ntp server 192.168.25.5
IP-адрес следует заменить на фактический IP сервера, служащего источником времени.
Чтобы настроить синхронизацию времени на компьютере под операционной системой, отличной от Windows, обратитесь к документации операционной системы. Впрочем, для других ОС корректные настройки времени не так важны, как для Windows, поэтому от синхронизации можно даже отказаться.
Настройка гостевых виртуальных машин
Все современные гипервизоры имеют возможность синхронизации системного времени для гостевых машин с помощью встроенных инструментов. Если синхронизация времени в домене включена, гостевые машины будут получать время с физического хоста, на котором они запущены.
В большинстве случаев нужно отключить эту функцию для гостевых машин Windows Server, которые служат в качестве виртуализированных контроллеров домена. Для всех остальных гостей она должна быть включена.
Для настройки синхронизации времени с контроллером домена в гипервизоре Hyper-V откройте диалоговое окно Settings и перейдите на вкладку Integration Services. Снимите или установите флажок Time Synchronization. Для других гипервизоров обратитесь к документации производителя.
Настройка групповых политик
Для того чтобы действительно убедить ваши компьютеры под Windows использовать настройки времени, получаемые от контроллера домена, необходимо настроить групповые политики.
Чтобы установить новую групповую политику, откройте средство управления политиками на контроллере домена или на компьютере, на котором установлены средства администрирования удаленного сервера. Разверните свой домен. Щелкните правой кнопкой мыши по пункту Group Policy Objects и нажмите New. Дайте новой политике имя и нажмите ОК.
Кликните правой кнопкой по новой политике и нажмите Edit. Это запустит окно редактора политики группы.
Перейдите в Computer Configuration > Policies > Administrative Templates > System -> Windows Time Service > Time Providers. На правой панели дважды щелкните Enable Windows NTP Client. Установите опцию в положение Enabled и нажмите ОК.
Затем дважды щелкните Configure Windows NTP Client. Настройте параметры, как на рисунке ниже, добавив 0x1 в поле NtpServer, чтобы получилось yourdc.yourdomain.tld, 0x1.
После сохранения групповой политики закройте редактор. Вы вернетесь в окно консоли управления основной политикой группы.
Если в вашем домене имеется большое количество политик, щелкните правой кнопкой по новой политике и перейдите в GPO Status > User Configuration Settings Disabled. Это ускорит обработку каждой политики.
Теперь нажмите правой кнопкой мыши по объекту Active Directory, к которому вы хотите применить эту политику, и нажмите Link an Existing GPO. Выделите новую политику и нажмите ОК. При необходимости повторите действия для других объектов.
Помните, что вложенные объекты наследуют групповую политику от своего родителя, если наследование не заблокировано или у дочернего объекта нет собственной связанной групповой политики с конфликтующими настройками.
Настройка других контроллеров домена
Если вы выполните описанные выше шаги для обеспечения синхронизации времени в домене, то почти гарантированно настроите получение корректного времени всеми компьютерами в сети. Поэтому другие контроллеры домена (если у вас их несколько) можно не трогать.
Однако если вы хотите быть уверенными, что они используют правильное время, вы можете отредактировать локальную групповую политику. Перейдите в меню Пуск > Выполнить и введите gpedit.msc. Нажмите ОК.
Затем используйте те же настройки, что приведены в предыдущем разделе. Если контроллер домена, на котором вы хотите работать, управляется Windows Server Core, вы можете сделать это удаленно, при условии, что такая возможность разрешена сетевым экраном. Просто запустите mmc.exe на компьютере с графическим интерфейсом, откройте пункт меню File > Add/Remove Snap-In, дважды щелкните Group Policy Object Editor и перейдите на компьютер, на котором вы хотите отредактировать групповую политику.
Проверка результата
Запустите на любом Windows-компьютере в сети командную строку с правами администратора и введите:
w32tm / query / source
В результате выполнения команды на контроллере домена будет возвращен адрес одного из серверов NTP, которые были заданы в качестве внешних источников времени из Интернета.
На пользовательской рабочей станции команда вернет адрес контроллера домена.
На виртуальной машине Hyper-V с включенной синхронизацией времени вы должны увидеть сообщение: VM IC Time Synchronization Provider.
Если команда сигнализирует, что время определяется по локальным CMOS-часам, синхронизация времени в домене не работает.
Как настроить NTP сервер и синхронизацию времени в домене Active Directory
Как настроить NTP сервер и синхронизацию времени в домене Active Directory
Добрый день уважаемые читатели и гости блога pyatilistnik.org, как много люди говорят о времени, что оно быстро или медленно бежит, и все понимают, что оно бесценно и важно. Так и в инфраструктуре Active Directory, она является одним из важнейших факторов, правильного функционирования домена. В домене все друг другу доверяют, и один раз авторизовавшись и получив все тикеты от Kerberos, пользователь ходит куда угодно, ограничиваясь лишь своими доступными правами. Так вот если у вас не будет точного времени на ваших рабочих станциях к контроллеру домена, то можете считать, что у вас начинаются серьезные проблемы, о которых мы поговорим ниже и рассмотрим как их устранить с помощью настройки NTP сервера в Windows.
Синхронизация времени в Active Directory
Среди компьютеров, участвующих в Active Directory работает следующая схема синхронизация времени.
- Контроллер корневого домена в лесу AD, которому принадлежит FSMО-роль эмулятора PDC (назовем его корневым PDC), является источником времени для всех остальных контроллеров этого домена.
- Контроллеры дочерних доменов синхронизируют время с вышестоящих по топологии AD контроллеров домена.
- Рядовые члены домена (сервера и рабочие станции) синхронизируют свое время с ближайшим к ним доступным контроллером домена, соблюдая топологию AD.
Корневой PDC может синхронизировать свое время как со внешним источником, так и с самим собой, последнее задано конфигурацией по умолчанию и является абсурдом, о чем периодически намекают ошибки в системном журнале.
Синхронизация клиентов корневого PDC может осуществятся как с его внутренних часов, так и с внешнего источника. В первом случае сервер времени корневого PDC объявляет себя как «надежный» (reliable).
Далее я приведу оптимальную с моей точки зрения конфигурацию сервера времени корневого PDC, при которой сам корневой PDC периодически синхронизирует свое время от достоверного источника в интернете, а время обращающихся к нему клиентов синхронизирует со своими внутренними часами.
Вводим netdom query fsmo. В моем примере, роль PDC и NTP сервера, принадлежит контроллеру dc7
Конфигурация NTP-сервера на корневом PDC
Конфигурирование сервера времени в Windows (NTP-сервера) может осуществляться как с помощью утилиты командной строки w32tm, так и через реестр. Где возможно, я приведу оба варианта. Но в начале посмотрите полностью ваши настройки на компьютере, делается это командой:
EventLogFlags: 2 (Локально)
AnnounceFlags: 10 (Локально)
TimeJumpAuditOffset: 28800 (Локально)
MinPollInterval: 6 (Локально)
MaxPollInterval: 10 (Локально)
MaxNegPhaseCorrection: 172800 (Локально)
MaxPosPhaseCorrection: 172800 (Локально)
MaxAllowedPhaseOffset: 300 (Локально)
FrequencyCorrectRate: 4 (Локально)
PollAdjustFactor: 5 (Локально)
LargePhaseOffset: 50000000 (Локально)
SpikeWatchPeriod: 900 (Локально)
LocalClockDispersion: 10 (Локально)
HoldPeriod: 5 (Локально)
PhaseCorrectRate: 7 (Локально)
UpdateInterval: 100 (Локально)
NtpClient (Локально)
DllName: C:Windowssystem32w32time.dll (Локально)
Enabled: 1 (Локально)
InputProvider: 1 (Локально)
CrossSiteSyncFlags: 2 (Локально)
AllowNonstandardModeCombinations: 1 (Локально)
ResolvePeerBackoffMinutes: 15 (Локально)
ResolvePeerBackoffMaxTimes: 7 (Локально)
CompatibilityFlags: 2147483648 (Локально)
EventLogFlags: 1 (Локально)
LargeSampleSkew: 3 (Локально)
SpecialPollInterval: 3600 (Локально)
Type: NT5DS (Локально)
NtpServer (Локально)
DllName: C:Windowssystem32w32time.dll (Локально)
Enabled: 1 (Локально)
InputProvider: 0 (Локально)
AllowNonstandardModeCombinations: 1 (Локально)
VMICTimeProvider (Локально)
DllName: C:WindowsSystem32vmictimeprovider.dll (Локально)
Enabled: 1 (Локально)
InputProvider: 1 (Локально)
Включение синхронизации внутренних часов с внешним источником
- [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeParameters]
"Type"="NTP" - w32tm /config /syncfromflags:manual
Объявление NTP-сервера в качестве надежного
- [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeConfig]
"AnnounceFlags"=dword:0000000a - w32tm /config /reliable:yes
NTP-сервер по умолчанию включен на всех контроллерах домена, однако его можно включить и на рядовых серверах.
- [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeTimeProvidersNtpServer]
"Enabled"=dword:00000001
Задание списка внешних источников для синхронизации
- [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeParameters]
"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"
Флаг 0×8 на конце означает, что синхронизация должна происходить в режиме клиента NTP, через предложенные этим сервером интервалы времени. Для того, чтобы задать свой интервал синхронизации, необходимо использовать флаг 0×1.
Задание интервала синхронизации с внешним источником
Время в секундах между опросами источника синхронизации, по умолчанию 900с = 15мин. Работает только для источников, помеченных флагом 0×1.
- [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeTimeProvidersNtpClient]
"SpecialPollInterval"=dword:00000384
Установка минимальной положительной и отрицательной коррекции
Максимальная положительная и отрицательная коррекция времени (разница между внутренними часами и источником синхронизации) в секундах, при превышении которой синхронизация не происходит. Рекомендую значение 0xFFFFFFFF, при котором коррекция сможет производиться всегда.
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeConfig]
"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 /monitor - Отображение текущих источников синхронизации и их статуса
w32tm /query /peers
Настройка NTP сервера и клиента групповой политикой
Раз уж у нас с вами домен Active Directory, то глупо не использовать групповые политики, для массовой настройки серверов и рабочих станций, я покажу как настроить ваш NTP сервер в windows и клиента. Открываем оснастку "Редактор групповых политик". Перед тем как настроить наш NTP сервер в Windows, нам необходимо создать WMI фильтр, который будет применять политику, только к серверу мастера PDC.
Вводим имя запроса, пространство имен, будет иметь значение "rootCIMv2" и запрос "Select * from Win32_ComputerSystem where DomainRole = 5". Сохраняем его.
Затем вы создаете политику на контейнере Domain Controllers.
В самом низу политики применяете ваш созданный WMI фильтр.
Переходим в ветку: Конфигурация компьютера > Политики > Административные шаблоны > Система > Служба времени Windows > Поставщики времени.
Тут открываем политику "Настроить NTP-клиент Windows". Задаем параметры
- 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. Двойка означает, если этот параметр равен 2 (Все), можно использовать любого участника синхронизации. Это значение игнорируется, если не задано значение NT5DS. Значение по умолчанию: 2 (десятичное) (0x02 (шестнадцатеричное))
- ResolvePeerBackoffMinutes: 15. Это значение, выраженное в минутах, определяет интервал ожидания службы W32time перед попыткой разрешения DNS-имени в случае неудачи. Значение по умолчанию: 15 минут
- Resolve Peer BAckoffMaxTimes: 7. Это значение определяет число попыток разрешения DNS-имени, предпринимаемых службой W32time перед перезапуском процесса обнаружения. При каждом неудачном разрешении DNS-имени интервал ожидания перед следующей попыткой удваивается. Значение по умолчанию: семь попыток.
- SpecilalPoolInterval: 3600. Это значение параметра NTP-клиента, выраженное в секундах, определяет частоту опроса настроенного вручную источника времени, который использует особый интервал опроса. Если для параметра NTPServer установлен флаг SpecialInterval, клиент использует значение, заданное как SpecialPollInterval, вместо значений MinPollInterval и MaxPollInterval, чтобы определить частоту опроса источника времени. Значение по умолчанию: 3600 секунд (1 час).
- EventLogFlags: 0
Делаем отдельную групповую политику для клиентских рабочих машин, вот с такими параметрами.
- NtpServer: Адрес вашего контроллера домена с ролью PDC.
- Type: NT5DS
- CrossSiteSyncFlags: 2
- ResolvePeerBackoffMinutes: 15
- Resolve Peer BAckoffMaxTimes: 7
- SpecilalPoolInterval: 3600
- EventLogFlags: 0
Далее идем на клиента и обновляем групповые политики gpupdate /force и вводим команду w32tm /query /status
Особенности виртуализированных контроллеров домена
Контроллеры домена, работающие в виртуализированной среде, требуют к себе особенного отношения.
- Средства синхронизации времени виртуальной машины и хостовой ОС должны быть выключены. Во всех адекватных системах виртуализации (Microsoft, vmWare и т. д.) присутствуют компоненты интеграции гостевой ОС с хостовой, которые значительно повышают производительность и управляемость гостевой системой. Среди этих компонентов всегда есть средство синхронизации времени гостевой ОС с хостовой, которое очень полезно для рядовых машин, но противопоказано для контроллеров домена. Потому как в этом случае весьма вероятен цикл, при котором контроллер домена и хостовая ОС будут синхронизировать друг друга. Последствия печальны.
- Для корневого PDC синхронизация с внешним источником должна быть настроена всегда. В виртуальной среде часы не настолько точны как в физической, потому как виртуальная машина работает с виртуальным процессором и прерываниями, для которых характерно как замедление, так и ускорение относительно «обычной» частоты. Если не настроить синхронизацию виртуализированного корневого PDC с внешним источником, время на всех компьютерах предприятия может убегать/отставать на пару часов в сутки. Не трудно представить неприятности, которые может принести такое поведение.
Служба времени 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:
Настройка синхронизации времени в домене с помощью групповых политик состоит из двух шагов:
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.