Раздел помощи SpaceWeb

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

16 фев, 2024

Network Time Protocol, или NTP – это протокол сетевого времени, который используется для синхронизации времени на компьютерах и других устройствах в сети. Он позволяет устройствам получать точное время от так называемых временных серверов и синхронизироваться с ними.

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

Как работает NTP

Протокол NTP работает на основе иерархии временных серверов, где более высокоуровневые серверы синхронизируются с точными источниками времени (например, атомными часами). Они предоставляют эту информацию более низкоуровневым устройствам в сети. А уже эти устройства, в свою очередь, могут предоставлять свои временные данные другим.

Задачи синхронизации

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

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

Чем отличается SNTP от NTP

SNTP (Simple Network Time Protocol) и NTP (Network Time Protocol) действительно имеют схожий формат сетевых пакетов, а потому представляют собой два взаимодействующих протокола для синхронизации времени в компьютерных сетях.

Но все-таки у них есть некоторые отличия:

NTP

SNTP

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

Это упрощенная версия NTP, и ее цель – предоставить базовую функциональность синхронизации времени без использования сложных алгоритмов. В результате SNTP может быть менее точным, но при этом более простым в использовании и реализации.

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

 

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

Его реализация и использование менее сложны. Он подходит для сред, где высокая точность синхронизации времени не играет большой роли. 

Инструкция по настройке NTP-сервера Linux (Ubuntu)

Установка NTP-сервера

  1. Обновите пакеты репозитория:

sudo apt-get update

Важно! Перед выполнением следующей команды удостоверьтесь, что вы авторизованы в системе для выполнения команд с sudo. 

  1. Установите NTP-сервер с помощью команды:

sudo apt-get install ntp

Если вас попросят подтвердить установку, нажмите «y». 

  1. Убедитесь, что NTP корректно установился. Для этого пропишите:

systemctl status ntp

Вывод должен содержать номер версии и информацию о времени установки: 

Если установка прошла успешно, переходите к следующим шагам.

Настройка NTP-сервера в Ubuntu

  1. Откройте файл конфигурации NTP:

sudo nano /etc/ntp.conf

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

  1. Внесите необходимые изменения в файл конфигурации, указав российские сервера времени. По умолчанию у вас на экране будут отображаться такая информация:

Перед выделенными серверами поставьте символ «#», а в конце добавьте четыре российских сервера. Например:

server 0.ru.pool.ntp.org
server 1.ru.pool.ntp.org
server 2.ru.pool.ntp.org
server 3.ru.pool.ntp.org

Пример того, как должен выглядеть файл перед сохранением:
 
# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board
# on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for
# more information.
# server 0.ubuntu.pool.ntp.org
# server 1.ubuntu.pool.ntp.org
# server 2.ubuntu.pool.ntp.org
# server 3.ubuntu.pool.ntp.org
server 0.ru.pool.ntp.org
server 1.ru.pool.ntp.org
server 2.ru.pool.ntp.org
server 3.ru.pool.ntp.org

  1. Сохраните изменения, зажав Ctrl+O, затем нажмите Enter.
  2. Затем закройте редактор с помощью сочетания клавиш Ctrl+X.
  3. Перезапустите NTP-сервер:

sudo service ntp restart

  1. Теперь проверьте, успешно ли применились настройки. Для этого пропишите:

sudo service ntp status

В выводе вы должны увидеть надпись «Active (running)». 

  1. Далее необходимо открыть доступ через UFW и порт 123. Введите:

sudo ufw allow from any to any port 123 proto udp 

Теперь ваш NTP-сервер установлен и сконфигурирован на сервере Ubuntu. Вы можете продолжить настройку, добавляя или изменяя сервера времени в файле конфигурации по мере необходимости.

Настройка синхронизации клиентов с NTP-сервером

  1. Установите инструмент для проверки сетевой конфигурации NTP:

sudo apt-get install ntpdate

  1. Для внесения дальнейших изменений потребуется отредактировать файл «hosts»:

sudo nano /etc/hosts

  1. Добавьте соответствующую строку с IP-адресом вашего NTP-сервера и хостом:

<IP-адрес> ntp-server

  1. Сохраните изменения, нажав Ctrl+X, а затем – Y.
  2. Теперь необходимо проверить синхронизацию клиента с сервером. Для этого пропишите: 

sudo ntpdate ntp-server

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

  1. Отключите службу timesyncd. Хотя она и синхронизирует время локальной сети, вам она не потребуется:

sudo timedatectl set-ntp off

  1. Затем введите:

sudo apt-get install ntp

Этой командой вы установите NTP на системе клиента. 

  1. Откройте файл конфигурации «ntp.conf»:

sudo nano /etc/ntp.conf

  1. Добавьте строку, которая укажет на предпочтение сервера. Кроме того, опция iburst в ней повысит точность синхронизации:

server NTP-server-host prefer iburst

  1. Сохраните изменения, нажав Ctrl+X, а затем – Y.
  2. Перезапустите сервер, чтобы применить все изменения:

sudo service ntp restart

  1. Проверьте очередь синхронизации:

ntpq -ps

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

Дополнительные настройки

С основными настройками мы закончили. Теперь продолжим знакомиться уже с продвинутыми настройками в файле конфигурации «ntp.conf». 

В данном случае мы рассмотрим использование предпочитаемого сервера и настройки безопасности с использованием директив «restrict». 

Как настроить предпочитаемый сервер

Для того чтобы задать предпочитаемый сервер в конфигурационном файле NTP, нужно воспользоваться директивой «prefer». Она указывает на то, что выбранный сервер должен в первую очередь использоваться для синхронизации.

Например, вы можете использовать ее с одним из ранее заданных серверов:

server 1.ru.pool.ntp.org prefer

Кроме того, указывать можно не только отдельные серверы, но и целые пулы. Разница будет лишь в синтаксисе – вместо опции «server» нужно указать «pool».

Как указать настройки безопасности

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

Рассмотрим пример таких настроек:

restrict default kod notrap nomodify nopeer noquery

Здесь:

  • «default» указывает, что эти ограничения по умолчанию применяются ко всем серверам и клиентам.
  • «kod» используется для отправки протокола безопасности «kiss of death». Он отправляется серверам, которые отправляют слишком много запросов.
  • «notrap» запрещает принимать управляющие команды.
  • «nomodify» запрещает команды, которые могут повлиять на состояние сервера.
  • «nopeer» запрещает синхронизацию с хостами.
  • «noquery» запрещает выполнение запросов.


Обязательно перезапустите NTP-сервер после внесения изменений в конфигурационный файл:

sudo service ntp restart

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

Важно! Не забудьте на всякий случай создать резервную копию реестра перед внесением изменений. 

Компания SpaceWeb не предоставляет услугу Windows Server, информация по настройке предоставляется как справочная.

  1. Прежде чем приступить к настройке, убедитесь, что служба W32Time уже запущена. Мы можем сделать это, изменив запись в реестре:

HKLM\System\CurrentControlSet\services\W32Time\TimeProviders\NtpServer

  1. Далее найдите параметр «Enabled» и установите ему значение 1:

0x00000001 (1)

  1. Затем в командной строке выполните следующую команду для перезапуска службы:

net stop w32time && net start w32time

  1. Убедитесь, что служба W32Time включена:

w32tm /query /configuration

В выводе обратите внимание на блок «NtpServer <Local>». Значение «Enabled» должно быть равно 1, как мы и указали ранее. 

  1. Проверьте, что UDP-порт 123 открыт в файерволе для корректного обслуживания клиентов. 

Вы знаете, какой порт NTP по умолчанию? 123/UDP. Именно поэтому мы проверяем, открыт ли он. 

  1. Вновь откройте реестр и найдите:

HKLM\System\CurrentControlSet\services\W32Time\Parameters

В этой ветке нас интересует параметр «Type». Установите ему одно из следующих значений в зависимости от требуемого режима синхронизации:

  • «NoSync» – синхронизация не требуется. 
  • «NTP» – нужна синхронизация с внешними серверами NTP, определенными в реестре.
  • «NT5DS» – требуется синхронизация в соответствии с иерархией доменов. 
  • «AllSync» – необходима синхронизация со всеми доступными серверами.
  1. Вернитесь в реестр и настройте значения в ветке «NtpServer». Добавьте сервера, обратив внимание на параметр в конце:
  • «0x1», SpecialInterval. Это стандартный режим, мы рекомендуем вам выбрать именно его.
  • «0x2», UseAsFallbackOnly. Позволяет использовать сервер в качестве резервного.
  • «0x4», SymmetricActive. Это основной режим для NTP-серверов.
  • «0x8», Client. Используется, если есть проблемы с синхронизацией.
  1. Наконец, в ветке «W32Time\TimeProviders\NtpClient» найдите параметр «SpecialPollInterval» и установите требуемое значение (в секундах).
  2. После внесения изменений перезапустите службу W32Time:

net stop w32time && net start w32time

Теперь у вас должен есть настроенный NTP-сервер на Windows Server. 

Заключение

В этой статье мы рассмотрели, как настроить NTP на сервере Ubuntu и Windows.