Синхронизация времени NTP.
Синхронизация времени является важной задачей, хотя не многие задумывались об этом. Ну что плохого в убежавшем на сервере времени? А знаете ли вы, что многие проблемы с часами влияют на протоколы, связанные с криптографией? По этой причине в Active Directory разница в часах более 5 минут будет приводить к проблемам аутентификации Kerberos.
Чтобы понять устройство NTP следует знать про концепцию strata или stratum. Авторитетные источники времени, такие как спутники GPS, цезиевые атомные часы, радио волны WWVB — всё это stratum 0. Они авторитетны на том основании, что у них есть некоторый способ поддержания высокоточного хронометража. Можно, конечно, воспользоваться обычными кварцевыми часами, но зная, что за месяц с ними легко потерять 15 секунд, то лучше их не использовать в качестве мерила времени. Stratum 0 это когда секунда не потеряется за 300 000 лет!
Компьютеры, которые напрямую (не по сети!) берут время у stratum 0 — это stratum 1. Так как всегда есть задержки из-за передачи сигнала и затраты на установку времени, то компьютеры stratum 1 не так точны как stratum 0, но в реальной жизни различие достигает пару микросекунд (1 мкс = 10 -6 с), что вполне допустимое отклонение.
Следующий уровень компьютеров, берущих время по сети у stratum 1 — это . барабанная дробь . интрига . stratum 2! Опять таки из-за различных задержек (сетевые точно), stratum 2 чуток отстаёт от stratum 1 и уж точно от stratum 0. На практике это разница от нескольких микросекунд (1 мкс = 10 -6 с) до нескольких миллисекунд (1 мс = 10 -3 с). Многие хотят синхронизироваться со слоем не дальше stratum 2.
Как понятно из схемы, stratum 4 берёт время у вышестоящего stratum 3. stratum 5 у stratum 4 и так далее. stratum 16 считается самым нижним слоем и время там считается несинхронизированным.
Чтобы синхронизировать время с помощью протокола NTP, следует сначала вручную выставить ваше время. Недопустима разница между вашим точным временем и показаниями ваших часов более 1000 секунд. Если используемый вами сервер времени врёт более 1000 миллисекунд (1 секунда), то он будет исключён из списка и будут использоваться другие вместо него. Данный механизм позволяет отсеивать плохие источники времени.
Синхронизация времени в Windows
На любом компьютере с Windows можно запустить встроенный сервер точного времени, с которого смогут обновляться другие компьютеры сети, если в этом есть необходимость.
Для активации сервера нужно в реестре в ветке HKLMSystemCurrentControlSetservicesW32TimeTimeProvidersNtpServer установить значение параметра Enabled равным 1.
Затем через командную строку нужно перезапустить службу времени Windows (или просто перезагрузите компьютер):
Что такое NTP
NTP — это сокращение от Network Time Protocol, что переводится как «протокол сетевого времени».
Протокол спроектирован так, чтобы заниматься только синхронизацией времени. Для этого используются пакеты объёмом всего 48 байт, причём 24 из них заполняет устройство, а 24 — сервер. Это значит, что для точности в 0,01 секунды достаточно один раз получить и передать 48 символов. Если размер пакета сделать слишком большим, то задержки при передаче будут больше и может пострадать точность синхронизации.
Для работы NTP нужен сервер точного времени, который ответит на наш запрос. Сервер всегда знает, какое сейчас время, и моментально реагирует на каждый запрос.
В операционной системе Windows точное время берётся с сервера time.windows.com У компании Apple сервер точного времени — time.apple.com
Как правильно настроить установку даты и времени через Интернет.
В современных ОС семейства Windows предусмотрена возможность автоматической синхронизации часов локального компьютера с показаниями сервера времени в Интернет по протоколу NTP ( N etwork T ime P rotocol). В частности, предусмотрено выполнение планировщиком заданий стандартной задачи синхронизации времени с внешним источником SynchronizeTime , которая может иметь разные настройки в разных версиях ОС Windows.
В Windows 7, задача SynchronizeTime выполняет запуск службы времени Windows по расписанию:
Как видим, задача запускается в 1 час ночи по воскресеньям еженедельно, когда большинство компьютеров выключено. Но настройка Параметры — флажок Немедленно запускать задачу, если пропущен плановый запуск для большинства случаев означает, что задача реально выполняется при первом включении компьютера в понедельник (или другие дни недели). С учетом мизерного трафика, требующегося для синхронизации времени по протоколу NTP и мизерного потребления ресурсов компьютера, такую задачу можно было бы выполнять, например, при каждом входе пользователя в систему, изменив свойства триггера ”Начать задачу”:
В отличие от Windows 7, в Windows 8-10 имеется уже 2 задачи, выполняющие синхронизацию: SynchronizeTime и ForceSynchronizeTime . Первая выполняет те же функции, что и рассмотренная выше, и может быть настроена на запуск таким же образом, обеспечивая синхронизацию при входе пользователя в систему.
Действия, выполняемые задачей SynchronizeTime можно посмотреть на вкладке Действия .
Как видим, задача выполняет запуск утилиты управления системными службами sc.exe , которая запускает Службу времени Windows (W32Time). При запуске службы времени выполняется синхронизация часов локального компьютера с NTP-сервером, определенным настройками службы (стандартно – time.windows.com). Настройки можно изменить командой w32tm или изменением параметров в разделе реестра
HKLMSystemCurrentControlSetservicesw32time
В ключе Config имеются параметры MaxNegPhaseCorrection и MaxPosPhaseCorrection задающие максимальное отрицательное и положительное отклонение показаний часов, при котором может выполняться синхронизация. Значение по умолчанию — 54000 (в секундах), т.е. 15часов, что является причиной невозможности синхронизации часов стандартной задачей планировщика SynchronizeTime, например, при изменении даты (отклонение более чем на 15 часов). Поэтому, для надежной синхронизации, независимо текущих показаний аппаратных часов компьютера, желательно увеличить абсолютное значение параметров MaxNegPhaseCorrection и MaxPosPhaseCorrection , или вообще задать им максимальное значение для типа DWORD – 0xffffffff или 4294967295.
После такого изменения параметров MaxNegPhaseCorrection и MaxPosPhaseCorrection в реестре системы, синхронизация часов с NTP-сервером будет выполняться при любых значениях даты и времени на локальном компьютере.
При желании, можно изменить имя NTP-сервера, с которым будет выполняться синхронизация (подключ Parameters параметр NTPServer) либо правкой реестра, либо с помощью команды w32tm, в командной строке, запущенной от имени администратора:
w32tm /config /syncfromflags:manual /manualpeerlist:ru.pool.ntp.org /update — изменить конфигурацию службы времени, для использования сервера NTP ru.pool.ntp.org и применить сделанные изменения.
Как осуществляется
Синхронизация временных показателей через интернет осуществляется по особому сетевому протоколу NTP. Протокол включает набор директив и алгоритмов, позволяющих настроить часы с погрешностью в доли секунды. Технология трансляции временных показателей имеет многоступенчатую структуру, в которой каждый последующий уровень устройств сверяется с предыдущим. Первичный сигнал со спутника подаётся для синхронизации данных на сервер точного времени, который уже передаёт информацию клиентским устройствам через сеть. Примером такого сервера является разработка от «КОМСЕТ-сервис» – «ССВ-1Г».
Если вы хотите синхронизировать часы своего компьютера с сервером времени, нужно выполнить ряд простых шагов:
- Кликните по иконке с часами на нижней панели экрана.
- Откройте вкладку «Время Интернета» или «Время по Интернету». В ОС Windows 7 и выше нужно сначала нажать баннер «Изменить параметры».
- В появившемся окне выберите сервер, с которым хотите синхронизироваться, или введите адрес искомого сервера вручную. Нажмите «Обновить сейчас».
- Чтобы ОС компьютера регулярно сверяла показатели часов, установите галочку в опцию «Синхронизировать с сервером времени в Интернете».
Настроить через интернет наручные или какие-то другие часы по NTP серверу можно с помощью различных открытых сервисов точного времени, например, time.is, skolko.in, direct-time.ru.
Способы указания NTP Сервера.
1) Команда w32tm позволяет задать список пиров, предоставляющих информацию о точном времени для домена. Чтобы получить дополнительные сведения о команде w32tm, введите в командной строке указанную команду w32tm /?
Первым, что необходимо сделать, это выяснить в каком состоянии находятся контролеры домена в домене. Для этого запускаем в командной строке команду (если у вас права доменного администратора, то можете запустить командную строку на своей рабочей станции)
w32tm /monitor — команда позволяет посмотреть с каким сервером (серверами)/сервисом происходит синхронизация и какая разница во времени с эталонным севером.
w32tm /config /manualpeerlist:time.windows.com /syncfromflags:manual /reliable:yes /update — этой командой мы указываем с каким сервисом/сервером будет происходить синхронизация ( в данном примере с time.windows.com).
Эта команда выполняется на контроллере домена однократно и записывает указанные адреса в реестр ( по пути HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeConfigParametrs в параметре NTPServer должно быть прописано time.windows.com). Можно указать сразу несколько серверов, разделенных пробелами.
2) Еще один способ указать контролеру домена сервер с кем он будет синхронизироваться по времени, это локальные или групповые политики. Запускаем реестр- Нажмите кнопку Пуск, выберите команду Выполнить, введите в командную строку gpedit.msc и нажмите кнопку ОК. Заходим «Конфигурация компьютера- Политики- Административные шаблоны- Система- Служба времени Windows- Поставщики времени» и настраиваем политику. В данном примере в значении NTPServer прописываем time.windows.com, в значении Тип указываем NTP. Тип- указывает узлы одноранговой сети, принимающие синхронизацию следующих типов:
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.
Если вы создали политику, то ее нужно применить на все контролеры домены.