Назад | Перейти на главную страницу

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

Задача

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

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

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

ntpd - случай ntpd

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

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

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

ntpd - случай ntpdate

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

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

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

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

В настоящее время вы можете получить маломощные NTP-серверы с GPS-приемниками довольно дешево. Если вам нравится делать DIY, 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 сообщает о сервере как о страте 16, это означает, что с этим сервером что-то не так. Попробуйте опубликовать конфигурацию сервера и вывод ntpq -np и ntpq -nc rv так что мы можем помочь диагностировать это.

Используйте один 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