Network Time Protocol, или NTP – это протокол сетевого времени, который используется для синхронизации времени на компьютерах и других устройствах в сети. Он позволяет устройствам получать точное время от так называемых временных серверов и синхронизироваться с ними.
NTP особенно важен в компьютерных сетях и серверах, где точность времени имеет большое значение.
- Как работает NTP
- Задачи синхронизации
- Чем отличается SNTP от NTP
- Инструкция по настройке NTP-сервера Linux (Ubuntu)
- Настройка NTP-сервера Windows Server
Как работает NTP
Протокол NTP работает на основе иерархии временных серверов, где более высокоуровневые серверы синхронизируются с точными источниками времени (например, атомными часами). Они предоставляют эту информацию более низкоуровневым устройствам в сети. А уже эти устройства, в свою очередь, могут предоставлять свои временные данные другим.
Задачи синхронизации
Для чего применяется NTP? Протокол NTP играет ключевую роль в обеспечении согласованности времени в сети, обеспечивая точность синхронизации до наносекунд. Он позволяет устанавливать единое время для начала и завершения процессов в сети, что имеет ряд важных применений:
- Синхронизация позволяет устройствам и приложениям оперировать данными в режиме реального времени с единым временным референсом.
- Синхронизация времени необходима для правильного проведения транзакций, работы с сертификатами и подписью электронных документов. В таких ситуациях она обеспечивает точность и последовательность операций.
- Синхронизация позволяет более эффективно расследовать внутренние инциденты и контролировать нарушения безопасности в компьютерной сети.
- Благодаря синхронизации гарантируется точность информации о времени в системных логах. Она обеспечивает правильную хронологию событий для анализа и мониторинга ошибок.
- Протокол NTP позволяет сохранять сверхточные временные метки.
Чем отличается SNTP от NTP
SNTP (Simple Network Time Protocol) и NTP (Network Time Protocol) действительно имеют схожий формат сетевых пакетов, а потому представляют собой два взаимодействующих протокола для синхронизации времени в компьютерных сетях.
Но все-таки у них есть некоторые отличия:
NTP |
SNTP |
---|---|
Это более полная и точная версия протокола. Она предоставляет различные механизмы для повышения точности синхронизации времени: например, использование более сложных алгоритмов оценки времени и учета задержек в сети. |
Это упрощенная версия NTP, и ее цель – предоставить базовую функциональность синхронизации времени без использования сложных алгоритмов. В результате SNTP может быть менее точным, но при этом более простым в использовании и реализации. |
Более сложный протокол, который предоставляет множество возможностей для уточнения времени и обеспечения надежной синхронизации. Обычно используется в средах, где критически важна точность синхронизации времени: финансовые транзакции, телекоммуникации и другие области. |
Его реализация и использование менее сложны. Он подходит для сред, где высокая точность синхронизации времени не играет большой роли. |
Инструкция по настройке NTP-сервера Linux (Ubuntu)
Установка NTP-сервера
- Обновите пакеты репозитория:
sudo apt-get update
Важно! Перед выполнением следующей команды удостоверьтесь, что вы авторизованы в системе для выполнения команд с sudo.
- Установите NTP-сервер с помощью команды:
sudo apt-get install ntp
Если вас попросят подтвердить установку, нажмите «y».
- Убедитесь, что NTP корректно установился. Для этого пропишите:
systemctl status ntp
Вывод должен содержать номер версии и информацию о времени установки:
Если установка прошла успешно, переходите к следующим шагам.
Настройка NTP-сервера в Ubuntu
- Откройте файл конфигурации NTP:
sudo nano /etc/ntp.conf
Как правило, сервер будет указывать корректное время, но мы все равно рекомендуем вам переключиться на ближайший пул серверов. Так вы сможете избежать возможных ошибок.
- Внесите необходимые изменения в файл конфигурации, указав российские сервера времени. По умолчанию у вас на экране будут отображаться такая информация:
Перед выделенными серверами поставьте символ «#», а в конце добавьте четыре российских сервера. Например:
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
- Сохраните изменения, зажав Ctrl+O, затем нажмите Enter.
- Затем закройте редактор с помощью сочетания клавиш Ctrl+X.
- Перезапустите NTP-сервер:
sudo service ntp restart
- Теперь проверьте, успешно ли применились настройки. Для этого пропишите:
sudo service ntp status
В выводе вы должны увидеть надпись «Active (running)».
- Далее необходимо открыть доступ через UFW и порт 123. Введите:
sudo ufw allow from any to any port 123 proto udp
Теперь ваш NTP-сервер установлен и сконфигурирован на сервере Ubuntu. Вы можете продолжить настройку, добавляя или изменяя сервера времени в файле конфигурации по мере необходимости.
Настройка синхронизации клиентов с NTP-сервером
- Установите инструмент для проверки сетевой конфигурации NTP:
sudo apt-get install ntpdate
- Для внесения дальнейших изменений потребуется отредактировать файл «hosts»:
sudo nano /etc/hosts
- Добавьте соответствующую строку с IP-адресом вашего NTP-сервера и хостом:
<IP-адрес> ntp-server
- Сохраните изменения, нажав Ctrl+X, а затем – Y.
- Теперь необходимо проверить синхронизацию клиента с сервером. Для этого пропишите:
sudo ntpdate ntp-server
Это позволит вам убедиться в наличии синхронизации между системой сервера и клиента. Обратите внимание на вывод, который будет отображать смещение времени.
- Отключите службу timesyncd. Хотя она и синхронизирует время локальной сети, вам она не потребуется:
sudo timedatectl set-ntp off
- Затем введите:
sudo apt-get install ntp
Этой командой вы установите NTP на системе клиента.
- Откройте файл конфигурации «ntp.conf»:
sudo nano /etc/ntp.conf
- Добавьте строку, которая укажет на предпочтение сервера. Кроме того, опция iburst в ней повысит точность синхронизации:
server NTP-server-host prefer iburst
- Сохраните изменения, нажав Ctrl+X, а затем – Y.
- Перезапустите сервер, чтобы применить все изменения:
sudo service ntp restart
- Проверьте очередь синхронизации:
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, информация по настройке предоставляется как справочная.
- Прежде чем приступить к настройке, убедитесь, что служба W32Time уже запущена. Мы можем сделать это, изменив запись в реестре:
HKLM\System\CurrentControlSet\services\W32Time\TimeProviders\NtpServer
- Далее найдите параметр «Enabled» и установите ему значение 1:
0x00000001 (1)
- Затем в командной строке выполните следующую команду для перезапуска службы:
net stop w32time && net start w32time
- Убедитесь, что служба W32Time включена:
w32tm /query /configuration
В выводе обратите внимание на блок «NtpServer <Local>». Значение «Enabled» должно быть равно 1, как мы и указали ранее.
- Проверьте, что UDP-порт 123 открыт в файерволе для корректного обслуживания клиентов.
Вы знаете, какой порт NTP по умолчанию? 123/UDP. Именно поэтому мы проверяем, открыт ли он.
- Вновь откройте реестр и найдите:
HKLM\System\CurrentControlSet\services\W32Time\Parameters
В этой ветке нас интересует параметр «Type». Установите ему одно из следующих значений в зависимости от требуемого режима синхронизации:
- «NoSync» – синхронизация не требуется.
- «NTP» – нужна синхронизация с внешними серверами NTP, определенными в реестре.
- «NT5DS» – требуется синхронизация в соответствии с иерархией доменов.
- «AllSync» – необходима синхронизация со всеми доступными серверами.
- Вернитесь в реестр и настройте значения в ветке «NtpServer». Добавьте сервера, обратив внимание на параметр в конце:
- «0x1», SpecialInterval. Это стандартный режим, мы рекомендуем вам выбрать именно его.
- «0x2», UseAsFallbackOnly. Позволяет использовать сервер в качестве резервного.
- «0x4», SymmetricActive. Это основной режим для NTP-серверов.
- «0x8», Client. Используется, если есть проблемы с синхронизацией.
- Наконец, в ветке «W32Time\TimeProviders\NtpClient» найдите параметр «SpecialPollInterval» и установите требуемое значение (в секундах).
- После внесения изменений перезапустите службу W32Time:
net stop w32time && net start w32time
Теперь у вас должен есть настроенный NTP-сервер на Windows Server.
Заключение
В этой статье мы рассмотрели, как настроить NTP на сервере Ubuntu и Windows.