Как принудительно установить локально изолированное время обновления ntpd

Как принудительно установить локально изолированное время обновления ntpd

Цель

У меня были локально изолированные хосты. Я хотел бы, чтобы у них всех было одинаковое время. Один берет на себя роль сервера времени, другие синхронизируются с ним как клиенты.

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

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

ntpd - случай ntpd

Я пробовал использоватьнтпдкак для клиентов, так и для сервера.нтпдОчень долго переводятся часы. Более того, они отказываются перематывать время на пару часов.

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

Но если нет возможности использоватьнтпд,ntpdateАльтернатива все еще приемлема.

ntpd - ntpdate случай

ntpdateотлично обновляет часы без колебаний. Я поместил это в задачу cron и получил грубое, но рабочее решение. К сожалению, первое впечатление было ошибочным. После нескольких тестов я заметил, чтоntpdateклиент начал отказываться от сервера. По каким-то причинам сервер решил вернуть страту 16. Я явно ввел fudge 127.127.1.0 stratum 8вntp.confна стороне сервера, чтобы избежать именно этого поведения. Ноntpdate -v -dвывод показывает «stratum 16», переданный с сервера.

Поэтому я вижу два пути. Либо заставитьнтпдсервер возвращает стратум 9 независимо от локального времени прыжка или принудительногоntpdateклиент принимает любой сервер, даже если у него уровень 16.

Я пытался гуглить в любом случае, но ничего не нашел. Может кто-нибудь предложить подходящие варианты конфигурации?

решение1

Используйте один ntpdсервер времени для всех. Все ежедневно перезагружаемые ПК могут синхронизировать свои часы при запуске по ntpdateкоманде. Часы на других серверах могут быть синхронизированы ntpdслужбой, поскольку она мягко корректирует время.

Для основного ntpdсервера времени используйте:

server 127.127.1.0 prefer
fudge 127.127.1.0 stratum 2
driftfile /var/lib/ntp/ntp.drift
restrict default nomodify notrust
restrict 127.0.0.0/8
disable auth
logfile /var/log/ntp.log

решение2

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

В настоящее время можно довольно дёшево приобрести маломощные NTP-серверы с GPS-приёмниками. Если вам нравится делать всё своими руками, BeagleBones и Raspberry Pis можно превратить в NTP-серверы менее чем за 100 долларов США, или если вам нужно что-то готовое, попробуйтеLeoNTP.

Следующий совет: если ntpdобновление часов занимает много времени, вам, вероятно, нужно проверить конфигурацию:

  1. Убедитесь, что вы используете -Gфлаг командной строки; -gон используется по умолчанию в некоторых дистрибутивах Linux, но он не даст больших результатов.
  2. Убедитесь, что все ваши серверы/пулы настроены с использованием iburst.
  3. Используйте tinker step 0.5и , tinker panic 0чтобы максимально использовать ntpdвозможности исправления больших смещений.
  4. Убедитесь, что ваш файл дрифта доступен для записи ntpdи корректно сохраняется при выключении.

Третье предложение (которое я бы предпочел ntpdate): попробуйте chrony- у него есть явная поддержка для клиентов, подключаемых время от времени (например, ноутбуков, которые регулярно приостанавливаются). chrony.conf(5)На странице руководства есть все подробности об этом. Если вы используете дистрибутив, где chronyявляется значением по умолчанию (CentOS/Red Hat и Ubuntu после выпуска 18.04), это, вероятно, будет моим вторым предложением.

Последнее предложение: если ntpdateсообщает о сервере как о stratum 16, это означает, что с этим сервером что-то не так. Попробуйте опубликовать конфигурацию сервера и вывод ntpq -npи ntpq -nc rv, чтобы мы могли помочь диагностировать это.

Связанный контент