internet-logo41

NTP (SNTP) and Windows time

NTP (SNTP) and Windows time

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

 

Windows и NTP

В Windows существует служба w32time, задача которой – реализация функций сервера времени для Вашей сети. Подробно о реализации NTP в Windows. Однако, следует помнить, что указанная службы выступает в роли клиента, причём клиента windows службы времени, протокол которой несколько отличается от NTP. Кроме того, при определённых настройках в реестре, данная служба может выступать и в качестве сервера времени, причём не только для протокола windows, но и для NTP.

Контроллер Вашего домена, несущий роль PDC, по умолчанию пытается использовать внешний NTP сервер time.windows.com в качестве источника времени, и сам предоставляет функции windows сервера времени для рабочих станций домена. Все остальные контроллеры домена синхронизируют свои часы с PDC, после чего также предоставляют функции сервера времени для рабочих станций. Рабочие станции используют любой контроллер домена (в соответствии с порядком выбора контроллера домена) для синхронизации времени.

Выясним, какой сервер времени использует наш PDC:

net time /querysntp
Текущее значение SNTP: time.services.novgaro.ru

Соответственно, через net time /setsntp Вы можете установить сервер NTP, который будет использовать Ваш PDC (а следовательно – косвенно и весь домен) в качестве источника времени.

Устанавливаем NTP для нашего домена

Как и обычно, исходим из того, что нам придётся не один раз указать сервер NTP. Поэтому нужна некая инкапсуляция этого параметра. И в качестве дополнительного уровня абстракции для нас будет CNAME запись в нашей DNS зоне:

time.services           CNAME   ntp2.time.services
ntp1.time.services  CNAME   ntp.mobatime.ru.
ntp2.time.services  CNAME   ntp.nasa.gov.
local.time.services CNAME proxy.inet.services

в субдомене time.services мы заводим CNAME записи для тех NTP серверов, которые выбираем в качестве источника времени. Лучше выбрать более одного источника на тот случай, если один из них станет недоступным (чтобы потом не пришлось долго искать). Как уже ранее было указано, устанавливаем для нашего PDC в качестве источника time.services. И если нам потребуется по какой-либо причине изменить источник времени для всей нашей сети, достаточно поправить только один CNAME time.services.

Не забываем после изменения настроек перезапустить сервис w32time.

О выборе NTP написано много статей, повторяться не будут.

NTP и межсетевой экран

Могут возникнуть проблемы, связанные с Вашим межсетевым экраном. Для ISA следует настроить protocol rule разрешающее для протокол NTP (клиент) (UDP 123 Send-Receive). Перезапустили firewall service.

Теперь надо протестировать. Перезапускаем w32time на PDC. Если Вы меняли cname time.services, рекомендую перед перезапуском выполнить ipconfig /flushdns. И сразу время корректируется (после перезапуска w32time, разумеется, проверяем по журналу событий).

Поднимаем свой NTP сервер (не путать с windows time server)

Для синхронизации времени наших устройств (принт-серверы, точки доступа, маршрутизаторы и так далее) нам требуется предоставить NTP сервер (а не windows time server). В пределах локальной сети указываем им local.time.services. Что делать с устройствами за пределами сети Вашего PDC (например – на "домашнем” маршрутизаторе?) В этом случае я также предлагаю использовать FQDN local.time.services (в моём случае – local.time.services.novgaro.ru.). Но для этого мне потребуется либо использовать публикацию NTP сервера на ISA, либо поднять собственный NTP. Поднимем собственный.

Итак, FQDN – local.time.services.novgaro.ru. Публикуем в нашей внешней DNS зоне CNAME на наш внешний ip:

local.time.services CNAME   time.serivces
time.services       CNAME   gate

Перезагружаем зону. Теперь же заставим локальную службу W32Time исполнять функции NTP сервера:

Для активизации функции NTP-сервера необходимо установить параметр LocalNTP=yes.

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters]
"LocalNTP"=dword:00000001

Перезапускаем службу w32time

Осталось опубликовать SNTP сервер через ISA Server (сервер подняли локально на ISA). Для этого будем использовать ip packet rules (потому как служба локальная).

Добавляем protocol definition NTP Server: UDP 123 Receive-Send.

Добавляем разрешающее правило ip packet rules. Интранет-NTP.

Перезапускаем службу Firewall.

Теперь наш NTP сервер будет доступен по url ntp://local.time.services.novgaro.ru.

Наши устройства и NTP

После проделанных выше махинаций на всех наших устройствах в качестве NTP сервера указываем local.time.services (в моём случае – local.time.services.novgaro.ru). Также не забываем правильно указывать часовой пояс.

Однако, некоторые устройства (например – D-Link DIR-320) не позволяет указать NTP, позволяет только выбрать из списка. Заставим его использовать наш NTP сервер!

Выбираем в его настройках первый из предлагаемых им FQDN (в случае DIR-320 – ntp1.dlink.com). Теперь необходимо, чтобы НАШИ dns серверы ответили на этот запрос, указав на local.time.services.novgaro.ru. Для этого создаём на СВОИХ серверах первичную зону ntp1.dlink.com (именно так, не dlink.com), в ней – @ CNAME local.time.serivces.novgaro.ru. Этот CNAME указывает на наш собственный NTP сервер (как его поднять читаем в предыдущей главе).

Проверяем ping ntp1.dlink.com. И видим ip нашего NTP сервера (после ipconfig /flushdsn, разумеется).

Устройства необходимо будет перезапустить после этого (чтобы они сбросили кеш dns свой, если вдруг таковой имеют). Проверяем – запускаем обновление времени и даты на маршрутизаторе. И – всё получилось.

Вот такая вот маленькая хитрость по полной инкапсуляции сервера NTP для Вашей сети.