Windows 2003 синхронизация времени с внешним источником
Управление временем — один из ключевых аспектов системного администрирования. Как правило, все клиентские серверы и рабочие станции синхронизируют время с доменом Active Directory, однако откуда берется точное время в AD? Это зависит от разных факторов. В стандартной конфигурации время синхронизируется с серверами Microsoft, а виртуальные машины обычно получают данные от хост-сервера.
Лучше всего задать единый источник данных о точном времени для всех компьютеров в корпоративной сети — сервер (или несколько серверов), с которым будут синхронизироваться все системы. Это может быть ресурс или пул ресурсов в Интернете, либо локальный сервер. Так или иначе, с источником точного времени стоит определиться заранее.
За синхронизацию компьютеров и серверов Windows отвечает сетвой протокол Network Time Protocol (NTP). NTP использует для своей работы протокол UDP порт по умолчанию 123. Что бы в дальнейшем можно было настроить работу этого сетевого протокола, необходимо проверить, не блокирует ли этот порт фаерволл.
Способы указания NTP Сервера.
1) Команда w32tm позволяет задать список пиров, предоставляющих информацию о точном времени для домена. Чтобы получить дополнительные сведения о команде w32tm, введите в командной строке указанную команду w32tm /?
Первым, что необходимо сделать, это выяснить в каком состоянии находятся контролеры домена в домене. Для этого запускаем в командной строке команду (если у вас права доменного администратора, то можете запустить командную строку на своей рабочей станции)
w32tm /monitor — команда позволяет посмотреть с каким сервером (серверами)/сервисом происходит синхронизация и какая разница во времени с эталонным севером.
w32tm /config /manualpeerlist:time.windows.com /syncfromflags:manual /reliable:yes /update — этой командой мы указываем с каким сервисом/сервером будет происходить синхронизация ( в данном примере с time.windows.com).
Эта команда выполняется на контроллере домена однократно и записывает указанные адреса в реестр ( по пути HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\Parametrs в параметре NTPServer должно быть прописано time.windows.com). Можно указать сразу несколько серверов, разделенных пробелами.
NoSync— Служба времени не синхронизируется с другими источниками.
NTP- Служба времени выполняет синхронизацию с серверами, указанными в записи реестра NtpServer.
NT5DS- Служба времени выполняет синхронизацию на основе иерархии домена.
AllSync- Служба времени использует все доступные механизмы синхронизации.
Значение CrossSiteSyncFlags выбираем 2.
CrossSiteSyncFlags. Определяет возможность выбора службой партнеров по синхронизации за пределами домена компьютера.
Нет 0
PdcOnly 1
Все 2
В значении ResolvePeerBackoffMinutes прописываем 15
ResolvePeerBackoffMinutes- указывает первоначальный интервал ожидания (в минутах) перед тем, как начать поиск узла одноранговой сети для синхронизации. Если службе времени Windows не удается успешно синхронизироваться с источником времени, будут выполняться повторные попытки с использованием указанных значений параметров ResolvePeerBackoffMinutes и ResolvePeerBackoffMaxTimes.
В значении ResolvePeerBackoffMaxTimes прописываем 7
ResolvePeerBackoffMaxTimes- указывает максимальное число раз удвоения интервала ожидания в случае, если повторяющиеся попытки поиска узла одноранговой сети для синхронизации не дали результата. Нулевое значение предполагает, что интервал ожидания всегда равен первоначальному, указанному в параметре ResolvePeerBackoffMinutes.
В значении SpecialPollInterval прописываем 3600
SpecialPollInterval- указывает интервал специального опроса (в секундах) для узлов одноранговой сети, настроенных вручную. Если специальный опрос включен, то служба времени Windows будет использовать его интервал вместо динамического значения, определяемого с помощью алгоритмов синхронизации, встроенных в службу времени Windows.
Если вы создали политику, то ее нужно применить на все контролеры домены.
Записки IT специалиста
Технический блог специалистов ООО»Интерфейс»
Синхронизация времени 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, и на обычных ПК, где в выводе будет присутствовать любой из контроллеров домена. Обязательно выполните контроль для виртуальных машин, чтобы быть уверенным, что они используют время домена, а не хоста виртуализации.
Настройка синхронизации времени в домене
Как настроить синхронизацию времени во всём домене сразу? И так, чтобы работало дальше само? А когда контроллер домена с ролью PDC изменится, что делать? А если уже синхронизация времени в домене настроена, но работает плохо, как починить?
Обо всём этом читайте в этой статье.
Немного теории
Синхронизация времени в домене может (теоретически) работать сама, безо всяких настроек. Выглядит это обычно так:
- Компьютеры домена и серверы синхронизируют свое время с контроллерами домена (с ближайшими к ним).
- Контроллеры домена синхронизируют свое время с контроллером домена, которому назначена FSMO роль PDC (в терминах windows 2000 — «первичный контроллер домена»).
- Контроллер домена (КД) с ролью PDC синхронизирует время с внешним источником.
А дальше — начинаются ньюансы:
- Если контроллер домена виртуальный, в настройках виртуальной машины должна быть выключена синхронизация времени [с хостом]. Иначе (если, к примеру, хост с виртуальными машинами — в домене): виртуальный контроллер домена будет (автоматически) синхронизировать время с хостом, а хост — с ближайшим контроллером домена, т.е. со своей виртуалкой.
- Если синхронизация времени уже настроена (вручную или через групповые политики) то задаваемые Вами новые настройки могуть не примениться (несмотря на сообщение successful во всех командах) и тогда потребуется полный сброс настроек синхронизации времени на проблемных компьютерах или контроллерах домена.
Как проверить, работает ли синхронизация времени в домене?
До того, как что-либо «ломать» (и в процессе настройки, чтобы проверять эффективность вносимых изменений) необходимо производить диагностику текущего состояния, а также анализировать текущую конфигурацию службы времени. Этому призваны помочь несколько команд, указанных ниже.
Команда
w32tm /monitor
- Может быть выполнена на любом компьютере (или контроллере) домена.
- Показывает список всех контроллеров домена (с которыми может выполняться синхронизация времени).
- Для каждого контроллера домена в поле «NTP:» отображает разницу во времени с PDC контроллером домена (который является источником для синхронизации времени во всём домене).
- Для каждого контроллера домена в поле «RefID:» отображается информация об источнике синхронизации времени для этого контроллера домена. Для всех контроллеров домена (кроме КД с ролью PDC) это должен быть либо другой контроллер домена, либо КД с ролью PDC.
Команда
w32tm /query /Source
или
w32tm /query /peers
- Может быть выполнена на любом компьютере или контроллере домена.
- Показывает источник для синхронизации времени (с каким компьютером синхронизируется время того компьютера, на котором запущена эта команда). Для любых компьютеров/серверов это должен быть один из контроллеров домена, для любого контроллера домена (кроме PDC) это должен быть другой КД (обычно — с ролью PDC), для КД с ролью PDC это должен быть внешний источник синхронизации времени (интернет).
Если в результатах выполнения команды отобразилось сообщение «VM IC Time Synchronization Provider» — значит, эта виртуальная машина синхронизируется с хостом виртуализации. Если эта виртуальная машина — один из контроллеров домена, такую настройку следует изменить!
Команда
w32tm /query /Configuration /verbose
- Может быть выполнена на любом компьютере или контроллере домена.
- Выводит все настройки службы времени windows для текущего компьютера.
- Убедитесь, что в результатах выполнения команды на всех компьютерах и контроллерах домена (кроме PDC) в разделе [TimeProviders] поле Type имеет значение NT5DS. Если это не так, настройки синхронизации на таких компьютерах надо исправлять (как — см. далее).
- Если у Вас Windows 2003, то Вы не можете выполнить эту команду. Вместо этого Вы можете посмотреть параметры конфигурации службы времени в реестре: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters, в частности параметр Type.
Команда
w32tm /query /status /verbose
- Может быть выполнена на любом компьютере или контроллере домена.
- Отображет состояние синхронизации (в т.ч. источник синхронизации, время и статус последней синхронизации) для компьютера, на котором выполняется. Опция «/verbose» дает более подробную информацию.
Команда
w32tm /stripchart /computer:» » /samples:3 /dataonly
Сравнивает время (и отображает разницу во времени) на текущем компьютере с компьютером, указанном в аргументе /computer. Компьютер-источник для сравнения времени может быть как в интернете, так и в локальном домене. Примеры команды:
w32tm /stripchart /computer:»ntp.org» /samples:3 /dataonly
или
w32tm /stripchart /computer:»dc1.domain.local» /samples:3 /dataonly
Как исправить настройки синхронизации времени
Настройка синхронизации времени на компьютерах и контроллерах домена
(кроме КД с ролью PDC)
- Найдите все групповые политики, изменяющие настройки синхронизации времени, и отключите такие политики. Через групповые политики служба времени настраивается здесь: gpedit.msc => «Computer Configuration» => «Administrative Templates» => «System» => «Windows Time Service» => «Time Providers». Проверьте, что политики синхронизации времени не применяются, для этого можно выполнить команду:
gpresult /R - Проверьте, что на всех виртуальных машинах — контроллерах домена отключена синхронизация времени с хостами виртуализации. Для этого (в Hyper-V) можно зайти в свойства виртуальной машины, раздел средств интеграции и отключить синхронизацию времени. После чего конфигурацию службы времени (на виртуальном контроллере домена) нужно обновить.
- Обновите конфигурацию на всех проблемных компьютерах / контроллерах домена (кроме КД с ролью PDC):
w32tm /config /syncfromflags:DOMHIER /update - Выполните принудительную синхронизацию времени, дав команду заново найти источники синхронизации времени:
w32tm /resync /rediscover - Если вышеуказанные действия не помогают, перезагрузите службу времени (на проблемных компьютерах)
net stop w32time
net start w32time
и заново выполните пункты 3 и 4. - Если вышеуказанные действия не помогли решить проблему с синхронизацией времени, необходима перерегистрация службы времени на проблемных компьютерах (и повторная настройка параметров).
net stop w32time
w32tm /unregister
w32tm /register
net start w32time
Настройка синхронизации времени на контроллере домена с ролью PDC
Настройки времени на КД с ролью PDC принципиально отличаются от настроек на всех остальных компьютерах в домене (включая остальные контроллеры домена). PDC является источником времени во всём домене, именно его время будет использовано (прямо или косвенно — через другие контроллеры домена) всеми остальными компьютерами.
- Если контроллер домена с ролью PDC — виртуальная машина, убедитесь, в настройках этой виртуальной машины отключена синхронизациия времени с хостом, на котором она находится!
- Убедитесь, что групповые политики синхронизации времени во всем домене (если они у Вас есть) не применяются к КД с ролью PDC! У этого компьютера источник времени — в интернете, и тип синхронизации времени (в отличие от всего остального домена) не NT5DS, а NTP!
- Если есть сомнения в том, что синхронизация времени на КД с ролью PDC выполняется правильно, проще всего выполнить перерегистрацию и повторную настройку службы времени.
Перерегистрация службы времени на контроллере домена с ролью PDC
Для отмены регистрации и повторной регистрации службы времени выполните следующие команды:
net stop w32time
w32tm /unregister
w32tm /register
net start w32time
Настройка синхронизации времени на контроллере домена с ролью PDC
Наш КД с ролью PDC необходимо настроить на синхронизацию с внешним источником (в интернете). Для этой цели не подходит тип синхронизации NT5DS и синхронизации в соответствии с иерархией домена (DOMHIER). Поэтому на нашем КД с ролью PDC мы используем тип синхронизации NTP и синхронизация будет настроена вручную (MANUAL). Источники синхронизации (peers) указываются в кавычках, а если таких источников несколько, то они перечисляются через запятую. Кроме того, мы даем указание считать данный источник синхронизации (КД с ролью PDC) надежным источником времени (reliable):
w32tm /config /syncfromflags:manual /manualpeerlist:»0.pool.ntp.org, 1.pool.ntp.org, 2.pool.ntp.org» /reliable:yes /update
Теперь можно ускорить применение параметров и синхронизацию времени, перезагрузив службу времени и форсировав синхронизацию:
net stop w32time
net start w32time
w32tm /resync /force или w32tm /resync /rediscover
После выполнения этих команд (сделав паузу в несколько минут на применение параметров и выполнение синхронизации) сравните время на контроллере домена с временем в интернете:
w32tm /stripchart /computer:»0.ru.pool.ntp.org» /samples:3 /dataonly
Не забудьте проверить, что на всех контроллерах домена время синхронизировалось с PDC. Для этого наберите команду:
Всё должно заработать!
P.S.: Обратите внимание, что применение параметров команды w32tm требует времени. Поэтому после каждого обновления конфигурации рекомендуем делать паузу в 1-5 минут, а потом уже проверять, обновилась ли конфигурация службы времени, и как всё работает.
Источники информации для данной статьи:
Статья опубликована: 20.08.2017, обновлена 31.01.2020