Конфигурирование и управление службой времени в Windows

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

Отказ от W32Time для пользователей сети не имеет очевидных последствий. Однако для некоторых функций и процессов необходимы точные и синхронизированные маркеры времени. Например, маркеры времени используются в процессе генерации билета аутентификации Kerberos. По умолчанию, аутентификация Kerberos заканчивается неудачей, если время на клиентском компьютере и выполняющем аутентификацию контроллере домена (DC) различается больше, чем на 5 мин. Этот интервал называется максимальной погрешностью синхронизации компьютерных часов (Maximum Tolerance for Synchronization of Computer Clocks). Изменить его можно с помощью групповой политики, но при этом возникает угроза безопасности сети.

Решение о копировании данных в процессе репликации также зависит от точности синхронизации времени. Если различия во времени между двумя DC превышают максимальную погрешность синхронизации, то два DC не могут аутентифицировать друг друга, и репликация данных становится невозможной. Не менее серьезные последствия будут иметь и ошибки в записи файлов данных, вызванные различиями во времени между компьютерами. Кроме того, неточные временные маркеры могут привести к ошибкам при синхронизации автономных файлов, вводе информации в базу данных и совместной работе с документами.

Организация эталонного сервера времени

Эталонный сервер времени — это контроллер домена DC, который сверяет время с точным внешним хронометром.

В домене с несколькими DC функции эталонного сервера времени возлагаются на контроллер, который играет роль эмулятора PDC. По умолчанию, эмулятор PDC — это первый DC, устанавливаемый в домене. Если в сети имеется несколько доменов (лес), то эмулятор PDC первого домена в лесу будет служить эталонным сервером времени для всего леса.

Чтобы указать URL или IP-адрес эталонного внешнего таймера, необходимо выполнить на DC, который играет роль эталонного сервера времени, следующую команду:

net time /setsntp:(server_ address
 or server_list)

Целевой внешний сервер должен быть сервером времени SNTP (Simple Network Time Protocol — простой сетевой протокол временной синхронизации), а UDP-порт 123 должен быть открыт для доступа из Internet. Адреса серверов времени приведены во врезке «Где найти серверы времени?». В случае отказа внешнего сервера система попытается установить соединение с другим сервером из составленного администратором списка. Адреса в списке должны быть разделены пробелами, а весь список заключен в кавычки, например:

net time
 /setsntp:»192.5.41.209 192.5.41.41»

Экран 1. Записи в реестре для W32Time.
Результаты выполнения команды net time /setsntp заносятся в реестр, и эталонный сервер времени автоматически синхронизирует свой таймер с внешним источником. Элементы реестра, показанные на Экране 1, записываются в раздел HKEY_LOCAL_MACHINE SYSTEM CurrentControlSet Services W32Time Parameters. В Таблице 1 разъясняется выбор значений для элементов реестра. При использовании списка из нескольких серверов NTP (Network Time Protocol — сетевой протокол временной сихронизации) указатели URL следует заменить на IP-адреса. Если перечислить NTP-серверы по имени DNS, то из-за ошибки в Windows 2000 операционная система попытается установить соединение только с первым именем в списке, игнорируя остальные. Но при использовании IP-адресов операционная система последовательно пытается установить связь с каждым IP-адресом, пока не синхронизирует время (ошибка исправлена в Windows 2000 Service Pack 3).

Использование NTP с сервером-посредником

Если W32Time работает на машине, скрытой за системой Microsoft Proxy Server, то, возможно, ей не удастся подключиться к внешнему NTP-серверу. W32Time работает от имени локальной системной учетной записи на внутреннем сервере, а сервер-посредник, как правило, использует режим контроля доступа Access Control. Существует несколько способов решения проблемы.

  • Отключить режим Access Control для Winsock Proxy. Для этого следует открыть Microsoft IIS Manager из меню Administrative Tools, открыть диалоговое окно Properties для службы Winsock Proxy, щелкнуть на вкладке Permissions и сбросить флажок Enable Access Control.
  • Настроить сервер времени на сервер-посредник вместо внешнего NTP-сервера, а затем указать посреднику на внешний сервер.
  • Ежедневно выполнять на эталонном сервере времени командный файл с помощью Task Scheduler. Файл следует дополнить следующими командами:
net stop w32time
w32tm -once
net start w32time

Иерархический поиск источника точного времени

Рабочие станции XP и Windows 2000 Professional, автономные серверы Windows 2000 и все DC, которые не являются эталонными серверами времени, автоматически синхронизируют свои таймеры с нужным DC. Чтобы синхронизировать время в сети, W32Time использует иерархический метод. Данный метод предполагает, что в сети есть эталонный сервер времени. Если из-за отсутствия сервера поиск источника точного времени закончится неудачей, в журналах всех сетевых компьютеров появится множество сообщений об ошибках. Они описаны в разделе «Типичные ошибки W32Time». В иерархии службы времени существует три уровня.

  • Уровень 1: эталонный сервер времени.
  • Уровень 2: другие DC домена (если они существуют) и другие DC других доменов леса (если они существуют).
  • Уровень 3: члены-серверы Windows 2000 и рабочие станции XP и Windows 2000.

На уровне 1 эталонный сервер времени ищет источник точного времени в Internet и пытается установить связь с выбранными администратором внешними серверами времени. В сети может существовать лишь один компьютер уровня 1, и только он может обращаться к внешнему источнику времени. Чтобы определить, настроен ли этот компьютер на связь с нужным источником времени, следует ввести команду

net time /querysntp

В ответ должен быть получен Internet-адрес внешнего сервера (или несколько Internet-адресов, если указан список внешних серверов времени).

На уровне 2 все DC сети ведут поиск в родительском домене (если существует лес), а затем ищут эталонный сервер времени в текущем домене. Обнаружив эталонный сервер времени, все DC синхронизируют с ним свои таймеры. Эталонный сервер времени для контроллеров домена играет роль NTP-сервера.

На уровне 3 компьютеры синхронизируют свои таймеры с DC, на котором была проведена аутентификация. Считается, что таймер аутентифицирующего DC точен, так как он синхронизирован с NTP-сервером для клиентов уровня 3. Только компьютеры XP и Windows 2000 обеспечивают такую автоматическую синхронизацию. О синхронизации машин со старыми версиями Windows рассказано в разделе «Синхронизация NT 4.0 и клиентов Windows 9x».

Процесс синхронизации времени

Когда компьютеры регистрируются в домене, служба времени проверяет время на соответствующем компьютере и определяет «целевое» время. Для машин уровня 2 целевым временем будет время эталонного сервера времени. Для всех других компьютеров целевым считается время DC аутентификации (компьютера уровня 2). Чтобы согласовать локальное время с целевым, локальный (клиентский) компьютер выполняет следующие действия.

  • Если целевое время больше локального, то Win32Time автоматически изменяет локальное время, приравнивая его к целевому.
  • Если целевое время меньше локального не более, чем на 3 мин, то Win32Time понижает частоту локального таймера до тех пор, пока время не сравняется. Если локальное время опережает целевое более чем на 3 мин, то Win32Time автоматически изменяет локальное время.

Другой способ — вручную синхронизировать таймер любого сетевого компьютера XP или Windows 2000 (кроме аутентифицированного сервера времени) с помощью команды

net time /set

Пользователь получает сообщение, приведенное на Экране 2. Чтобы согласовать локальное время со временем аутентифицирующего DC, нужно нажать клавишу Y.

Временная синхронизация производится не только при начальной загрузке. Таймеры компьютеров XP и Windows 2000 периодически синхронизируются в процессе работы. По умолчанию, клиентские машины подключаются к источникам точного времени один раз за «период», который определяется следующим образом.

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

Использование команды net time /set для ручной синхронизации таймера на подсчете числа успешных проверок не отражается.

Синхронизация NT 4.0 и клиентов Windows 9x

Сетевые клиенты NT 4.0 и Windows 9x должны быть синхронизированы вручную. Для этого следует ввести команду net time /set /yes, где ComputerName — имя компьютера в данном домене, таймер которого считается эталонным. Служба W32Time на компьютерах NT и Windows 9x не работает, поэтому периодическая автоматизированная синхронизация не производится. Если ввести команду в командный файл, а ярлык командного файла поместить в папку Startup, то временная синхронизация будет выполняться каждый раз при запуске компьютера; или же можно поместить ярлык на «рабочем столе», чтобы пользователи могли действовать по своему усмотрению.

Типичные ошибки W32Time

Сообщения об ошибках W32Time заносятся в журнал System утилиты Event Viewer; в качестве источника сообщений указывается W32Time (чтобы сортировать журнал по источникам сообщений, следует щелкнуть на столбце Source). Многие события, записываемые службой времени, являются информационными, но если обнаружено предупреждение, то следует принять меры для устранения неполадки.

Если администратор не назначил эталонный сервер времени, то первый DC домена (или первого домена в лесу) запишет в журнал System следующее событие: This Machine is a PDC of the domain at the root of the forest. Configure to sync from External time source using the net command, ?net time /setsntp:. («Данная машина — главный контроллер корневого домена леса. Настройте его на синхронизацию с внешним источником времени, используя команду

?net time/setsntp:».)

Если эталонный сервер времени недоступен и возникают проблемы репликации DC, то не всегда очевидно, что причина кроется в службе времени. Когда источники времени становятся недоступными, W32Time не генерирует сообщений об ошибках в журнале System. Я надеюсь, что этот недостаток будет устранен в будущих версиях Windows. Но если система выдает сообщение об ошибке The RPC server is unavailable, то, скорее всего, произошел сбой службы синхронизации времени.

Если клиент XP или Windows 2000 не может найти домена для аутентификации (как правило, это случается в небольших сетях с единственным DC), то клиент может зарегистрироваться на любой машине, так как по умолчанию система кэширует пароли и имена пользователей. Однако процесс синхронизации времени срывается, и в результате W32Time записывает в журнал System событие с ID 11 (The NTP Server didn?t respond — NTP-сервер не ответил).

Событие с ID 11 — типичное предупреждение на эталонном сервере времени. Если предупреждение приходит часто, то следует повторно ввести команду net time /setsntp: и найти другой сервер времени в Internet или добавить IP-адреса нескольких NTP-серверов.

Если сеть занята или возникли неполадки с сетевой платой или кабелем, то в журнал System может быть записано событие с ID 64. Источник этого события — W32Time, но проблема не связана с данной службой. Тем не менее это событие может быть единственным предупреждением о разрыве соединения. На Экране 3 показано сообщение для события с ID 64. Данное сообщение относится к программе w32tm.exe, с помощью которой можно исследовать и изменить службу W32Time. Чтобы получить рекомендации по использованию этого инструмента, нужно ввести команду

w32tm /?

Вопрос времени

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

Кэти Ивенс — редактор Windows & .NET Magazine. С ней можно связаться по адресу: kivens@winnetmag.com.


Где найти серверы времени?

При синхронизации эталонного сервера времени с внешним сервером времени NTP (Network Time Protocol) Windows устанавливает местное время с учетом перехода на летнее время и обратно. Кроме того, операционная система компенсирует любые задержки в каналах Internet.

Серверы времени расположены по всему миру и организованы в иерархическую структуру. Первичные (уровень 1) серверы — наиболее точные, но вторичные (уровень 2) серверы, как правило, безупречно синхронизированы или лишь незначительно рассогласованы с серверами уровня 1. Разница, не превышающая нескольких наносекунд, безусловно, не приведет

к проблемам в сетевых функциях, зависимых от службы времени Windows. Серверы уровня 1 очень загружены, и попытки обращения к ним могут оказаться неудачными из-за тайм-аута. Поэтому рекомендуется выбирать в качестве внешних NTP-серверов серверы уровня 2.

Список серверов 1 уровня приведен на сайте http://www.eecis.udel.edu/ ~mills/ ntp/ clock1.htm. Список серверов уровня 2 можно получить по адресу: http://www.eecis.udel.edu/ ~mills/ ntp/ clock2.htm.

В каждом списке перечислены общедоступные NTP-серверы времени. Для каждого сервера указаны код страны, штат (только США), имя узла, Internet-адрес и сведения о географическом положении.

Два популярных внешних сервера времени в США принадлежат Военно-морской обсерватории (USNO): ntp2.usno.navy.mil (192.5.41.209) и tock.usno.navy.mil (192.5.41.41). Среди популярных канадских серверов — clyde.concordia.ca (132.205.1.1), manitou.cs.concordia.ca (132.205.4.3) и xntp.ece.concordia.ca