Поиск по сайту:

Как настроить NTP для использования в проекте пула NTP в Ubuntu 16.04


Введение

Точное хранение времени имеет решающее значение практически для любой службы или программного обеспечения. Электронная почта, регистраторы, системы событий и планировщики, механизмы аутентификации пользователей и службы, работающие на распределенных платформах, — все они нуждаются в точных временных метках для записи событий в хронологическом порядке. Эти службы используют сетевой протокол времени или 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-адрес практически не меняется или меняется нечасто (раз в год или реже).

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

Предпосылки

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

  • Один сервер Ubuntu 16.04 с настроенной сетью IPv6. Если вам нужно настроить сеть IPv6 в существующей капле, вы можете следовать этому руководству.
  • Пользователь sudo без полномочий root и брандмауэр, которые можно настроить, следуя руководству по начальной настройке сервера с Ubuntu 16.04.

Шаг 1 — Установка NTP

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

  1. sudo apt-get update

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

  1. sudo apt-get install ntp

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

  1. sudo ufw allow 123/udp

Дополнительные сведения об UFW см. в разделе Как настроить брандмауэр с помощью UFW в Ubuntu.

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

Шаг 2 — Выбор подходящего вышестоящего сервера

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

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

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

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

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

Предупреждение. Не используйте серверы, не указанные в списке OpenAccess, если вы не получили на это разрешение.

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

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

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

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

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

Шаг 3 — Настройка NTP для присоединения к пулу

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

  1. sudo nano /etc/ntp.conf

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

# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help

driftfile /var/lib/ntp/ntp.drift
...

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


# 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.
pool 0.ubuntu.pool.ntp.org iburst
pool 1.ubuntu.pool.ntp.org iburst
pool 2.ubuntu.pool.ntp.org iburst
pool 3.ubuntu.pool.ntp.org iburst

# Use Ubuntu's ntp server as a fallback.
pool ntp.ubuntu.com

Замените удаленные строки серверами, выбранными вами на предыдущем шаге, используя ключевое слово server вместо ключевого слова pool.

...
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 по умолчанию:

...
# By default, exchange time with everybody, but don't allow configuration.
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited

# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict ::1

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

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


driftfile /var/lib/ntp/ntp.drift

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

# By default, exchange time with everybody, but don't allow configuration.
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited

# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict ::1

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

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

  1. sudo systemctl restart ntp.service

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

  1. 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 показывает страту, а задержка, смещение и джиттер сообщают вам о качестве источника времени. Для этих трех полей лучше использовать более низкие значения.

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

  1. ntpdate -q your_server_ip

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

Output
server 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, чтобы другие могли его использовать.

Шаг 4 — Добавление сервера в пул NTP

Чтобы добавить свой сервер, чтобы им могли пользоваться другие, посетите страницу manage.ntppool.org.

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

Введите IP-адрес вашего сервера и нажмите «Отправить».

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

Если вы довольны, подтвердите запись, нажав Да, это мой сервер, добавьте его!

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

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

Если у вас возникли проблемы с синхронизацией сервера, возможно, у вас установлен пакетный брандмауэр, который отбрасывает исходящие пакеты на порт 123. Взгляните на Как настроить брандмауэр с помощью UFW в Ubuntu, чтобы узнать, как проверить состояние брандмауэра.

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

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

Заключение

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