пятница, 26 июня 2015 г.

Сервер NTP (сервер точного времени) для ЛВС на MikroTik


Содержание заметки:

 настройка NTP на MikroTik;
 настройка периода синхронизации времени в Windows.

После повышения своей квалификации (или добавления извилины, так как осталась только одна извилина, и то – след от фуражки) посетила меня параноидальная идея создания в рабочей ЛВС узла точного времени, так как в наше время без знания точного времени жить, как говорят, "не комильфо" (происходит от франц. comme il faut "как надо, как следует"). Кроме того, это нужно было для поддержания мании собственного величия   

Итак, для решения вопроса необходим клиент NTP, который будет получать точное время от узлов Интернет, и сервер NTP, который будет раздавать это время компьютерам в сети. Если на оборудовании MikroTik 1100AH2 необходимые компоненты уже присутствуют, то в панели управления MikroTik RB951 и MikroTik RB2011 таких компонентов системы не оказалось. Следовательно, их необходимо добавить.

Обращаемся на узел загрузок ПО MikroTik RouterOS и в разделе "Download MikroTik software products" находим необходимое нам ПО. Так как ниже рассматривается RB951 и RB2011, то подходит самая первая секция из перечисленных:


Заходим. Качаем Extra packages:
В составе архива и будет присутствовать необходимый компонент ntp-6.29.1-mipsbe.npk. 6-29-1 означает версию программного продукта и на момент написания этой заметки версия 6.29.1 была самой свежей.


Теперь берём этот интересующий нас компонент npk и бросаем на сам MiktoTik:


Чтобы система "поняла", что ей необходимо добавить компонент(ы), перезагрузите MikroTik. После перезагрузки в меню System появятся вкладки клиента и сервера NTP:


Клиент NTP требует только ввести адреса серверов точного времени. При этом MiktoTik сам понял, какие IP необходимо поставить, так как я вводил адреса серверов точного времени ближайших ко мне.  У Вас они будут свои.


Примечание.  При настройке клиента NTP на пулы адресов серверов точного времени может потребоваться периодическая коррекция их адресов IP. В этом вопросе может помочь скрипт, запускаемый расписанию. Читайте об этом в публикации Клиент SNTP в MikroTik.

После галочки в поле "Enabled" клиент работает и получает точное время. Теперь очередь за сервером NTP.

Так как решено было не трогать настройку компьютера в целях изменения источника для точного времени, то в сервер DNS MiroTik была внесена статическая запись time.widows.com (IP  DNS  Static).


Как альтернативный вариант можно использовать псевдоним доменного имени узла time.windows.com, который будет указывать на сервер NTP (пример):



Теперь включается сервер NTP. В руководствах написано, что делать нужно так:



Пояснения по Broadcast, Multicast, Manycast

Broadcast mode. Клиенты NTP "слушают" широковещательные сообщения, рассылаемые сервером NTP. После получения первого широковещательного сообщения клиент синхронизирует часы локального узла с использованием режима unicast mode. После этого клиент NTP переходит в режим ожидания прихода следующего широковещательного сообщения. Широковещательные сообщения NTP отправляются на широковещательный адрес сети каждые 64 секунды.

В режиме unicast mode клиент NTP client соединяется с указанный сервером NTP. В настройках клиента NTP адрес IP сервера NTP должен быть определён как адрес первого или второго сервера NTP. Клиент синхронизирует своё время с сервером NTP. Далее каждые 641024 секунды клиент запрашивает время с сервера NTP. Режим unicast mode является единственным, который использует параметры настроек "первый" и "второй" серверы NTP.

Multicast mode работает аналогично режиму broadcast mode. При этом вместо широковещательных сообщений на адрес, например, 255.255.255.255 сообщения multicast принимаются с адреса 224.0.1.1. То есть, для доставки пакетов используются multicast-адреса сетей класса D адресного пространства IP-адресов. Для клиентов и серверов задается адрес multicast-группы, которую они используют для синхронизации времени. Это делает возможным синхронизацию групп машин, расположенных в различных подсетях, при условии, что соединяющие их маршрутизаторы поддерживают протокол IGMP и настроены на передачу группового трафика.

Manycast mode функционирует как режим unicast mode только с неизвестными адресами IP серверов NTP. Для обнаружения сервера NTP клиент отправляет сообщение multicast на адрес, например, IP 239.192.1.1. Другими словами, используются адреса multicast-групп (сети класса D). Клиенты и серверы, использующие один и тот же адрес, формируют одну ассоциацию. Количество ассоциаций определяется количеством используемых multicast-адресов.
Если сервер NTP настроен на то, чтобы "слушать" эти сообщения multicast (стоит галочка в поле Manycast), то он "отвечает" на такие сообщения.
После получения клиентом ответа клиень переходит в режим unicast mode и синхронизируется с ответившим ему сервером NTP. Одновременно с этим клиент продолжает поиск большего (ударение на букву о) числа серверов NTP, периодически отправляя сообщения multicast каждые 64 секунды.
Этот режим является нововведением 4-й версии протокола NTP. В manycast mode подразумевается поиск клиентом среди своих сетевых соседей manycast-серверов, получение от каждого из них образцов времени (с использованием криптографии) и на основании этих данных выбирается 3 «лучших» manycast-сервера, с которыми клиент будет производить синхронизацию. В случае выхода из строя одного из серверов клиент автоматически обновляет свой список.


В настройках сетевого экрана, может быть, придётся разрешить (Action = Accept) получение пакетов NTP по протоколу UDP с порта источника 123:


Для сетевых экранов ОС Windows рекомендуют открывать на входящие и исходящие соединения по порту 123 UDP "от" и "на", хотя может и являться "перестраховкой".

Чтобы не лезть в настройки каждого компьютера с целью изменения источника точного времени (для Windows) можно внести в DNS соответствующую запись. Обусловлено это тем, что time.windows.com является высоконагруженным узлом, что может привести к периодическим отказам синхронизации времени на компьютерах под управлением Windows.


Такое действие будет оправдано, если пользователи клиентских компьютеров не будут предпринимать действия по изменению адресов серверов DNS в настройках своих сетевых соединений. Для исключения такой возможности произведите настройку принудительного перенаправления запросов DNS на сервер DNS MikroTik – подробности.

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


Если вдруг всё равно высвечивается ошибка,


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

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


Лирическое отступление с долей иронии

Сразу стали посещать "умные" мысли о перенаправлении запросов на самом MikroTik или добавлении правил в брандмауэр компьютера ... Пока не вспомнил, как частенько отвечал на "умные" вопросы по сотовому телефону:
– Привет, а ты где?
Заметьте, главное, что его интересует: где я. Начинаю предполагать, что знание моих значений на сетке координат определяет: следует ли далее продолжить беседу или уже пора нажать на кнопку завершения вызова. А если я ушёл в нирвану?
– Я тут.
– А тут это где?
– А тут – это не там.
– А там это где?
– А там – это не здесь.
– А здесь – это где?
– А здесь Вам не тут ... (из армейских афоризмов)
– ??? (собеседник задумался, даже стала слышна работа мысли ...)

Аналогичная ситуация: на вопрос "ты где?" сервер NTP ответить затрудняется. Что ж, надо помочь. Укажите для своей сети широковещательный адрес, например:


  Пояснение.  В приведенном выше примере указана сеть с маской 24, т.е. 255.255.255.0
Если Ваши сети сегментированы, то для других масок у Вас будут другие значения, например,

/25 – 127 (255.255.255.128)
/26 – 63 (255.255.255.192)
/27 – 31 (255.255.255.224)
/28 – 15 (255.255.255.240)
/29 – 7 (255.255.255.248)

или в большую сторону

/23 – 511 (255.255.254.0)
/22 – 1023 (255.255.252.0)

Время стало синхронизироваться:



Отлично! Но для чистоты эксперимента перепроверим на следующий день:


Можно также сделать перенаправление запросов от узлов ЛВС на сервер NTP MikroTik.

Заключительные замечания касаются периодичности обращения системы Windows к серверу точного времени. Как умолчанию, этот промежуток времени составляет 7 дней. Но его можно изменить. Нажимаем клавиши Windows + R и в появившемся окне запуска пишем regedit (запуск редактора реестра). Альтернативный вариант: "Пуск  Все программы  Стандартные  Выполнить".

Перейдите в ветку HCLM\SYSTEM\:CurrentControlSet\services\W32Time\TimeProviders\NtpClient



Найдите параметр SpecialPollInterval. он как раз и определяет, с какой периодичностью клиент обращается к серверу точного времени. Значение параметра установлено в секундах.


Впишите желаемый интервал. Например, себе установил 21600 секунд = 6 часов (1 минута = 60 секунд, 1 час = 60 минут = 3600 секунд, 1 сутки = 24 часа = 86400 секунд):


Если у Вас нет в сети сервера точного времени, а стабильность связи с узлом time.windows.com оставляет желать лучшего, то Вы можете указать сервер точного времени или своей страны или ближайший доступный или выбранный пул адресов проекта ntppool.org.

На практике у меня встречалась "неразрешимая" проблема с синхронизацией времени на Windows 7. Кому интересно – читать здесь.

1 комментарий:

  1. Спасибо за пояснение, никак не мог найти этот пакет (искал отдельно ntp-серверб а он оказался в архиве).

    ОтветитьУдалить