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

Синхронизация времени 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 секунда), то он будет исключён из списка и будут использоваться другие вместо него. Данный механизм позволяет отсеивать плохие источники времени.

Как работает синхронизация

В общем виде синхронизация времени работает так:

  1. Устройство посылает запрос на сервер синхронизации и запоминает время, когда ушёл запрос. Запрос идёт по протоколу NTP, о нём ниже.
  2. Сервер получает запрос, и, если всё в порядке, — записывает, когда он его получил, и отправляет данные с точным временем на сервере.
  3. Устройство получает ответ от сервера и записывает, во сколько оно его получило.
  4. Зная время отправки и получения запроса и точное время на сервере, можно рассчитать глобальное время (но с какой-то точностью).

Это всё повторяется с какой-то периодичностью — раз в час, раз в день или с любым другим интервалом.

Автоматическая синхронизация времени NTP

Любая операционная система, установленная не компьютер или мобильное устройство, имеет встроенную функцию синхронизации внутренних часов. Эта функция выполняет очень простую задачу — отправляет запрос на сервер синхронизации времени, а затем настраивает системные часы в соответствии с полученным ответом.

Для передачи необходимых данных операционная система использует специальный сетевой протокол NTP — «Network Time Protocol» или «Протокол сетевого времени». Данным протоколом учитывается длительность задержки между отправкой запроса на сервер и получением ответа от него. Благодаря этому принципу функционирования NTP даже при низкой скорости работы интернета на пользовательском компьютере будет установлено точное время с погрешностью не более 10 миллисекунд (1/100 секунды).

Первый этап — NTS KE

На данном этапе NTP клиент инициирует TLS 1.2/1.3 сеанс по отдельному TCP соединению с сервером NTS KE. Во время этой сессии происходит следующее.

  • Стороны определяют параметры AEAD алгоритма для второго этапа.
  • Стороны определяют второй протокол нижнего уровня, но на данный момент лишь NTPv4поддерживается.
  • Стороны определяют IP адрес и порт NTP сервера.
  • NTS KE сервер выдает куки под NTPv4.
  • Стороны извлекают из материала куки пару симметричных ключей (C2S и S2C).

Конфигурация NTP-сервера на корневом PDC

Конфигурирование сервера времени в Windows (NTP-сервера) может осуществляться как с помощью утилиты командной строки w32tm, так и через реестр. Где возможно, я приведу оба варианта. Но в начале посмотрите полностью ваши настройки на компьютере, делается это командой:

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

[TimeProviders]

NtpClient (Локально)
DllName: C:Windowssystem32w32time.dll (Локально)
Enabled: 1 (Локально)
InputProvider: 1 (Локально)
CrossSiteSyncFlags: 2 (Локально)
AllowNonstandardModeCombinations: 1 (Локально)
ResolvePeerBackoffMinutes: 15 (Локально)
ResolvePeerBackoffMaxTimes: 7 (Локально)
CompatibilityFlags: 2147483648 (Локально)
EventLogFlags: 1 (Локально)
LargeSampleSkew: 3 (Локально)
SpecialPollInterval: 3600 (Локально)
Type: NT5DS (Локально)

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

VMICTimeProvider (Локально)
DllName: C:WindowsSystem32vmictimeprovider.dll (Локально)
Enabled: 1 (Локально)
InputProvider: 1 (Локально)

вывод настроек сервера времени

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

Объявление NTP-сервера в качестве надежного

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

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

Задаем внешние NTP сервера

  • [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeParameters]
    «NtpServer»=»time.nist.gov,0x8 ntp1.imvp.ru,0x8 ntp2.imvp.ru,0x8 time.windows.com,0x8 ru.pool.ntp.org,0x8»
  • w32tm /config /manualpeerlist:»time.nist.gov,0x8 ntp1.imvp.ru,0x8 ntp2.imvp.ru,0x8 time.windows.com,0x8 ru.pool.ntp.org,0x8″

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

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

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

  • [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeTimeProvidersNtpClient]
    «SpecialPollInterval»=dword:00000384

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

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

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeConfig]
«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 может работать на Windows 2000, Windows XP Prof, Windows 7, Windows Server 2003/2008 .

Итак, приступаем к настойке локального Windows сервера синхронизации времени (NTP server на 123 UDP порту).

Начнем с ОС Windows XP Prof (Windows XP Home — то же самое).

Открываем реестр — Пуск -> выполнить -> regedit
идем в ветку:

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeConfig

присваеваем параметру AnnounceFlags значение 5. Тем самым мы обьявим наш будущий NTP сервер, достоверным и компьютеры при синхронизации с ним не будут ругаться.
Далее Пуск -> выполнить -> mmc и добавляем оснастку «Редактор обьекта групповой полтики». Обьектом группвой политики выступит Локальный компьютер.

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

Кроме этого на раздающем сервере необходимо изменить интервал через который он сам будет ходить в инет за временем.
Открываем реестр — Пуск -> выполнить -> regedit
идем в ветку:

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeTimeProviders
NtpClientSpecialPollInterval

По умолчанию интервал между обновлениями времени в Windows – 1 неделя (604800 сек). При низкой точности системных часов компьютера это слишком большой интервал. При такой настройке за 1 неделю часы Вашего компьютера могут получить погрешность величиной порядка минуты или даже нескольких минут. Рекомендую уменьшить интервал обновления до нескольких часов. Это изменение не увеличит ни трафика, ни нагрузки на NTP-сервер, при этом позволит поддерживать более высокую точность хода часов Вашего компьютера.

При значении флага UseAsFallbackOnly службе времени сообщается, что данный сервер будет использоваться как резервный и перед синхронизацией с ним будут выполнятся обращения к другим серверам списка.
После внесения необходимых настроек в можно перечитать конфигурацию сохраненную в реестре коммандой приведенной ниже, или перезагрузить компьютер.

w32tm /config /update

И при необходимости выполнить немедленную синхронизацию

w32tm /resync

На этом настройка сервера закончена.

На клиентских компьютерах следуем в «Панель управления», выбираем «дата и время» и в закладке «Время интернета» меняем строку сервер на IP (или имя) вашего локального сервера.
Вот и все.

Можно раскидать батник на рабочие станции :
w32tm /config /manualpeerlist:IP_адрес_сервера,0x1 /syncfromflags:MANUAL
net stop w32time
net start w32time
w32tm /resync

И запускаем его на клиентских машинах с правами Администратора.

Для WINDOWS 2000

Теперь поясню, как установить синхронизацию основного компьютера времени, т. е. корневого PDC-эмулятора леса, с реальным временем. Для этого следует Пуск -> выполнить -> ввести команду:

net time /setsntp:

Параметр /setsntp команды Net Time показывает, что используется Simple Network Time Protocol (SNTP), стандартный протокол Internet. Internet Engineering Task Force (IETF) Request for Comments (RFC-2030), датированный октябрем 1996 г., определяет SNTP. Можно указать любой сервер времени SNTP в Internet для корневого PDC-эмулятора леса и заставить его синхронизировать свое время с временем этого сервера. Многие брандмауэры включают сервер времени, так что для конкретного контроллера — эмулятора PDC — нет нужды обращаться куда-либо из своей внутренней сети для синхронизации с SNTP-сервером. Но если брандмауэр требуется настраивать, то нужно иметь в виду, что SNTP использует 123-й порт UDP.

Остановит сервер времени Windows Time Service:

net stop w32time

Затем можно проверить время источника, для чего следует ввести:

w32tm -once

чтобы установить время от источника времени однократно (по умолчанию W32tm обновляет время периодически). Система выдает страницу запутанной информации; в случае успешного выполнения команды в одной из строк появится Recv`ed from server 48 Bytes. Далее необходимо набрать:

net start w32time

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

После первоначальной синхронизации с сервером времени компьютер снова сверяет с ним свое время через 45 мин. Если выясняется, что разница между показаниями часов сервера времени и системных часов компьютера не превышает 2 с, интервал ожидания следующей сверки с сервером времени удваивается. Если через полтора часа разница во времени остается в пределах 2 с, компьютер продолжает удваивать интервал синхронизации и проверять точность времени и, наконец, останавливается на интервале приблизительно 8 ч.

Если неизвестно, с каким SNTP-сервером синхронизируется система, в командной строке следует ввести:

net time /querysntp

Пишите если у кого не получилось, я запустил на 20-30 машинах в локалке и забыл о проблемах с разным временем в отчетах, логах, видео архивах и прочее. Главное не забывать когда заводите в сети новую машину проделать с ней эту процедуру.

5 способов синхронизации времени в ОС Windows 10 и почему возникает ошибка

Многие пользователи Вин 10 не придают особого значения точности часов на экране своего ПК. Но некоторым людям правильное время на компьютере жизненно необходимо для корректной работы специализированного софта. К такому относятся бухгалтерские, геймерские, трейдерские, букмекерские, блогерские и прочие программы. Рассмотрим, как правильно провести синхронизацию времени на ПК с Windows 10 по своему месту нахождения или расположению нужного сервера.

Все версии ОС на ПК или телефоне имеют установленную функцию автоматической синхронизации локального времени на устройстве. Для этого производится отправка запроса на сервер для уточнения правильного времени и настройки внутренних часов на компьютере после получения ответа.

screenshot_1

Для того чтобы описанный механизм синхронизации осуществлялся, используется сетевой протокол NTP, который так и называется: «Протокол сетевого времени» («Network Time Protocol»). Главная задача этого протокола – не только получить информацию о точном времени, но и учесть промежуток между запросом и ответом в случае задержки. Потому, даже при низкой скорости или нестабильности интернет-соединения, настройка локальных часов будет проводиться с точностью до 10 миллисекунд.

Сегодня существует множество подобных NTP-серверов, по которым устройство бесплатно синхронизирует локальные часы. Что касается Windows 10, то в настройках уже указан нужный сервер для настройки. Но, по некоторым причинам, автоматическая синхронизация может нарушиться. Тогда ее можно провести вручную, для этого в «десятке» предусмотрено несколько способов, каждый из которых будет описан по отдельности.

screenshot_2

Параметры

Этот способ имеется только в Вин 10, в предыдущих сериях ОС он не использовался. Нужно сделать следующие действия:

  • Нажать на кнопку «Пуск» и в выпавшем окне – на значок шестеренки («Параметры»).

screenshot_3

  • Откроется окно, в котором нужно найти иконку «Время и язык» и нажать на нее.

screenshot_4

  • После перехода вкладка будет разделена на две части. В левой найти и открыть раздел «Дата и время». В правой поставить галочку в пункте: «Установить время автоматически» на включенный режим, если она не активна.

screenshot_5

  • Если синхронизация не произошла, в том же разделе найти пункт: «Формат даты, времени и региона» или в более старой версии «Дополнительные параметры даты и времени, региональные параметры», после чего открыть его.
  • Откроется панель, в которой нажать на раздел «Дата и время».
  • В новом окне нажать на вкладку «Время по интернету», затем – на кнопку «Изменить параметры».
  • Теперь нужно поставить галочку в разделе: «Синхронизировать с сервером времени в интернете». Ниже появится выпадающее окошко, в котором можно выбрать NTP-сервер или прописать свой, если предложенные ОС не подходят.

screenshot_6

  • После нажать на кнопки «Обновить сейчас» и «Ок».

Также во вкладке «Дополнительные часы», можно добавлять еще пункты, если требуется возможность видеть время по другим поясам.

Панель управления

Метод схож с предыдущим, только отличается способ открытия окна «Дата и время», где настраивается автоматическая синхронизация часов. Делается это так:

  • В поиске (лупа возле кнопки «Пуск») написать «Панель управления», открыть ее после выдачи результата.

screenshot_7

  • Выбрать раздел: «Часы, язык и регион», затем нажать «Дата и время».

screenshot_8

  • После его открытия сделать те же действия, что описаны в предыдущем заголовке, с места о вкладке «Время по интернету».

screenshot_9

Командная строка

CMD, как правило, используют программисты, так как она позволяет быстро выполнять множество сложных действий на ПК. Для обычных же пользователей Командная строка – не очень удобный инструмент, так как все директивы нужно вводить вручную, да еще знать их значение и правильно прописывать, без ошибок. Но если имеется желание установить синхронизацию часов через CMD, то делается это следующим образом:

  • ПКМ нажать по кнопке «Пуск».
  • В появившемся окне выбрать раздел: «Командная строка (Администратор)».

screenshot_10

  • Когда CMD загрузится, прописать команду «w32tm /resync» (пробел обязательно должен быть), и нажать кнопку «Ввод».

screenshot_11

  • Затем появится информация, что был отправлен запрос, а затем – что синхронизация прошла успешно.

Если произошел сбой (0x80070426), можно попробовать следующие команды:

  • «w32tm /config /syncfromflags:manual /manualpeerlist:time.windows.com» – задать источник настройки времени.
  • «net start w32time» – запустить службу времени.
  • «w32tm /resync» – провести принудительную синхронизацию.

screenshot_12

PowerShell

Это более продвинутый аналог CMD, который обладает чуть большими возможностями. Соответственно, им также чаще пользуются программисты. Для запуска нужно:

  • Нажать ПКМ по кнопке «Пуск» и выбрать: «Windows PowerShell (Администратор)».

screenshot_13

  • Дождавшись, когда приложение загрузится, и появится строка для ввода, прописать в ней: «Get-Service W32Time | Select-Object» и нажать «Enter».

screenshot_14

  • В появившемся ответе отыскать раздел «Status», если там будет написано «Running», то прописать команду для синхронизации: «w32tm /config /reliable:yes» и нажать «Enter».

screenshot_15

  • Если в статусе будет указано «Stopped», нужно прописать команду запуска службы: «Start-Service W32Time». После чего снова ввести команду для синхронизации.

screenshot_16

Службы

Если указанные выше способы не сработали, тогда стоит провести настройку в разделе «Служба времени Windows». Для этого выполняются следующие действия:

  • Открыть системное окно нажатием клавиш «Win + R» и прописать команду «services.msc», после чего нажать на кнопку «Ок».

screenshot_17

  • Появившаяся вкладка «Службы» будет разделена на две части. В правой отыскать «Служба времени Windows» и открыть двойным щелчком.

screenshot_18

  • Теперь нужно найти пункт «Тип запуска» и указать «Вручную».
  • Если в разделе «Состояние» написано: «Остановлена», то нужно нажать кнопки «Запустить» и «Ок».

screenshot_19

  • В том случае, когда служба и так включена в ручном режиме, нужно сначала ее остановить, а потом запустить заново (перезапустить).

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

Способы указания 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.

Если вы создали политику, то ее нужно применить на все контролеры домены.

Adblock
detector