NTP — протокол для синхронизации системного времени с эталонным, предоставляемым специальными серверами. В статье рассмотрим, как настроить протокол NTP в различных ОС и на некоторых устройствах, а начнем с большой инструкции по настройке NTP Server Linux.
Настраивать протокол синхронизации будем на примере Ubuntu, однако это руководство также подойдет для Debian и любых других Linux-подобных систем. Инструкцию мы разбили на три части: первая будет посвящена установке NTP-сервера, вторая — синхронизации NTP-клиентов, а третья — продвинутым настройкам протокола синхронизации.
Семь простых шагов помогут без проблем установить NTP-сервер и сделать его доступным для дальнейшей настройки. Работать будем в командной строке и редакторе nano, а также используем Terminal, который открывается по нажатию Ctrl+Alt+T
.
Это нужно, чтобы иметь возможность скачивать свежие версии ПО. Обновить индекс поможет вот эта инструкция:
sudo apt-get update
Установка запускается следующей инструкцией:
sudo apt-get install ntp
Но перед тем, как вводить ее, следует авторизоваться в sudo
. Для подтверждения установки выберите Y, если система попросит сделать такой выбор (Y/N). Теперь ждем, пока ПО скачается и установится.
Делать это не обязательно, но желательно для того, чтобы убедиться, что процесс завершился корректно. Для этого введите в терминале такую инструкцию:
sntp --version
Вывод должен содержать номер версии и время установки.
По умолчанию сервер должен получать корректное время, но для большей надежности лучше переключиться на ближайший к нам пул серверов. Это делается с помощью редактирования ntp.conf
, файл находится по пути /etc/ntp.conf
. Открываем его при помощи nano
(у вас должны быть права sudo), введя инструкцию:
sudo nano /etc/ntp.conf
В открывшемся файле вы увидите 4 строчки, которые мы для удобства выделили оранжевым прямоугольником:
Это стандартные пулы, которые мы заменим на российские, а возьмем их, например, с этой страницы. После замены строк выходим из ntp.conf
по нажатию Ctrl+O и Ctrl+X.
Это делается просто, при помощи следующей инструкции:
sudo service ntp restart
В этом нам поможет инструкция:
sudo service ntp status
В выводе в одной из первых строк (Active) должно быть указано Active (running)
, и далее в этой же строке отображено время запуска.
Чтобы ваши клиенты могли заходить на сервер, откроем им доступ через UFW, прокинув UDP-порт 123 следующей инструкцией:
sudo ufw allow from any to any port 123 proto udp
Установка завершена, сервер запущен, теперь приступаем к настройке.
Следующие шаги мы выполним для того, чтобы обеспечить возможность синхронизации клиентов с нашим NTP-сервером, который будет служить для них эталонным источником времени.
Для проверки сетевой конфигурации NTP вводим следующую инструкцию в терминале:
sudo apt-get install ntpdate
Это делается путем редактирования файла hosts
, который находится по пути /etc/hosts
. Вводим:
sudo nano /etc/hosts
В третью строчку сверху добавляем актуальные данные (адрес добавлен просто для примера, введите реальный IP своего NTP-сервера):
192.168.154.142 ntp-server
Теперь жмем Ctrl+X и сохраняем изменения по нажатию Y. Добавим, что эту процедуру можно выполнить и на DNS-сервере, если он у вас есть.
Чтобы выяснить наличие синхронизации между системами сервера и клиента, введите:
sudo ntpdate ntp-server
Значение в выводе будет означать смещение времени. Расхождение в несколько миллисекунд нормально, поэтому на такие цифры можно не обращать внимания.
Эта служба синхронизирует время локальной системы, однако нам она не нужна, поскольку в нашей схеме клиенты будут синхронизироваться через NTP-сервер. Поэтому вводим:
sudo timedatectl set-ntp off
Это делается при помощи инструкции:
sudo apt-get install ntp
Мы хотим, чтобы клиенты сверялись именно с ним, поэтому открываем уже знакомый файл конфигураций ntp.conf
и добавляем туда инструкцию следующего вида:
server NTP-server-host prefer iburst
Инструкция prefer
добавляется для указания на предпочтение (в данном случае сервера). В свою очередь, iburst
позволяет отправлять на сервер несколько запросов, что повышает точность синхронизации. Теперь снова жмем Ctrl+X и сохраняем изменения по нажатию Y.
Эта инструкция тоже простая и в комментариях не нуждается:
sudo service ntp restart
Мы почти закончили, осталось ввести инструкцию:
ntpq -ps
Она понадобится нам для проверки NTP-сервера, который указан как источник в очереди синхронизации времени.
клауд
Итак, мы установили и настроили NTP-сервер, а затем синхронизировали с ним клиентские машины. Теперь снова открываем ntp.conf
(напомним, что он находится по пути /etc/ntp.conf
), который содержит немало других интересных настроек, позволяющих обеспечить надежную синхронизацию с внешним миром.
Вызывающий наибольшее доверие сервер или серверный пул сопровождаем инструкцией prefer
, которая уже встречалась нам выше. Вот так:
server 1.ru.pool.ntp.org prefer
О том, что мы обращаемся именно к серверу, говорит директива server
в начале, а если нужно указать серверный пул, то будет использоваться директива pool
.
Также не стоит забывать про строчку server 127.127.1.0
в конце списка пулов: она нужна для того, чтобы подхватывалось системное время, если вдруг не будет соединения.
Обратите внимание на наличие следующих строчек в ntp.conf
:
restrict default kod notrap nomodify nopeer noquery
default
служит для установки значений по умолчанию. В данном случае она действует для всех restrict
.kod
используется для отправки kiss of death
серверам, отправляющим слишком много запросов.Далее идут инструкции:
notrap
);nomodify
);nopeer
);noquery
);default
следует поставить -4, а если IPv6, то, соответственно, -6.А вот и наглядный пример использования некоторых команд, описанных выше. Следующая строчка разрешает синхронизацию узлов в соответствующей сети, дополнительно запрещая узлам принимать управляющие и изменяющие состояние команды:
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
А эти рестрикты нужны для того, чтобы сервер мог обмениваться данными сам с собой:
restrict 127.0.0.1
restrict ::1
И не забывайте о перезапуске сервера после внесения изменений.
Для этого используйте инструкцию ntpq -p
. При правильных настройках ответом будет таблица со столбцами, которая выглядит примерно так:
В первом столбце указан адрес сервера для синхронизации, далее показан вышестоящий сервер, уровень (столбец st
) и nup
(столбец t
). В следующих 3 столбцах отражена информация о последнем времени сверки, периоде синхронизации, работоспособности (число 377 означает 8 успешных синхронизаций с этим сервером). Последние 2 столбца показывают разницу между временем синхронизируемого и эталонного сервера, а также смещение времени.
Кроме того, обратите внимание на знаки в первом столбце, которые стоят перед IP. Самый хороший знак — это +
, который говорит о том, что данный сервер заслуживает доверия в плане синхронизации. Соответственно, –
указывает на обратное, а *
— это текущий сервер, выбранный для синхронизации. Также иногда встречается значок x
, который означает, что сервер недоступен.
Для этого потребуется ввести на другой системе инструкцию ntpdate
с указанием IP проверяемого сервера. Ответ должен быть примерно таким:
adjust time server (здесь будет IP-адрес) offset 0.012319 sec
Число здесь означает время рассинхронизации. В данном случае всё в порядке, рассинхронизация составляет всего около 0,01 сек., а если точнее — 12 миллисекунд, что вполне допустимо.
Что ж, с Linux разобрались, теперь рассмотрим, как настроить протокол NTP в ОС Windows.
Для этого нам понадобится выполнить несколько операций в реестре и ввести инструкции в командной строке. Но перед тем как приступить к настройке, службу нужно запустить. Это делается путем изменения следующей записи в реестре:
HKLM\System\CurrentControlSet\services\W32Time\TimeProviders\NtpServer
В данной ветке находим Enabled
справа и выставляем 1, чтобы запись в столбце Data
имела следующий вид:
0x00000001 (1)
Теперь открываем cmd
и вводим инструкцию, которая нужна для перезапуска протокола:
net stop w32time && net start w32time
Учтите, что вводить инструкцию нужно из-под C:\Users\Administrator
. Проверить, что NTP включился, можно следующей командой:
w32tm /query /configuration
Выведется длинная запись, в которой обратите внимание на блок NtpServer <Local>
: в строке Enabled
значение должно быть 1. Теперь откроем в фаерволе UDP-порт 123 для корректного обслуживания клиентов, после чего приступаем к настройке.
Возвращаемся в реестр и ищем запись:
HKLM\System\CurrentControlSet\services\W32Time\Parameters
В этой ветке довольно много параметров, а главным является Type
, который принимает одно из 4 значений:
NoSync
— без синхронизации;NTP
— синхронизация с внешними серверами, определенными в NtpServer
в реестре (устанавливается по умолчанию для отдельной машины);NT5DS
— синхронизация в соответствии с иерархией доменов (устанавливается по умолчанию для машины в составе домена);AllSync
— синхронизация со всеми доступными серверами.Теперь снова обратимся к реестру и настроим значения в ветке NtpServer
. Скорее всего там указан только сервер Майкрософта. Вы можете добавить другие, обращая внимание на флаг в конце:
И последнее, что нужно сделать — задать интервал синхронизации в ветке:
W32Time\TimeProviders\NtpClient
За это отвечает SpecialPollInterval
, где поставьте требуемое значение (указывается в секундах). По умолчанию там выставлено значение, равное неделе. Если хотите синхронизироваться чаще, то для 1 дня поставьте 86400, для времени суток (четверть дня или 6 часов) — 21600, а для часа 3600. Последнее значение является оптимальным с точки зрения соотношения нагрузки на систему и приемлемой точности там, где требуется синхронизировать время достаточно часто.
На устройствах Cisco всё делается просто и быстро:
conf t
.clock timezone
. Если время московское, ставим далее MSK 3
.ntp source
и указываем источник.ntp master
должно быть 2 или больше.ntp update-calendar
нужна для обновления времени.clock timezone
и источник при помощи инструкции ntp source
.show
, которая пригодится для вызова времени (show clock
), статуса NTP (show ntp status
) и ассоциаций (show ntp associations
).Подготовили для вас выгодные тарифы на облачные серверы
Выполним настройку при помощи SNTP:
System
– SNTP Client
.SNTP Client
и включите его, поставив галочку в поле Enabled
.Server DNS Names
ниже введите IP-адреса эталонных серверов.System
– Clock
. Там же установите часовой пояс, выбрав его из выпадающего списка, либо поставьте галочку в поле Time Zone Autodetect
, и тогда часовой пояс установится автоматически.Poll Interval
в меню SNTP Client
. А ниже будет показано время последней синхронизации (поле Last Update
).Вот мы и научились настраивать NTP в распространенных ОС и на отдельных устройствах.