Как настроить NTP для использования в проекте NTP Pool в CentOS 7

Вступление

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

Здесь в игру вступает проектNTP Pool Project. Это огромный всемирный кластер серверов времени, который обеспечивает легкий доступ к известному «хорошему времени» для десятков миллионов клиентов по всему миру. Это сервер времени по умолчанию для Ubuntu и большинства других основных дистрибутивов Linux, а также многих сетевых устройств и программных приложений.

В этом руководстве вы настроите NTP на своем сервере и сконфигурируете его как часть проекта пула NTP, чтобы оно предоставляло точное время другим пользователям проекта пула NTP. Предоставление свободных циклов ЦП и неиспользуемой полосы пропускания - это идеальный способ вернуть что-то сообществу.

Требуемая пропускная способность относительно низкая и может быть скорректирована в зависимости от суммы, которую вы можете предоставить, и от того, где находится ваш сервер. Каждый клиент будет отправлять только пару пакетов UDP каждые 20 минут, поэтому большинство серверов получают только около десятка пакетов NTP в секунду, с пиками пару раз в день, до ста пакетов в секунду. Это означает использование полосы пропускания 10–15 Кбит / с с пиками 50–120 Кбит / с.

Есть три основных требования, которые вы должны выполнить, прежде чем присоединиться к проекту NTP Pool:

  1. Ваш сервер должен иметь статический IP-адрес.

  2. Ваш сервер должен иметь постоянное и стабильное интернет-соединение.

  3. Ваш IP-адрес в большинстве случаев не меняется или меняется нечасто (раз в год или реже).

Для большинства облачных серверов первые два требования обычно выполняются автоматически. Третье требование подчеркивает, что присоединение к проекту NTP Pool представляет собой долгосрочное обязательство. Конечно, если ваши обстоятельства изменятся, вытащить сервер из пула хорошо, но пройдет много времени (в основном недели, а иногда месяцы или даже годы), прежде чем трафик полностью исчезнет.

Предпосылки

Для завершения этого урока вам понадобится:

  • Один сервер Centos 7 с настроенной сетью IPv6. Если вам нужно настроить сеть IPv6 на существующей капле, вы можете следоватьthis tutorial.

  • Пользователь sudo без полномочий root и брандмауэр, который вы можете настроить, следуя указаниямInitial Server Setup with CentOS 7 tutorial и разделу «Настройка базового брандмауэра» в руководствеAdditional Recommended Steps for New CentOS 7 Servers.

[[step-1 -—- install-ntp]] == Шаг 1. Установка NTP

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

sudo yum update

Затем установите NTP:

sudo yum install ntp

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

sudo systemctl start ntpd
sudo systemctl enable ntpd

Если вы настроили брандмауэр, как указано в предварительных требованиях, вы должны разрешить трафик UDP для службы NTP для связи с пулом NTP:

sudo firewall-cmd --permanent --add-service=ntp
sudo firewall-cmd --reload

Дополнительные сведения о FirewallD см. ВHow To Set Up a Firewall Using FirewallD on CentOS 7.

Теперь NTP установлен, но он настроен на использование серверов времени пула NTP по умолчанию. Вместо этого давайте выберем несколько конкретных серверов времени.

[[шаг-2 -—- выбор-подходящего-восходящего-сервера]] == Шаг 2 - Выбор подходящего восходящего-сервера

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

Многоуровневый и иерархический протокол NTP разделяет участвующие стороны на первичные серверы, вторичные серверы и клиенты. Первичные серверы называютсяStratum 1 и напрямую связаны с источником времени, который называетсяStratum 0. Этот источник может быть атомными часами, приемником GPS или радионавигационной системой. Вторичные серверы в цепочке называютсяStratum 2,Stratum 3 и так далее.

Каждый сервер также является клиентом. Клиент Stratum 2 получает время от вышестоящего сервера Stratum 1 и предоставляет время нисходящим серверам Stratum 3 или другим клиентам. Для правильной работы участников проекта NTP Pool демону NTP необходимо настроить как минимум три сервера. Проект рекомендует минимум четыре и не более семи источников.

Проект NTP Pool предоставляет список общедоступных серверов времени Stratum 1 и Startum 2. Списки обозначают серверы времени NTP, доступные для публичного доступа в соответствии с установленными ограничениями. Вы найдете три типа:

  • OpenAccess: на этот раз сервер открыт для любого клиента, соответствующего пулу NTPusage recommendations.

  • RestrictedAccess: на этот раз сервер имеет некоторые ограничения доступа в дополнение к рекомендациям по использованию пула NTP.

  • ClosedAccess: на этот раз сервер закрыт или требует предварительной договоренности.

[.warning] #Warning: не используйте серверы, не указанные какOpenAccess, если вы не получили на это разрешение.
#

ПосетитеStratum 1 Time Servers list. Вы увидите список, подобный следующему:

Stratum 1 servers

Отсортируйте список по столбцуISO code и найдите один или два сервера, географически близких к центру обработки данных вашего сервера. Когда в столбце сервераAccess Policy указаноOpenAccess, вы можете использовать его без проблем. Если написано «RestrictedAccess», щелкните, чтобы открыть запись, и прочитайте инструкции, указанные в полеAccessDetails. Часто вы обнаруживаете, что дляNotificationMessage установлено значениеYes, что означает, что вам нужно создать неофициальное электронное письмо, направленное на адрес, указанный вServerContact, с уведомлением оператора сервера о вашем желании используйте этот сервер времени в качестве источника времени для члена вашего проекта пула NTP.

После того, как вы определили серверы, которые хотите использовать, щелкните ссылку для каждого сервера в столбцеISO и скопируйте его имя хоста или IP-адрес. Вы будете использовать эти адреса на шаге 3.

Затем выберите три или четыре сервера из спискаStratum 2, выполнив тот же процесс.

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

[[step-3 -—- configuring-ntp-to-join-the-pool]] == Шаг 3 - Настройка NTP для присоединения к пулу

Чтобы использовать свой сервер с пулом NTP и настроить новые серверы времени, вам нужно будет внести некоторые изменения в конфигурацию вашего демона NTP. Для этого отредактируйте файл/etc/ntp.conf:

sudo vi /etc/ntp.conf

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

/etc/ntp.conf

# For more information about this file, see the man pages
# ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).

driftfile /var/lib/ntp/drift

...

Затем удалите записи источника времени по умолчанию из конфигурации. Вы ищите все линии шаблонаserver 0.centos.pool.ntp.org iburst. Если вы используете конфигурацию по умолчанию, удалите выделенные строки, как показано в следующем примере:

/etc/ntp.conf

...
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst

Замените удаленные линии выбранными вручную серверами, выбранными на предыдущем шаге.

/etc/ntp.conf

...
server ntp_server_hostname_1 iburst
server ntp_server_hostname_2 iburst
server ntp_server_hostname_3 iburst
server ntp_server_hostname_4 iburst
server ntp_server_hostname_5 iburst
...

Мы используем параметрiburst для каждого сервера в соответствии с рекомендациями пула NTP. Таким образом, если сервер недоступен, он отправит пакет из восьми пакетов вместо обычного одного пакета. Использование параметраburst в проекте пула NTP считается злоупотреблением, поскольку он будет отправлять эти восемь пакетов каждый интервал опроса, тогда какiburst отправляет восемь пакетов только в первый раз.

Затем убедитесь, что конфигурация по умолчанию не разрешает запросы управления. Если вы этого не сделаете, ваш сервер может быть использован в атаках отражения NTP или может быть уязвим для запросовntpq иntpdc, которые пытаются изменить состояние сервера. Убедитесь, что параметрnoquery добавлен к строкам по умолчаниюrestrict. Также убедитесь, что вы добавили параметрыkod иlimited, поскольку они ограничивают слишком нетерпеливые запросы клиентов и обеспечивают ограничение скорости.

/etc/ntp.conf

...
# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.
restrict default nomodify notrap nopeer noquery kod limited

# Permit all access over the loopback interface.  This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
restrict 127.0.0.1
restrict ::1

Вы можете найти больше информации о других параметрах вofficial documentation.

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

/etc/ntp.conf

driftfile /var/lib/ntp/ntp.drift

restrict default nomodify notrap nopeer noquery kod limited

restrict 127.0.0.1
restrict ::1

server ntp_server_hostname_1 iburst
server ntp_server_hostname_2 iburst
server ntp_server_hostname_3 iburst
server ntp_server_hostname_4 iburst
server ntp_server_hostname_5 iburst

Сохраните файл и выйдите из редактора.

Теперь перезапустите службу NTP и позвольте вашему серверу времени синхронизировать свои часы с вышестоящими серверами.

sudo systemctl restart ntpd

Через несколько минут проверьте работоспособность вашего сервера времени с помощью командыntpq:

ntpq -p

Вывод должен выглядеть примерно так:

Output     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 mizbeaver.udel. .INIT.          16 u    -   64    0    0.000    0.000   0.000
 montpelier.ilan .GPS.            1 u   25   64    7   55.190    2.121 130.492
+nist1-lnk.binar .ACTS.           1 u   28   64    7   52.728   23.860   3.247
*ntp.okstate.edu .GPS.            1 u   31   64    7   19.708   -8.344   6.853
+ntp.colby.edu   .GPS.            1 u   34   64    7   51.518   -5.914   6.669

Столбецremote сообщает вам имя хоста серверов, которые использует демон NTP, а столбецrefid сообщает вам источник, который используют серверы. Таким образом, для серверов Stratum 1 в полеrefid должны отображатьсяGPS,PPS,ACTS илиPTB, а серверы Stratum 2 и выше будут отображать IP адрес вышестоящего сервера. Столбецst показывает страту, аdelay,offset иjitter говорят вам о качестве источника времени. Более низкие значения лучше для этих трех полей.

Ваш сервер времени теперь может обслуживать время для публики. Вы можете проверить это, вызвавntpdate с другого хоста:

ntpdate -q your_server_ip

Вывод должен выглядеть примерно так, и он говорит вам, что он настроил сервер времени и смещение:

Outputserver your_server_ip, stratum 2, offset 0.001172, delay 0.16428
 2 Mar 23:06:44 ntpdate[18427]: adjust time server your_server_ip offset 0.001172 sec

Теперь вы готовы зарегистрировать свой NTP-сервер в проекте NTP Pool, чтобы другие могли его использовать.

[[step-4 -—- add-the-server-to-the-ntp-pool]] == Шаг 4 - Добавление сервера в пул NTP

Чтобы добавить свой сервер, чтобы другие могли его использовать, посетитеmanage.ntppool.org и зарегистрируйте учетную запись. Вы получите электронное письмо отNTP Pool [email protected] с просьбой подтвердить свою учетную запись. Подтвердите свою учетную запись, следуя инструкциям в электронном письме, а затем войдите вmanage.ntppool.org.

После входа в систему вы увидите простой интерфейс для добавления серверов:

Add a server

Введите IP-адрес вашего сервера и нажмитеSubmit.

На следующем экране вас попросят убедиться, что он идентифицировал регион вашего сервера. Если он показывает ваш сервер в другом регионе, чем вы ожидаете, используйте полеComment, чтобы сообщить им об этом.

The verification screen

Если вы довольны, подтвердите ввод, нажавYes, this is my server, add it!

Ваш сервер теперь является частью проекта NTP Pool. Посетитеhttp://www.pool.ntp.org/scores/your_server_ip, чтобы просмотреть информацию о вашем сервере, собранную системой мониторинга пула NTP. Он проверяет ваш сервер несколько раз в час и отображает данные о смещении вместе сscore вашей системы. Пока ваш сервер хорошо проводит время и доступен, счет будет расти до 20 очков. В пуле используются только серверы с оценкой выше 10.

Устранение неполадок с подключением

Если у вас возникают проблемы с синхронизацией вашего сервера, возможно, у вас установлен брандмауэр пакетов, отбрасывающий ваши пакетыoutgoing на порт123. Взгляните наHow To Set Up a Firewall Using FirewallD on CentOS 7, чтобы узнать, как проверить состояние брандмауэра.

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

Если вы уверены, что у вас нет брандмауэра или вы открыли порт123 как для входящего, так и для исходящего трафика, ваш серверный провайдер или другой транзитный провайдер может отбрасывать ваши пакеты по пути. Если у вас нет знаний для самостоятельного решения этих проблем, лучше обратиться к сообществу и обратиться за помощью. NTP Pool Projects forum - хорошее место для начала. Вы также можете присоединиться кmailing list илиsend an emaill к оператору проекта пула NTP. Просто убедитесь, что вы можете показать все шаги, которые вы уже пытались решить, прежде чем обращаться за помощью.

Заключение

В этом руководстве вы успешно настроили свой собственный сервер времени и сделали его участником проекта NTP Pool, предоставляя время сообществу. Поддерживать связь с сообществом хронометража. присоединиться кNTP Pool Projects forum илиmailing list. Обязательно следите за счетом вашего сервера и вносите необходимые изменения.

Related