Local cmos clock не меняется на сервере windows 2016
, но некоторые из клиентов по-прежнему используют Local CMS Clock.
Что я могу сделать?
Я также запускаю
на стороне клиента, но сервер времени по-прежнему является локальным CMOS-часами для клиента.
В клиенте, источником являются Local CMOS Clock
Компьютеры члены домена синхронизируют свое время с доменным контроллером. Эта настройка прописывается автоматически при включении компьютера в домен. Но сам доменный контроллер остается не настроенным, источника точного времени по умолчанию у него нет.
В интернете существует большое количество ntp серверов, предоставляющих точное время. И Windows Server может с ними синхронизироваться. Для указания адреса ntp сервера используется команда w32tm (KB307897):
Где список — адрес(а) ntp сервера(ов).
После указания адреса ntp сервера требуется сообщить запущенной службе времени об изменении настроек:
вторник, 28 апреля 2015 г.
Настройка точного времени в Windows по протоколу NTP
Следует помнить, что в доменной среде на внешний источник времени настраивается только контроллер с ролью эмулятора PDC. Остальные члены домена синхронизируются с ним и другими контроллерами. Если этого вдруг не происходит, попробуйте на проблемном хосте выполнить следующую настройку:
В том случае, если вам нужно сбросить все настройки службы времени, выполните команды:
Синхронизация времени Active Directory с внешним источником
Синхронизация времени - важный и во многом достаточно критичный аспект работы Active Directory, особенно сегодня, когда широко используется взаимодействие с внешними системами и работа с сотрудниками, которые могут находиться в различных часовых поясах. Применение систем виртуализации вносит дополнительные особенности, которые также следует учитывать. Поэтому данный вопрос может оказаться не столь простым, как кажется, а синхронизация с внешним источником точного времени становится одной из актуальных задач.
Прежде всего вспомним, как происходит синхронизация времени в 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, и на обычных ПК, где в выводе будет присутствовать любой из контроллеров домена. Обязательно выполните контроль для виртуальных машин, чтобы быть уверенным, что они используют время домена, а не хоста виртуализации.
Для того чтобы настроить автоматическую синхронизацию ОС Windows со сторонним источником времени по протоколу NTP, понадобится правильно сконфигурировать сервис "w32time".
Сначала убедитесь в том, что служба работает или запустите её командой "net start w32time". Затем выполните команду "w32tm /query /status", чтобы получить информацию о статусе службы времени.
Если ранее источник времени не настраивался, то по умолчанию это будет "Local CMOS Clock".
Для настройки службы на определённый сервер NTP используйте следующую команду:
"w32tm /config /manualpeerlist:PEERS /syncfromflags:manual /reliable:yes /update"
где PEERS - DNS имя или IP адрес сервера NTP (можно указать несколько хостов сразу через пробел и в кавычках).
Перезагрузите службу командой "net stop w32time && net start w32time" и сделайте принудительную синхронизацию времени: "w32tm /resync".
В завершении ещё раз проверьте статус службы командой "w32tm /query /status", чтобы убедиться в корректности сделанных настроек. Также не забудьте про то, что NTP сервис доступен по порту 123 UDP, который должен быть открыт в сетевом оборудовании и фаерволах на входящий и исходящий трафик.
Следует помнить, что в доменной среде на внешний источник времени настраивается только контроллер с ролью эмулятора PDC. Остальные члены домена синхронизируются с ним и другими контроллерами. Если этого вдруг не происходит, попробуйте на проблемном хосте выполнить следующую настройку:
"w32tm /config /syncfromflags:domhier /reliable:no /update"
В том случае, если вам нужно сбросить все настройки службы времени, выполните команды:
"net stop w32time"
"w32tm /unregister"
"w32tm /register"
"net start w32time"
За 2020 год из пары десятков тысяч посетителей, набралось всего пару десятков перечислений от 50 до 300 рублей.
Пустяк в денежном выражении, но большая ценность для автора. Посмотрим что год грядущий нам готовит ))
Сумма абсолютно не важна - главное участие.
Текст:
Казалось бы, по теме синхронизации времени в домене Windows написаны десятки подробных статей статей, например, качественная How the Windows Time Service Works.
Но пытаясь объяснить поведение ОС при изменении части настроек столкнулся с большими затруднениями - в статьях оказалось много пробелов, а местами и неточностей. На опыты и уяснение их результатов ушло несколько дней. Надеюсь статья поможет вам сэкономить время и посвятить его более приятным занятиям.
Начнем. Зачем нам в домене нужно точное время на всех компьютерах?
Во-первых из-за Kerberos. Компьютер начинает проверку своей подлинности на контроллере с посылки Authentication Service Request (AS_REQ). Составной частью пакета является зашифрованная отметка времени. На котроллере домена отметка времени сравнивается с текущим временем системы и при разнице более 300 секунд запрос отклоняется. Эта мера безопасности затрудняет передачу измененных AS_REQ.
Во-вторых из-за приложений. Практически во всех государственных и финансовых организациях требуется фиксировать точное время произведенных операций.
Если в первом случае, достаточно синхронизировать время внутри домена, то во втором необходима также синхронизация с внешним источником точного времени. Это может быть собственный NTP сервер, построенный на базе устройств спутниковой навигации GPS или ГЛОНАСС. Но обычно используются бесплатные NTP сервера доступные в Интернет.
w32tm /query /peers
на рабочей станции, на домен контроллере с которого она берет время и на PDC.
Поняв текущую схему, можно переходить к изменениям настроек. Здесь нужно понимать, что есть сервис Windows Time (W32Time) и его субкомпонент который переводит часы на компьютере или изменяет их тактовую частоту. Сейчас мы будем говорить о настройках W32Time касающихся работы с NTP серверами.
Настройки расположены в двух разделах реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\W32Time
При установке ОС создается только первый раздел, второй появляется при применении локальной или доменной политики и имеет приоритет. Из командной строки настройки Windows Time можно помотреть командой w32tm /query /configuration. Причем, настройки взятые из первого раздела будут отображаться с отметкой (Local), из второго с отметкой (Policy).
Настройки достаточно подробно описаны в Windows Time Service Tools and Settings. У меня, сложности вызвал, параметр HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters\NtpServer
Он представляет собой перечисление NTP серверов с которыми может синхронизироваться данный сервер. Каждый сервер представляет собой IP адрес или DNS имя, а также флаг, относящийся к данному NTP серверу. Флаг следует после имени сервера и отделяется от него запятой. Сервера в строке разделяются пробелами. (Внимание. Допустим только один пробел, двойной пробел считается концом строки и имена серверов после него не рассматриваются).
Используется два основных флага 0x01 и 0x02.
0x01 SpecialInterval
От этого флага зависит как будет Windows Time использоват параметры:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient\SpecialPollInterval
Если данный флаг присутствует, то сервер NTP будет опрашиваться через заданный параметром SpecialPollInterval период времени (секунды).
При отсутствии флага будет использоваться динамический интервал, ограниченный параметрами MinPollInterval и MaxPollInterval (двоичный логарифм от секунд, например, значение параметра 6 значит опрос сервера будет происходит через 2 в степени 6 = 64 секунды).
Посмотреть интервалы опроса и время оставшееся до следующего опроса можно командой w32tm /query /peers - строки PeerPoll Interval и Time Remaining.
Еще раз подчеркну, что интервалы отосятся к опросу NTP серверов, а не к обновлению времени системы.
Имеются неожиданные последствия, если все сервера указать с данным флагом - они перейдут в статус Pending. Если выполнить команду w32tm /monitor то можно увидеть, что RefId изменился на 'LOCL' [0x4C434F4C]. То есть, сервер не стал синхронизироваться с внешними NTP и выбрал источником синхронизации Local CMOS Clock (идентификатор этого источника 0x4C434F4C). С таким сервером часть клиентов синхронизироваться не будет, например, UNIXы в зависимости от настроек.
0x02 UseAsFallbackOnly
По моему мнению, данный флаг сделан специально для запутывания процесса. Предполагается, что помеченные этим флагом сервера будут опрашиваться только в случае неудачного опроса основных серверов (без флага 0x02). Но на практике реакция на данный флаг непредсказуема.
Я рекомендую не указывать никаких флагов, а просто задать имена серверов разделенные пробелами:
и управлять частотой опроса через параметры MinPollInterval и MaxPollInterval
Все настройки сделанные в реестре вручную либо через политику вступают в силу после рестарта сервиса W32Time.
Собственно все, про NTP, в реализации от Микрософт.
Теперь немного о субкомпоненте (clock discipline subcomponent) который переводит локальные часы системы или изменяет их тактовую частоту в соответствии с данными NTP.
Он также настраивается через реестр, выше была приведена статья с описанием настроек, к данному субкомпоненту относятся:
FrequencyCorrectRate
HoldPeriod
LargePhaseOffset
MaxAllowedPhaseOffset
MaxNegPhaseCorrection
MaxPosPhaseCorrection
PhaseCorrectRate
PollAdjustFactor
SpikeWatchPeriod
UpdateInterval
В большинстве случаев их изменение не требуется.
Но иногда таки приходится.
Например, параметр MaxAllowedPhaseOffset (по умолчанию 300 секунд) управляет способом перевода локальных часов. Если расхождение между локальным временем и NTP источником меньше MaxAllowedPhaseOffset то W32Time пытается скорректировать время изменением тактовой частоты часов. Если - больше то локальное время переводится согласно полученному от NTP сервера.
Лучше попробовать способ с изменением тактовой частоты, для этого в первую очередь нужно установить MaxAllowedPhaseOffset = 350. Это необходимое, но недостаточное условие. Также должно выполнятся соотношение:
|CurrentTimeOffset| / (PhaseCorrectRate*UpdateInterval) < SystemClockRate / 2
SystemClockRate получим командой w32tm /query /status /verbose строка вывода ClockRate: 0.0156250s переведем секунды в такты ОС (1ms = 10000 тактов): 0.0156250s*1000*10000 = 156250 тактов.
В XP w32tm /query еще не поддерживается и значение SystemClockRate можно взять из реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\LastClockRate
Выполняем команду w32tm /query /configuration - берем строки вывода UpdateInterval: 100 и PhaseCorrectRate: 1 (можно взять эти же значения из реестра).
UpdateInterval - по единицам измерения данной величины в источниках от Микрософт есть противоречие. В вышеприведенной статье указано, что величина измеряется в тактах и ее нужно подставлять в формулу как есть. В описании групповой политики единица измерения указана 1/100 секунды. В микрософтовском примере значение UpdateInterval используется без пересчета (по моим опытам это действительно так). PhaseCorrectRate - скалярная величина используем ее как есть.
Подставляем в условие:
|3200 000 000| / (1*100) < 156250 / 2
32 000 000 < 78125 не выполняется.
Подберем значение UpdateInterval с которым условие будет выполняься = 40960. Сделаем запас и установим UpdateInterval = 45000.
|3200 000 000| / (1*45000) < 156250 / 2
71111 < 78125 второе условие выполнено.
Изменяем значение UpdateInterval в реестре, перезапускаем сервис W32Time. Устраняем причину неработоспособности NTP (если необходимо выполняем w32tm /resync) и . локальные часы начинают плавно синхронизироваться, путем корректировки тактовой частоты.
Комментарии
Сегодня столкнулся с
Сегодня столкнулся с проблемой - все сконфигурировано правильно, но время не синхронизируется.
Выявить такие ситуации можно анализируя сетевой трафик, например с помощью Network Monitor. Будет видно, что ваш сервер посылает правильный запрос, а в ответ ему ничего не приходит.
Да, внутренние настройки -
Да, внутренние настройки - это хорошо, но и это очень важный момент:
"Допустим, что в вашем домене, по какой-либо причине, в течении длительного времени не было синхронизации с внешним NTP. Обнаружив проблему вы видите, что разница составляет 320 секунд."
Проблема как раз в обнаружении проблемы. Я на простом домашнем компе написал батник, который синхронизирует время и засунул ярлык в автозагрузку. Когда внешне всё в порядке, то всё нормально синхронизируется. После этого службу даже можно остановить, чтобы не путалась под ногами. А если внешний сервер отвалится? w32tm об этом сообщит и завершит работу вроде бы штатно, при этом errorlevel=0. И окно cmd закроется, тем более, что оно у меня вообще свёрнуто. И я буду думать, что синхронизация продолжается. А как сделать так, чтобы неудачная попытка синхронизации изменяла поведение батника?
На вопрос так как он
На вопрос так как он поставлен ответа у меня нет, но позволю предложить свое решение.
1. служба w32time остается включенной и настраивается на требуемый режим синхронизации, под ногами она совершенно не путается, это не какой-нибудь там windows search или diagnostic policy
вывод там будет такой
The current time is 28.03.2018 17:40:53.
17:40:53, +00.3551899s
его можно распарсить и при расхождении во времени больше заданного выдавать оповещение
А как синхронизировать время
А как синхронизировать время на сетевых устройствах (принтера, свитчи, камеры) с контроллером домена? Их в домен не добавить и реестра у них нет.
Клиентом может быть любое
Клиентом может быть любое устройство поддерживающее протокол NTP.
Вводить в домен не обязательно.
Просто задайте на устройстве адрес вашего домен контроллера и убедитесь, что на сетевом уровне открыты порты для NTP.
Читайте также: