Несколько, на мой взгляд, полезных команд. Включение синхронизации внутренних часов с внешним источником

…в среде Active Directory разница в часах более 5 минут приводит к проблемам аутентификации Kerberos…

В данной заметке речь пойдет о настройке синхронизации времени в доменной среде Windows 2008 – 2012 R2.
Основой нормального функционирования доменной среды AD является корректная работа службы времени Windows (W32Time).

Как работает синхронизация времени в доменной среде?

1. пользователи получают точное время от ближайшего контроллера домена, на котором они зарегистрировались;
2. все доменные контроллеры запрашивают об этом DC с ролью PDC-эмулятор (одна из ролей FSMO);
3. PDC-эмулятор, в свою очередь, должен синхронизироваться с более авторитетным источником времени;
На практике PDC-эмулятор обычно синхронизируется с выделенным NTP-сервером организации, либо с NTP-сервером провайдера, или же с внешним источником точного времени, такие как: 0.ru.pool.ntp.org, 1.ru.pool.ntp.org, 2.ru.pool.ntp.org

Пример настройки контроллера домена с ролью PDC-эмулятора.

Для настройки нам потребуется консоль PowerShell запущенная от имени администратора.
1. Определим имя PDC-эмулятора – самый простой способ выполнить команду:

Когда мы подключили к DC с ролью PDC можно начинать настраивать.
2. Конфигурируем внешние источники синхронизации – указываем с какими источниками PDC будет синхронизироваться.

w32tm /config /syncfromflags:manual /manualpeerlist:”0.ru.pool.ntp.org 1.ru.pool.ntp.org 2.ru.pool.ntp.org”

где, параметры:
/syncfromflags:manual — синхронизация с узлами из заданного вручную списка.
manualpeerlist:<узлы> — список (адреса DNS или IP) источников времени

Важно! Имя каждого источника времени (если их несколько) должно быть разделено пробелом. А на брандмауэре должно быть разрешено прохождение трафика UDP на порт 123 в обе стороны.

3. Объявляем PDC-Emulator надежным источником времени для клиентов:
w32tm /config /reliable:yes
4. После внесения изменений перезапускаем службу времени:

Restrat-Service W32Time

Или обновляем конфигурацию командой: w32tm /config /update

Если вы перенесли роль PDC-эмулятор на другой контроллер домена, то старый DC все еще продолжает считает считать себя авторитетным сервером времени для всего домена, что может стать причиной ошибок в системных логах. Исправить эту ситуацию можно командой:
w32tm /config /syncfromflags:domhier /reliable:no /update

Несколько, на мой взгляд, полезных команд:

w32tm /query /configuration — посмотреть текущие настройки службы времени;

Где:

SpecialPollInterval: 3600 - интервал синхронизации в секундах, 3600 – сутки. Синхронизиция будет проводиться раз в сутки.
NtpServer - указывает сервреры, с которым может синхроинизировать время компьютер.
Type: NTP – вид синхронизации времени.
Параметр Type может иметь следующие параметры:
NoSync — служба времени вообще не синхронизируется ни с чем.
NTP — служба времени синхронизируется с серверами, указанными в параметре NtpServer.
NT5DS — служба времени синхронизируется, используя доменную иерархию (характерно для членов домена Active Directory).
AllSync — служба времени использует все возможные механизмы для синхронизации.

w32tm /monitor — отобразит текущую иерархию синхронизации времени по домену;
w32tm /stripchart /computer:0.ru.pool.ntp.org /samples:5 /dataonly — произвести 5 попыток сравнения времени с авторитетным источником времени 0.ru.pool.ntp.org (полезно при проверке доступности источника времени );
w32tm /resync – заставить компьютер синхронизироваться с используемым им сервером времени;
w32tm /unregister - удаляет службу времени с компьютера;
w32tm /register – регистрирует службу времени на компьютере;
Если кому интересно настраивать NTP-сервер через реестр, то милости просим в эту ветку: HKLM\System\CurrentControlSet\services\W32Time\

Концепция ярусов STRATA или STRATUM


Где:
Stratum 0 – эталонные или авторитетные источники точного времени, такие как: путники GPS, цезиевые атомные часы, радио волны WWVB. Авторитетны они потому, что имеют способ поддержания высокоточного хронометража – когда секунда не потеряется за 300 000 лет.
Stratum 1 – компьютеры, которые напрямую берут время у Stratum 0, т.е. Stratum 1 используют аппаратное (проводом) подключение к Stratum 0!
Stratum 2 – уровень компьютеров, берущие время по сети у Stratum 1.
Как уже, наверное, понятно из схемы, Stratum 3 будет брать время у Stratum 2 , а Stratum 4 у Stratum 3 и т.д. Самым нижним ярусов является Stratum 16 и время в нем считается не синхронизированным.
Опять же, на практике, самыми распространенными внешними источниками времени являются Stratum 2 , Stratum 3 , ибо синхронизироваться с Stratum 1 простым пользователям не разрешается, да и это не к чему.

Простое решение проблемы ухода времени на контроллере домена , установленного на виртуальную машину Hyper-V под управлением Windows Server 2008/2012.

Во время работы контроллера домена под управлением Windows Server 2008 R2/2012, установленного на виртуальную машину Hyper-V , было замечен постоянный уход времени – за месяц время могло уйти чуть ли не на полчаса. Нужно ли говорить, насколько важно точное время на контроллере домена, ведь по нему синхронизируется весь парк компьютеров домена.

1. Отключить синхронизацию времени с хост-машиной

Для начала нужно отключить синхронизацию времени гостевой машины по времени хост-машины, иначе мы получаем казус. Если хост-машина является членом домена, хост синхронизируется по контроллеру на гостевой машине, а гостевая машина синхронизируется по хосту – получаем замкнутый цикл, который скорее всего и приводит к постоянному смещению времени внутри себя. Смещение получается буквально на какие-то доли секунды, но постепенно складываясь за каждый цикл синхронизации набегает весьма ощутимый сдвиг часов.

В параметрах виртуальной машины Настройка → Службы интеграции → Синхронизации времени – снять птичку

2. Настроить синхронизацию по NTP-серверу

Инструментарий

Для настройки воспользуемся утилитой командой строки w32tm . Основные параметры утилиты, которые применяются для настройки и управления временем: w32tm /query позволяет опросить текущие настройки клиента и сервера NTP w32tm /config используется для настройки службы времени w32tm /resync используется для инициализации синхронизации времени w32tm /dumpreg используется для отображения текущих параметров реестра связанных с службой времени w32tm /debug используется для включения журнала отладки службы времени

Настройка

Выполняется настройка синхронизации времени на контроллере домена под управлением Windows Server 2008 R2 с ролью FSMO «Эмулятор PDC»: w32tm /query /configuration смотрим текущие параметры службы времени w32tm /config /syncfromflags:manual выбираем источник (заданный нами список) для синхронизации времени w32tm /config /manualpeerlist:"server1.ntp.org server2.ntp.org" устанавливаем заданный вручную список узлов для синхронизации. Узлы представляют собой DNS-имена или IP-адреса, разделённые пробелами. При указании нескольких узлов, все значения узлов заключаются в кавычки. Можно, конечно ограничится и одним привычным time.windows.com w32tm /config /reliable:yes задаем параметр, что данная машина является надёжным источником времени и может обслуживать клиентов w32tm /config /update информируем службу времени, что были внесены изменения (можно перезапустить службу) w32tm /query /configuration проверяем внесенные изменения в параметры службы w32tm /resync выполняем синхронизацию (можно поиграться, менять время и проверять, будет ли выполнена синхронизация)

Для большей надежности можно еще и перезапустить Службу времени командами net stop w32time и net start w32time .

Для удобства, перечисленные команды хорошо собрать в один cmd -файлик и решать вопрос в один клик:

W32tm /config /syncfromflags:manual w32tm /config /manualpeerlist:time.windows.com w32tm /config /reliable:yes w32tm /config /update w32tm /query /configuration pause w32tm /resync

Примеры применения

08.12.2014

Для синхронизации времени устройства NetPing используют протокол NTP. При помощи этого протокола все устройства в сети корректируют своё время по указанному серверу. Устройства NetPing, подключенные к Internet, могут использовать публичный NTP сервер, как рекомендовано в статье . Если доступа к сети Internet нет, то можно настроить локальный NTP сервер. Таким сервером может являться любой компьютер с ОС Windows с настроенной службой W32Time Служба времени Windows »). Данная служба не имеет графического интерфейса и настраивается либо через командную строку либо путём правки ключей реестра.

Инструкция по настройке сервера NTP на ОС Windows 7/8/2008/2012

Рассмотрим настройку службы времени через редактирование реестра. Настройка происходит одинаково для версий Windows 7/8, Windows Server 2008, Windows Server 2012.

Для данной настройки необходимо обладать правами администратора ОС Windows

Открываем редактор реестра либо через диалоговое окно «Выполнить », вызванное комбинацией клавиш «Win » + «R », либо через форму поиска, где набираем «regedit ».


В открывшемся редакторе в левом древовидном меню открываем «ветвь» «HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\TimeProviders\NtpServer », где ищем ключ с названием «Enable ». Нажимаем правой кнопкой мыши и выбираем «Изменить». Меняем значение ключа с 0 на 1 .


Изменив данный параметр, мы указали, что данный компьютер выступает в роли сервера NTP. Компьютер одновременно остаётся клиентом и может синхронизировать своё время по другим серверам в Internet или локальной сети. Если вы хотите, чтобы в качестве источника данных выступали внутренние аппаратные часы, то измените значение параметра ключа AnnounceFlags на 5 в ветке « HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config ».


Для вступления изменений в силу нам необходимо перезапустить службу. Доступ к службам осуществляется через «Панель управления » из меню «Пуск » -> «Панель управления » -> «Администрирование » -> «Службы ». Также она находится в форме поиска при вводе «services.msc ». В появившемся списке служб находим интересующую нас «Служба времени Windows » и через меню, вызванное правой кнопкой мыши, выбираем пункт «Перезапустить ».

Добрый день уважаемые читатели и гости блога сайт, как много люди говорят о времени, что оно быстро или медленно бежит, и все понимают, что оно бесценно и важно. Так и в инфраструктуре 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 , так и через реестр. Где возможно, я приведу оба варианта. Но в начале посмотрите полностью ваши настройки на компьютере, делается это командой:

w32tm /query /configuration

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 (Локально)

Enabled: 1 (Локально)
InputProvider: 1 (Локально)
CrossSiteSyncFlags: 2 (Локально)

ResolvePeerBackoffMinutes: 15 (Локально)
ResolvePeerBackoffMaxTimes: 7 (Локально)
CompatibilityFlags: 2147483648 (Локально)
EventLogFlags: 1 (Локально)
LargeSampleSkew: 3 (Локально)
SpecialPollInterval: 3600 (Локально)
Type: NT5DS (Локально)

NtpServer (Локально)
DllName: C:\Windows\system32\w32time.dll (Локально)
Enabled: 1 (Локально)
InputProvider: 0 (Локально)
AllowNonstandardModeCombinations: 1 (Локально)

VMICTimeProvider (Локально)
DllName: C:\Windows\System32\vmictimeprovider.dll (Локально)
Enabled: 1 (Локально)
InputProvider: 1 (Локально)

Включение синхронизации внутренних часов с внешним источником


Включение NTP-сервера

NTP-сервер по умолчанию включен на всех контроллерах домена, однако его можно включить и на рядовых серверах.


Задание списка внешних источников для синхронизации


Флаг 0×8 на конце означает, что синхронизация должна происходить в режиме клиента NTP, через предложенные этим сервером интервалы времени. Для того, чтобы задать свой интервал синхронизации, необходимо использовать флаг 0×1.

Задание интервала синхронизации с внешним источником

Время в секундах между опросами источника синхронизации, по умолчанию 900с = 15мин. Работает только для источников, помеченных флагом 0×1.


  • "SpecialPollInterval"=dword:00000384

Установка минимальной положительной и отрицательной коррекции

Максимальная положительная и отрицательная коррекция времени (разница между внутренними часами и источником синхронизации) в секундах, при превышении которой синхронизация не происходит. Рекомендую значение 0xFFFFFFFF, при котором коррекция сможет производиться всегда.


"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.

Вводим имя запроса, пространство имен, будет иметь значение "root\CIMv2" и запрос "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

В данной статье мы рассмотрим как настроить NTP в Windows Server 2012. В статье не рассматриваются подробная настройка синхронизации времени в доменном окружении, а настройка единичного контроллера домена с ролью эмулятора PDC, который единственный сервере в окружении выполняет синхронизацию с внешним источником времени.

Настройка очень проста. Все что нужно сделать это выполнить следующие команды в PowerShell:

w32tm /config /manualpeerlist:pool.ntp.org /syncfromflags:MANUAL
Stop-Service w32time
Start-Service w32time

Если контроллер виртуализирован средствами Hyper-V нужно не забыть отключить синхронизацию времени средствами Hyper-V. Откройте настройки виртуальной машины -> Management -> Integration Services и снимите чекбокс с Time Synchronization.

На этом все! Хотите узнать больше? Что-то не работает? Тогда разберем более подробно…

W32tm это основная используемая нами команда. Есть ещё варианты, использующие "net time", но на самом деле использовать эту конструкцию нет необходимости. В некоторых статья также упоминается прямое редактирование реестра, однако в Microsoft советуют не делать этого в любом случае, а только если нет совершенно никакой другой альтернативы. Но если вам очень хочется редактировать реестр, нужная вам ветка находиться тут: HKLM\System\CurrentControlSet\Services\W32Time .

Какой NTP сервер использовать? Или лучше несколько?

pool.ntp.org это round-robin рандомных NTP серверов. Для конечных пользователей этого адреса более чем достаточно. Однако в случае необходимости вы можете указать вручную несколько серверов:

w32tm /config /manualpeerlist:"ntp1.sp.se ntp2.sp.se" /syncfromflags:MANUAL

Просто добавьте нужные вам сервера с пробелом между ними.

Не забудьте про файервол

Если у вас есть файервол между хостом и интернетом, он может быть настроен на запрет udp/123 по которому работает протокол NTP. Вот как это выглядит на моей Cisco ASA FW:

Поэтому я создал отдельное правило, разрешающее данный трафик.

Подробная информация и логирование

Данная команда показывает полезную информацию о настройке синхронизации, списке серверов и времени последней синхронизации.

Обычно когда сервер не может получить время с NTP сервера в лог записывается следующая информация:

Log Name: System
Event ID: 47
Level: Warning
Description: Time Provider NtpClient: No valid response has been received from manually configured peer pool.ntp.org after 8 attempts to contact it. This peer will be discarded as a time source and NtpClient will attempt to discover a new peer with this DNS name. The error was: The peer is unreachable.

Когда все нормально сообщение выглядит следующим образом:

Log Name: System
Source: Microsoft-Windows-Time-Service
Event ID: 35
Level: Information
Description: The time service is now synchronizing the system time with the time source pool.ntp.org (ntp.m|0×0|0.0.0.0:123->85.10.240.253:123).

Вы все ещё испытывает какие то проблемы? Вы можете легко включить вывод отладочной информации в логфайл, который в моем случае лимитирован 10-тью мегабайтами и включает все отладочные записи.

w32tm /debug /enable /file:C:\Temp\w32tmdebug.log /size:10485760 /entries:0-300

После завершения отладки выключаем её:

В случае проблем в логе вы увидите большое количество информации. У меня, когда все работает об этом сигнализирует следующая запись:

- Reachability: peer pool.ntp.org (ntp.m|0×0|0.0.0.0:123->129.70.132.35:123) is reachable.
- Logging information: NtpClient is currently receiving valid time data from pool.ntp.org (ntp.m|0×0|0.0.0.0:123->129.70.132.35:123).

А когда мой файервол блокировал пакеты я получал следующие сообщения.

- Logging error: NtpClient has been configured to acquire time from one or more time sources, however none of the sources are currently accessible and no attempt to contact a source will be made for 1 minutes. NTPCLIENT HAS NO SOURCE OF ACCURATE TIME.

Принудительная синхронизация

Если вам необходимо принудительно синхронизировать клиента, запустите команду:

w32tm /resync
Sending resync command to local computer
The command completed successfully.

Если вы получили следующую ошибку, значит компьютер не может достичь NTP сервера.

The computer did not resync because no time data was available.

Начнем с начала

Если вы полностью запутались в конфигах, напихали лишнего и уже не понимаете что происходит, начните с начала. Данные команды полностью сбросят настройки NTP в дефолтное состояние:

Stop-Service w32time
w32tm /unregister
w32tm /register