NTP — Википедия
Материал из Википедии — свободной энциклопедии
NTP | |
---|---|
Название | Network Time Protocol |
Уровень (по модели OSI) | Прикладной |
Семейство | TCP/IP |
Создан в | 1985 |
Порт/ID | 123/UDP |
Назначение протокола | Синхронизация часов |
Спецификация | RFC 5905 |
NTP (англ. Network Time Protocol — протокол сетевого времени) — сетевой протокол для синхронизации внутренних часов компьютера с использованием сетей с переменной латентностью. Протокол был разработан Дэвидом Л. Миллсом[en], профессором Делавэрского университета, в 1985 году. Версия на 2015 год — NTPv4[1].
NTP, основанный на алгоритме Марзулло, использует для своей работы протокол UDP и учитывает время передачи. Система NTP чрезвычайно устойчива к изменениям латентности среды передачи. В версии 4 способен достигать точности 10 мс (1/100 с) при работе через Интернет, и до 0,2 мс (1/5000 с) и лучше внутри локальных сетей
Наиболее широкое применение протокол NTP находит для синхронизации серверов точного времени. Для достижения максимальной точности предпочтительна постоянная работа программного обеспечения NTP в режиме системной службы. В семействе операционных систем Microsoft Windows — это служба W32Time[3], Linux — демон Ntpd[4] или chronyd.
Более простая реализация этого алгоритма известна как SNTP — простой протокол сетевого времени. Используется во встраиваемых системах и устройствах, не требующих высокой точности, а также в пользовательских программах точного времени
Структура пакета описана в RFC 5905[1]. Пакет состоит из целого числа 32-битных слов.
Данные в заголовке будут отличаться для различных режимов работы. Например, клиент в поля часовой слой, идентификатор источника, начальное время и время приёма должен записать нули.
Заголовок[править | править код]
Индикатор коррекции[править | править код]
Пример синхронизации времени, используя NTP- Длина — 2 бита, от англ. Leap Indicator.
- Целое число, показывающее предупреждение о секунде координации.
Значение Описание 0 Нет предупреждения 1 Последняя минута дня содержит 61 секунду 2 Последняя минута дня содержит 59 секунд 3 Неизвестно (время не синхронизировано)
Номер версии[править | править код]
- Длина — 3 бита, от англ. Version Number.
- Целое число, представляющее версию протокола.
Режим[править | править код]
- Длина — 3 бита, от англ. Mode.
- Целое число, представляющее режим. Значения представлены в таблице ниже.
Значение Описание 0 Зарезервировано 1 Симметричный активный режим 2 Симметричный пассивный режим 3 Клиент 4 Сервер 5 Широковещательный режим 6 Контрольное сообщение NTP 7 Зарезервировано для частного использования
Часовой слой[править | править код]
- Длина — 8 бит, от англ. Stratum.
- Целое число, представляющее часовой слой.
Значение Описание 0 Не определено или недопустим 1 Первичный сервер 2-15 Вторичный сервер, использующий NTP 16 Не синхронизировано 17-255 Зарезервировано
Интервал опроса[править | править код]
- Длина — 8 бит, от англ. Poll.
- Целое число со знаком, представляющее максимальный интервал между последовательными сообщениями. Значение равно двоичному логарифму секунд. Предлагаемые по умолчанию пределы на минимальные и максимальные опросы — 6 и 10, соответственно.
Точность[править | править код]
- Длина — 8 бит, от англ. Precision.
- Целое число со знаком, представляющее точность системных часов. Значение равно двоичному логарифму секунд. Например, значению −18 будет соответствовать точность около 1 мкс.
Задержка[править | править код]
- Длина — 32 бита, от англ. Root Delay.
- Общее время распространения сигнала в обе стороны в коротком формате NTP.
Дисперсия[править | править код]
- Длина — 32 бита, от англ. Root Dispersion.
- Общая дисперсия для источника времени в коротком формате NTP.
Идентификатор источника[править | править код]
- Длина — 32 бита, от англ. Reference ID.
- Код источника синхронизации. Зависит от значения в поле Часовой слой.
- Для слоя 0 — это четыре ASCII символа, называемые «kiss code», используются для отладки и мониторинга. Смотри ниже
- Для слоя 1 — это четыре октета ASCII символов, дополненные слева нулями, назначенные для опорного времени. В таблице ниже представлен список, поддерживаемый IANA.[6]
ID Источник GOES Геостационарный спутник системы экологического мониторинга и наблюдения GPS Система глобального позиционирования GAL Система местоопределения «Галилео» PPS Общий радиосигнал с длительностью импульса, равной 1 секунде[en] IRIG Группа стандартизации в телеметрии[en], США WWVB Низкочастотный радиопередатчик, 60 кГц, Форт Коллинз[en], Колорадо, США DCF Низкочастотный радиопередатчик, 77.5 кГц, DCF77, Майнфлинген, ФРГ HBG Низкочастотный радиопередатчик, 75 кГц, Прангинс[en], Швейцария MSF Низкочастотный радиопередатчик, 60 кГц, Антхорн[en], Великобритания JJY Низкочастотный радиопередатчик, 40 кГц, Фукусима, 60 кГц, Сага, Япония LORC Среднечастотный радиопередатчик, 100 кГц, радионавигация, LORAN-C[en] TDF Среднечастотный радиопередатчик, 162 кГц, Аллоуис[en], Франция CHU Высокочастотный радиопередатчик, Оттава, Онтарио[en], Канада WWV Высокочастотный радиопередатчик, Форт Коллинз, Колорадо WWVH Высокочастотный радиопередатчик, Кауаи, Гавайи[en], США NIST Телефонный модем Национального института стандартов и технологий США ACTS Телефонный модем Национального института стандартов и технологий США USNO Телефонный модем Национальной обсерватории США PTB Телефонный модем Национального метрологического института Германии[en]
- Для слоя 2 и выше — это идентификатор сервера и может быть использован для фиксирования временных петель. Если используется IPv4, то идентификатор представляет собой четыре октета IP адреса. Если используется IPv6, то это первые четыре октета MD5 хэша адреса. Стоит отметить, что при использовании IPv6 адресов для сервера с NTPv4 и клиента с NTPv3 идентификатор может принимать случайное значение, из-за чего временные петли могут быть не зафиксированы.
Время обновления[править | править код]
- Длина — 64 бита, от англ. Reference Timestamp.
- Время, когда система последний раз устанавливала или корректировала время. Формат NTP.
Начальное время[править | править код]
- Длина — 64 бита, от англ. Origin Timestamp.
- Время клиента, когда запрос отправляется серверу. Формат NTP.
Время приёма[править | править код]
- Длина — 64 бита, от англ. Receive Timestamp.
- Время сервера, когда запрос приходит от клиента. Формат NTP.
Время отправки[править | править код]
- Длина — 64 бита, от англ. Transmit Timestamp.
- Время сервера, когда запрос отправляется клиенту. Формат NTP.
NTP-сообщение «Kiss-o’-Death»[править | править код]
Для слоя 0, который считается неопределённым или недопустимым, поле Идентификатор источника может использоваться для доставки сообщений, которые выполняют роль данных о состоянии системы и управления доступом. Такие сообщения называются «Kiss-o’-Death»[заметка 1] (KoD), а доставляемые ими ASCII-данные называются «kiss codes» (коды «помощи»). Перечень принятых в настоящее время кодов «помощи» представлен в таблице ниже
Получатели KoD-сообщений обязаны их проверить и выполнить следующие действия[1]:
- При получении кодовых комбинаций DENY и RSTR клиент обязан разорвать виртуальные соединения с данным сервером времени и прекратить передачу сообщений этому серверу.
- При получении кодовой комбинации RATE клиент обязан незамедлительно снизить свой интервал опроса этого сервера и продолжать его уменьшать каждый раз при получении этой кодовой комбинации.
- При получении кодовой комбинации начинающейся с ASCII-символа Х, предназначенной для проведения экспериментальных исследований и последующих усовершенствований, она должна быть проигнорирована, если она не распознаётся.
- Все другие кодовые комбинации и KoD-сообщения, не определённые данным протоколом, уничтожаются после их поверки.
Код | Описание |
---|---|
ACST | Виртуальное соединение установлено одноадресным сервером |
AUTH | Аутентификация сервером завершилась отказом |
AUTO | Autokey-последовательность некорректна |
BCST | Виртуальное соединение установлено широковещательным сервером |
CRYP | Криптографическая аутентификация или идентификация завершились отказом |
DENY | Удалённый сервер отказал в доступе |
DROP | Потеря удаленного сервера времени в симметричном режиме |
RSTR | Отказ в доступе вследствие локальной стратегии безопасности |
INIT | Виртуальное соединение с первого раза не установлено |
MCST | Виртуальное синхросоединение установлено динамически обнаруженным сервером |
NKEY | Ключ не найден (либо он никогда ранее не загружался, либо он является ненадёжным) |
RATE | Скорость превышена. Сервер временно запретил доступ, так как клиент превысил порог скорости |
RMOT | Изменение виртуального соединения со стороны удалённого IP-узла, использующего NTP-протокол напрямую |
STEP | Произошла итерация по изменению системного времени, виртуальное синхросоединение не установлено |
NTP использует иерархическую сеть, где каждый уровень имеет свой номер, называемый слой (англ. stratum). Слой 1 — первичные серверы, непосредственно синхронизирующиеся с национальными службами времени через спутник, радио или телефонный модем. Слой 2 — вторичные серверы, синхронизируются с первичными серверами, и т. д. Как правило, клиенты и серверы NTP с относительно небольшим числом клиентов не синхронизируется с первичными серверами. Существует несколько сотен общественных вторичных серверов, работающих на более высоких слоях. Они являются предпочтительным выбором[7].
Время представляется в системе NTP 64-битным числом (8 байт), состоящим из 32-битного счётчика секунд и 32-битного счётчика долей секунды, позволяя передавать время в диапазоне 232 секунд, с теоретической точностью 2−32 секунды. Поскольку шкала времени в NTP повторяется каждые 232 секунды (136 лет), получатель должен хотя бы примерно знать текущее время (с точностью 68 лет[8]). Также следует учитывать, что время отсчитывается с полуночи 1 января 1900 года, а не с 1970, поэтому из времени NTP нужно вычитать 70 лет (с учётом високосных лет), чтобы корректно совместить время с Windows или Unix-системами[7][9].
Бит | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Секунды | Доли секунд |
Бит | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Секунды | |||||||||||||||||||||||||||||||
4 | Доли секунд |
Бит | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Номер эры | |||||||||||||||||||||||||||||||
4 | Отступ эры | |||||||||||||||||||||||||||||||
8 | Доли | |||||||||||||||||||||||||||||||
12 |
- ↑ От «Kiss of Death», что в переводе значит «последний удар» или «последняя попытка».
- NTP: The Network Time Protocol (англ.). Network Time Foundation. — Общественный проект по развитию протокола и служб NTP.
- Welcome to the NTP.Servers Web (англ.). Network Time Foundation (18 April 2013). — Проект публичных серверов NTP и рабочей группы IETF по протоколу NTP.
- NTP Pool Project (неопр.). — Общественный ресурс — кластер публичных NTP-серверов, поддерживаемых волонтёрами.
- NTP Server Online Tester (неопр.). Server Test. — Онлайн-инструмент для проверки доступности сервера в Интернете.
- Услуги NTP серверов (неопр.). ВНИИФТРИ. — Серверы точного времени Главного метрологического центра государственной службы времени, частоты и определения параметров вращения Земли Всероссийского научно-исследовательского института Физико-технических и радиотехнических измерений.
ru.wikipedia.org
pool.ntp.org: Использование пула NTP
Как пользоваться пулом NTP?
Если вы используете программу ntpd из комплекта, рапространяемого ntp.org (работает на большинстве современных операционных систем, включая Linux, *BSD, Windows и некоторые другие), для обычной синхронизации ваших часов по Интернету будет достаточно такой конфигурации:
driftfile /var/lib/ntp/ntp.drift server 0.pool.ntp.org server 1.pool.ntp.org server 2.pool.ntp.org server 3.pool.ntp.org
Имена 0, 1, 2 и 3.pool.ntp.org указывают на случайно выбранные из пула сервера (выбираются заново каждый час). Перед запуском ntpd убедитесь, что погрешность ваших часов находится в разумных пределах (не превышает нескольких минут). Для этого можно провести моментальную синхронизацию с пулом при помощи команды ntpdate pool.ntp.org, или просто установить время вручную при помощи команды date. После этого вы можете запустить ntpd. Через некоторое время (до получаса) команда ntpq -pn должна выдать нечто похоже на следующее:
$ ntpq -pn remote refid st t when poll reach delay offset jitter ============================================================================== +81.6.42.224 193.5.216.14 2 u 68 1024 377 158.995 51.220 50.287 *217.162.232.173 130.149.17.8 2 u 191 1024 176 79.245 3.589 27.454 -129.132.57.95 131.188.3.222 3 u 766 1024 377 22.302 -2.928 0.508
В вашем случае IP-адреса могут отличаться (как уже говорилось выше, сервера каждый раз выбираются случайно). Самым главным здесь является символ звездочки (*), показывающий, что часы вашего компьютера теперь автоматически синхронизируются с Интернетом. Отныне вы можете не беспокоиться об этом!
Из-за того, что имя pool.ntp.org будет выдавать вам сервера со всего мира, качество синхронизации может быть не очень высоким. Рекомендуем использовать для синхронизации континентальные зоны (например, europe, north-america, oceania or asia.pool.ntp.org). Еще более оптимальным решением будет использование зоны, соответствующей вашей стране (например, ru.pool.ntp.org для России, ua.pool.ntp.org для Украины и т.д.). Также вы можете использовать цифровой префикс (0, 1 или 2) перед именем зоны. Однако, может так случиться, что зона для вашей страны пока не существует, или содержит всего один-два сервера. Если вы знаете NTP-сервера, близкие к вам по сетевой дистанции (она определяется про помощи программ traceroute и ping), возможно, будет лучше использовать именно их.
Если вы используете последние версии Windows, вы также можете использовать встроенный в систему NTP-клиент. Это делается командой
net time /setsntp:pool.ntp.org
В некоторых версиях Windows можно указывать более одного сервера:
net time /setsntp:"0.pool.ntp.org 1.pool.ntp.org 2.pool.ntp.org 3.pool.ntp.org"
Это должно работать на Windows 2000/XP/2003. Также вы можете, войдя в систему с правами администратора, щелкнуть правой кнопкой мыши по часам на панели задач, выбрать «Настройка даты/времени», перейти на закладку «Время Интернета» и ввести в предложенное тесктовое поле имя сервера для синхронизации.
Немецкая фирма Meinberg портировала ntpd под Windows.
Обратите внимание, что если ваша система Windows входит в домен, возможно, у вас не получится синхронизировать время независимо от других участников домена. Рекомендуем ознакомиться с официальной документацией.
Additional Notes
Дополнительные замечания
Если у вас есть внешний статический IP-адрес и неплохое интернет-соединение (пропускная полоса не критична, главное, чтобы соединение было стабильным и не сильно загруженным), пожалуйста, подумайте о том, чтобы войти в пул. Для вас это обернется лишь небольшим дополнительным трафиком (несколько сотен байт в секунду), но вы тем самым поможете нашему проекту выжить и развиваться. Подробную информацию вы можете найти на этой странице.
Если ваш интернет-провайдер имеет собственные NTP-сервера, или вы знаете хорошие NTP-сервера недалеко от вас, используете именно их, а не нас — вы получите более высокое качество синхронизации при меньшей нагрузке на сеть. Если вы знаете только один сервер поблизости от вас, вы можете использовать его, например, с двумя серверами из pool.ntp.org.
Изредка случается так, что вам дважды выдается один и тот же сервер — эту проблему можно решить простым перезапуском ntpd. Если вы используете зону своей страны, учтите, что в ней может оказаться всего один-два сервера. В этом случае рекомендуем использовать континентальную зону. Посмотреть, сколько серверов работает в каждой зоне, вы можете здесь.
Будьте дружелюбны. Многие сервера предоставляются добровольцами, и почти все NTP-сервера на самом деле являются файловыми, почтовыми или web-серверами, на которых просто запущен ntpd. Поэтому не используйте более трех серверов в своей конфигурации, и не выкидывайте грязных трюков с параметрами burst и minpoll — все, чего вы добьетесь, это гибель нашего проекта, раньше или позже.
Убедитесь, что на вашем компьютере корректно настроен часовой пояс. ntpd ничего не знает о часовых поясах. Он работает только со временем Гринвича (UTC).
Если вам нужно синхронизировать целую сеть, пожалуйста, настройте один из компьютеров как NTP-сервер и синхронизируйте сеть по нему (вам придется немного почитать документацию, но ничего особенно трудного в этом нет. В случае затруднений обращайтесь в Usenet-конференцию comp.protocols.time.ntp.)
Ну и наконец, я хотел бы поблагодарить всех, кто пожертвовал свое время и свои сервера этому проекту.
www.ntppool.org
Как настроить NTP сервер и синхронизацию времени в домене Active Directory
Добрый день уважаемые читатели и гости блога pyatilistnik.org, как много люди говорят о времени, что оно быстро или медленно бежит, и все понимают, что оно бесценно и важно. Так и в инфраструктуре Active Directory, она является одним из важнейших факторов, правильного функционирования домена. В домене все друг другу доверяют, и один раз авторизовавшись и получив все тикеты от Kerberos, пользователь ходит куда угодно, ограничиваясь лишь своими доступными правами. Так вот если у вас не будет точного времени на ваших рабочих станциях к контроллеру домена, то можете считать, что у вас начинаются серьезные проблемы, о которых мы поговорим ниже и рассмотрим как их устранить с помощью настройки NTP сервера в Windows.
Синхронизация времени в Active Directory
Среди компьютеров, участвующих в Active Directory работает следующая схема синхронизация времени.
- Контроллер корневого домена в лесу AD, которому принадлежит FSMО-роль эмулятора PDC (назовем его корневым PDC), является источником времени для всех остальных контроллеров этого домена.
- Контроллеры дочерних доменов синхронизируют время с вышестоящих по топологии AD контроллеров домена.
- Рядовые члены домена (сервера и рабочие станции) синхронизируют свое время с ближайшим к ним доступным контроллером домена, соблюдая топологию AD.
Корневой PDC может синхронизировать свое время как со внешним источником, так и с самим собой, последнее задано конфигурацией по умолчанию и является абсурдом, о чем периодически намекают ошибки в системном журнале.
Синхронизация клиентов корневого PDC может осуществятся как с его внутренних часов, так и с внешнего источника. В первом случае сервер времени корневого PDC объявляет себя как «надежный» (reliable).
Далее я приведу оптимальную с моей точки зрения конфигурацию сервера времени корневого PDC, при которой сам корневой PDC периодически синхронизирует свое время от достоверного источника в интернете, а время обращающихся к нему клиентов синхронизирует со своими внутренними часами.
Для того, чтобы понять кто у вас в сети является NTP сервером из контроллеров домена, прочитайте вот эту статью, многие вопросы отпадут сами собойВводим netdom query fsmo. В моем примере, роль PDC и NTP сервера, принадлежит контроллеру dc7
Конфигурация NTP-сервера на корневом PDC
Конфигурирование сервера времени в Windows (NTP-сервера) может осуществляться как с помощью утилиты командной строки w32tm, так и через реестр. Где возможно, я приведу оба варианта. Но в начале посмотрите полностью ваши настройки на компьютере, делается это командой:
w32tm /query /configuration
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:\Windows\system32\w32time.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:\Windows\system32\w32time.dll (Локально)
Enabled: 1 (Локально)
InputProvider: 0 (Локально)
AllowNonstandardModeCombinations: 1 (Локально)VMICTimeProvider (Локально)
DllName: C:\Windows\System32\vmictimeprovider.dll (Локально)
Enabled: 1 (Локально)
InputProvider: 1 (Локально)
Включение синхронизации внутренних часов с внешним источником
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters]
"Type"="NTP"w32tm /config /syncfromflags:manual
Объявление NTP-сервера в качестве надежного
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config]
"AnnounceFlags"=dword:0000000aw32tm /config /reliable:yes
Включение NTP-сервера
NTP-сервер по умолчанию включен на всех контроллерах домена, однако его можно включить и на рядовых серверах.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer]
"Enabled"=dword:00000001
Задание списка внешних источников для синхронизации
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters]
"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_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient]
"SpecialPollInterval"=dword:00000384
Установка минимальной положительной и отрицательной коррекции
Максимальная положительная и отрицательная коррекция времени (разница между внутренними часами и источником синхронизации) в секундах, при превышении которой синхронизация не происходит. Рекомендую значение 0xFFFFFFFF, при котором коррекция сможет производиться всегда.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config]
"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 сервера и клиента групповой политикой
Раз уж у нас с вами домен Active Directory, то глупо не использовать групповые политики, для массовой настройки серверов и рабочих станций, я покажу как настроить ваш NTP сервер в windows и клиента. Открываем оснастку «Редактор групповых политик». Перед тем как настроить наш NTP сервер в Windows, нам необходимо создать WMI фильтр, который будет применять политику, только к серверу мастера PDC.
Вводим имя запроса, пространство имен, будет иметь значение «root\CIMv2» и запрос «Select * from Win32_ComputerSystem where DomainRole = 5». Сохраняем его.
Затем вы создаете политику на контейнере Domain Controllers.
В самом низу политики применяете ваш созданный WMI фильтр.
Переходим в ветку: Конфигурация компьютера > Политики > Административные шаблоны > Система > Служба времени Windows > Поставщики времени.
Тут открываем политику «Настроить NTP-клиент Windows». Задаем параметры
- NtpServer: 0.ru.pool.ntp.org,0x1 1.ru.pool.ntp.org,0x1 2.ru.pool.ntp.org,0x1 3.ru.pool.ntp.org,0x1
- Type: NTP
- CrossSiteSyncFlags: 2. Двойка означает, если этот параметр равен 2 (Все), можно использовать любого участника синхронизации. Это значение игнорируется, если не задано значение NT5DS. Значение по умолчанию: 2 (десятичное) (0x02 (шестнадцатеричное))
- ResolvePeerBackoffMinutes: 15. Это значение, выраженное в минутах, определяет интервал ожидания службы W32time перед попыткой разрешения DNS-имени в случае неудачи. Значение по умолчанию: 15 минут
- Resolve Peer BAckoffMaxTimes: 7. Это значение определяет число попыток разрешения DNS-имени, предпринимаемых службой W32time перед перезапуском процесса обнаружения. При каждом неудачном разрешении DNS-имени интервал ожидания перед следующей попыткой удваивается. Значение по умолчанию: семь попыток.
- SpecilalPoolInterval: 3600. Это значение параметра NTP-клиента, выраженное в секундах, определяет частоту опроса настроенного вручную источника времени, который использует особый интервал опроса. Если для параметра NTPServer установлен флаг SpecialInterval, клиент использует значение, заданное как SpecialPollInterval, вместо значений MinPollInterval и MaxPollInterval, чтобы определить частоту опроса источника времени. Значение по умолчанию: 3600 секунд (1 час).
- EventLogFlags: 0
Делаем отдельную групповую политику для клиентских рабочих машин, вот с такими параметрами.
- NtpServer: Адрес вашего контроллера домена с ролью PDC.
- Type: NT5DS
- CrossSiteSyncFlags: 2
- ResolvePeerBackoffMinutes: 15
- Resolve Peer BAckoffMaxTimes: 7
- SpecilalPoolInterval: 3600
- EventLogFlags: 0
Далее идем на клиента и обновляем групповые политики gpupdate /force и вводим команду w32tm /query /status
Особенности виртуализированных контроллеров домена
Контроллеры домена, работающие в виртуализированной среде, требуют к себе особенного отношения.
- Средства синхронизации времени виртуальной машины и хостовой ОС должны быть выключены. Во всех адекватных системах виртуализации (Microsoft, vmWare и т. д.) присутствуют компоненты интеграции гостевой ОС с хостовой, которые значительно повышают производительность и управляемость гостевой системой. Среди этих компонентов всегда есть средство синхронизации времени гостевой ОС с хостовой, которое очень полезно для рядовых машин, но противопоказано для контроллеров домена. Потому как в этом случае весьма вероятен цикл, при котором контроллер домена и хостовая ОС будут синхронизировать друг друга. Последствия печальны.
- Для корневого PDC синхронизация с внешним источником должна быть настроена всегда. В виртуальной среде часы не настолько точны как в физической, потому как виртуальная машина работает с виртуальным процессором и прерываниями, для которых характерно как замедление, так и ускорение относительно «обычной» частоты. Если не настроить синхронизацию виртуализированного корневого PDC с внешним источником, время на всех компьютерах предприятия может убегать/отставать на пару часов в сутки. Не трудно представить неприятности, которые может принести такое поведение.
pyatilistnik.org
Делаем собственный NTP-сервер Stratum-1 / Habr
На написание этой заметки меня натолкнул хабраюзер BarsMonster со своим топиком «О точном времени».В своей статье он призывал хабраюзеров «Давать больше Stratum-1 серверов», но не сказал как (:
Выбор источника точного времени
Я проделывал эту работу примерно три года назад, когда в сети информации по этой теме было гораздо меньше. Основным источником моих познаний была документация из пакета ntp-doc (/usr/share/doc/ntp-doc/html/refclock.html), также её можно найти в сети.
Само название Stratum-1 означает, что наш NTP-сервер непосредственно подключен к источнику точного времени.
Давайте посмотрим какие у нас есть варианты этих источников:
- Радиостанции точного времени
Ничего сложного, берём подходящую частоту из справочника, паяем приёмник и преобразователь в удобный для компьютера интерфейс. ^_^
Я забросил этот вариант, т.к. напротив моей старой работы стояло здание то ли ФАПСИ, то ли ещё какой-то службы, в общем эфир был довольно зашумлён (-: - Телефон GSM или CDMA
Как-то я им не доверяю, хотя не самый плохой вариант. - Приёмник GPS или ГЛОНАСС
Этот вариант мне показался самым реальным.
Подключаем
Приёмник ГЛОНАСС тогда было сложно достать, поэтому я пошел в магазин и купил GPS-приёмник с RS232-м интерфейсом и внешней антенной. Антенну прилепил на металлический подоконник за окном, а приёмник соответственно подключил к COM-порту одного из серверов.
Первым делом нам нужно убедиться что приёмник «видит» спутники. Мой, например, в этом случае начинает весело подмигивать светодиодом.
Более универсальный способ — посмотреть что он отдаёт в COM-порт:
cat /dev/ttyS0
Тут мы должны увидеть дамп протокола NMEA.
Настраиваем
Для работы ntpd нам нужно сделать символические ссылки:
/dev/gps0 -> /dev/ttyS0
Если вы используете udev, то полезно будет создать правило /etc/udev/rules.d/10-gps.rules следующего содержания:
KERNEL==«ttyS0», NAME=»%k», SYMLINK+=«gps0», MODE=«0660», GROUP=«uucp»
Модифицируем ntp.conf:
# Local Clock — если теряем спутники, то снижаем stratum до 10
server 127.127.1.0
fudge 127.127.1.0 stratum 10# NMEA GPS driver
server 127.127.20.0 preferdriftfile /var/lib/ntp/ntp.drift
restrict default nomodify notrust # Отдаём время всем
restrict 127.0.0.1 # Разрешаем себе всё
disable auth
logfile /var/log/ntp/messages
В строке server 127.127.20.0 число 20 — это ответ на «главный вопрос жизни, вселенной и вообще» номер соответствующего драйвера источника точного времени.
Перезапускаем NTPD и смотрим статус. Должно быть что-то подобное:
ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
LOCAL(0) LOCAL(0) 10 l 52 64 377 0.000 0.000 0.002
*GPS_NMEA(0) .GPS. 0 l 15 64 377 0.000 -0.018 0.004
Всё, сервер можно пиарить регистрировать в списке stratum-1 серверов.
Надеюсь эта статья поможет увеличить количество хороших NTP-серверов в рунете (-;
[Важный UPD]
Мне тут человек постучался в IM, у него нет аккаунта на Хабре, просил меня прояснить ситуацию с переходниками COM-USB. Цитирую:
brn:
Так вот, так как в приёмниках часто один из служебных пинов COM разъёма заведён на 1PPS сигнал, который обозначает начало очередной секунды, в случае USB этот сигнал будет потерян
А, так сигнал NMEA без PPS даёт точность порядка 50-100 миллисекунд, а для сервера точного времени это неприемлимо
Это как раз проясняет почему у меня был такой разбег с коллегой из Новосибирска — мой приёмник PPS не поддерживал.
Чтобы использовать PPS, нужно в конфиг ntp заменить NMEA на PPS:
# PPS driver
server 127.127.22.0 prefer
enable pps
[UPD2]
Встречаем нового хабраколлегу brn!
Он уже успел написать топик про NMEA.
BarsMonster, спасибо за инвайт.
habr.com