Давайте дружить в Телеграме: рассказываем про новые фичи, общаемся в комментах, прислушиваемся к вашим идеям Подписаться

Настройка NTP на сервере: пошаговая инструкция

Роман Андреев
Роман Андреев
Технический писатель
06 февраля 2023 г.
7416
10 минут чтения
Средний рейтинг статьи: 5

NTP — протокол для синхронизации системного времени с эталонным, предоставляемым специальными серверами. В статье рассмотрим, как настроить протокол NTP в различных ОС и на некоторых устройствах, а начнем с большой инструкции по настройке NTP Server Linux.

Пошаговая инструкция по настройке NTP-сервера Linux

Настраивать протокол синхронизации будем на примере Ubuntu, однако это руководство также подойдет для Debian и любых других Linux-подобных систем. Инструкцию мы разбили на три части: первая будет посвящена установке NTP-сервера, вторая — синхронизации NTP-клиентов, а третья — продвинутым настройкам протокола синхронизации.

Часть 1. Устанавливаем NTP-сервер

Семь простых шагов помогут без проблем установить NTP-сервер и сделать его доступным для дальнейшей настройки. Работать будем в командной строке и редакторе nano, а также используем Terminal, который открывается по нажатию Ctrl+Alt+T.

Шаг 1. Обновляем индекс репозитория

Это нужно, чтобы иметь возможность скачивать свежие версии ПО. Обновить индекс поможет вот эта инструкция:

sudo apt-get update

Шаг 2. Устанавливаем сервер

Установка запускается следующей инструкцией:

sudo apt-get install ntp

Но перед тем, как вводить ее, следует авторизоваться в sudo. Для подтверждения установки выберите Y, если система попросит сделать такой выбор (Y/N). Теперь ждем, пока ПО скачается и установится.

Шаг 3. Проверяем установку

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

sntp --version

Вывод должен содержать номер версии и время установки.

Шаг 4. Переключаемся на ближайший пул

По умолчанию сервер должен получать корректное время, но для большей надежности лучше переключиться на ближайший к нам пул серверов. Это делается с помощью редактирования ntp.conf, файл находится по пути /etc/ntp.conf. Открываем его при помощи nano (у вас должны быть права sudo), введя инструкцию:

sudo nano /etc/ntp.conf

В открывшемся файле вы увидите 4 строчки, которые мы для удобства выделили оранжевым прямоугольником:

Image1

Это стандартные пулы, которые мы заменим на российские, а возьмем их, например, с этой страницы. После замены строк выходим из ntp.conf по нажатию Ctrl+O и Ctrl+X.

Шаг 5. Перезапускаем сервер

Это делается просто, при помощи следующей инструкции:

sudo service ntp restart

Шаг 6. Проверяем запуск

В этом нам поможет инструкция:

sudo service ntp status

В выводе в одной из первых строк (Active) должно быть указано Active (running), и далее в этой же строке отображено время запуска.

Шаг 7. Настраиваем брандмауэр

Чтобы ваши клиенты могли заходить на сервер, откроем им доступ через UFW, прокинув UDP-порт 123 следующей инструкцией:

sudo ufw allow from any to any port 123 proto udp

Установка завершена, сервер запущен, теперь приступаем к настройке.

Часть 2. Настраиваем синхронизацию NTP-клиентов

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

Шаг 1. Проверяем соединение

Для проверки сетевой конфигурации NTP вводим следующую инструкцию в терминале:

sudo apt-get install ntpdate

Шаг 2. Указываем IP и хост

Это делается путем редактирования файла hosts, который находится по пути /etc/hosts. Вводим:

sudo nano /etc/hosts

В третью строчку сверху добавляем актуальные данные (адрес добавлен просто для примера, введите реальный IP своего NTP-сервера):

192.168.154.142 ntp-server

Теперь жмем Ctrl+X и сохраняем изменения по нажатию Y. Добавим, что эту процедуру можно выполнить и на DNS-сервере, если он у вас есть.

Шаг 3. Проверяем синхронизацию клиента с сервером

Чтобы выяснить наличие синхронизации между системами сервера и клиента, введите:

sudo ntpdate ntp-server

Значение в выводе будет означать смещение времени. Расхождение в несколько миллисекунд нормально, поэтому на такие цифры можно не обращать внимания.

Шаг 4. Отключаем службу timesyncd

Эта служба синхронизирует время локальной системы, однако нам она не нужна, поскольку в нашей схеме клиенты будут синхронизироваться через NTP-сервер. Поэтому вводим:

sudo timedatectl set-ntp off

Шаг 5. Устанавливаем NTP на системе клиента

Это делается при помощи инструкции:

sudo apt-get install ntp

Шаг 6. Делаем наш NTP-сервер эталонным

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

server NTP-server-host prefer iburst

Инструкция prefer добавляется для указания на предпочтение (в данном случае сервера). В свою очередь, iburst позволяет отправлять на сервер несколько запросов, что повышает точность синхронизации. Теперь снова жмем Ctrl+X и сохраняем изменения по нажатию Y.

Шаг 7. Перезапускаем сервер

Эта инструкция тоже простая и в комментариях не нуждается:

sudo service ntp restart

Шаг 8. Смотрим на очередь синхронизации

Мы почти закончили, осталось ввести инструкцию:

ntpq -ps

Она понадобится нам для проверки NTP-сервера, который указан как источник в очереди синхронизации времени.

Часть 3. Продвинутые возможности синхронизации

Итак, мы установили и настроили 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);
  • если используется протокол IPv4, то перед инструкцией default следует поставить -4, а если IPv6, то, соответственно, -6.

А вот и наглядный пример использования некоторых команд, описанных выше. Следующая строчка разрешает синхронизацию узлов в соответствующей сети, дополнительно запрещая узлам принимать управляющие и изменяющие состояние команды:

restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap

А эти рестрикты нужны для того, чтобы сервер мог обмениваться данными сам с собой:

restrict 127.0.0.1
restrict ::1

И не забывайте о перезапуске сервера после внесения изменений.

Проверяем корректность работы NTP

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

Image2

В первом столбце указан адрес сервера для синхронизации, далее показан вышестоящий сервер, уровень (столбец 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.

Настройка NTP сервера Windows Server

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

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. Скорее всего там указан только сервер Майкрософта. Вы можете добавить другие, обращая внимание на флаг в конце:

  • 0x1, SpecialInterval, стандартный режим, рекомендуемый Microsoft;
  • 0x2, UseAsFallbackOnly, для использования сервера в качестве резервного;
  • 0x4, SymmetricActive, этот режим основной для NTP-серверов;
  • 0x8, Client, при возникновении проблем с синхронизацией.

И последнее, что нужно сделать — задать интервал синхронизации в ветке:

W32Time\TimeProviders\NtpClient

За это отвечает SpecialPollInterval, где поставьте требуемое значение (указывается в секундах). По умолчанию там выставлено значение, равное неделе. Если хотите синхронизироваться чаще, то для 1 дня поставьте 86400, для времени суток (четверть дня или 6 часов) — 21600, а для часа 3600. Последнее значение является оптимальным с точки зрения соотношения нагрузки на систему и приемлемой точности там, где требуется синхронизировать время достаточно часто.

Настройка NTP сервера Cisco

На устройствах Cisco всё делается просто и быстро:

  1. Запускаем конфигурационный режим командой conf t.
  2. Устанавливаем часовой пояс инструкцией clock timezone. Если время московское, ставим далее MSK 3.
  3. Далее вводим команду ntp source и указываем источник.
  4. Если требуется сделать сервер главным для других машин в сети, то значение в инструкции ntp master должно быть 2 или больше.
  5. Инструкция ntp update-calendar нужна для обновления времени.
  6. Теперь укажите названия или IP серверов.
  7. Введите часовой пояс командой clock timezone и источник при помощи инструкции ntp source.
  8. Для проверки и при возникновении проблем поможет инструкция show, которая пригодится для вызова времени (show clock), статуса NTP (show ntp status) и ассоциаций (show ntp associations).

Настройка NTP-сервера на роутерах MikroTik

Выполним настройку при помощи SNTP:

  1. В Winbox перейдите в SystemSNTP Client.
  2. Найдите пункт SNTP Client и включите его, поставив галочку в поле Enabled.
  3. В строки Server DNS Names ниже введите IP-адреса эталонных серверов.
  4. Проверим, всё ли заработало. Перейдите в SystemClock. Там же установите часовой пояс, выбрав его из выпадающего списка, либо поставьте галочку в поле Time Zone Autodetect, и тогда часовой пояс установится автоматически.
  5. Интервал синхронизации можно посмотреть в поле Poll Interval в меню SNTP Client. А ниже будет показано время последней синхронизации (поле Last Update).

Вот мы и научились настраивать NTP в распространенных ОС и на отдельных устройствах.

Зарегистрируйтесь и начните пользоваться
сервисами Timeweb Cloud прямо сейчас

15 лет опыта
Сосредоточьтесь на своей работе: об остальном позаботимся мы
165 000 клиентов
Нам доверяют частные лица и компании, от небольших фирм до корпораций
Поддержка 24/7
100+ специалистов поддержки, готовых помочь в чате, тикете и по телефону