Синхронизация времени по огромному времени

Привет , в настоящее время у меня есть локальный ntp-сервер (chrony) и ntp-клиент (chrony), все работают, но когда я пытаюсь изменить время ntp-сервера, скажем, минус 6 лет от текущего времени. NTP-клиент не может синхронизироваться с ним, он просто скажет в системном журнале:

9 января 17:29:11 localhost chronyd[9192]: Системные часы неверны на 6780812.328260 секунд, настройка началась

ntp client (chrony) /etc/chrony.conf находится в конфигурации по умолчанию, за исключением того, что сервер указывает на мой локальный NTP-сервер (chrony). Вот мой конфиг

# 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
server local.ntp.server iburst

# Ignore stratum in source selection.
stratumweight 0

# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift

# Enable kernel RTC synchronization.
rtcsync

# In first three updates step the system clock instead of slew
# if the adjustment is larger than 10 seconds.
makestep 10 3

# Allow NTP client access from local network.
#allow 192.168/16

# Listen for commands only on localhost.
bindcmdaddress 127.0.0.1
bindcmdaddress ::1

# Serve time even if not synchronized to any NTP server.
#local stratum 10

keyfile /etc/chrony.keys

# Specify the key used as password for chronyc.
commandkey 1

# Generate command key if missing.
generatecommandkey

# Disable logging of client accesses.
noclientlog

# Send a message to syslog if a clock adjustment is larger than 0.5 seconds.
logchange 0.5

logdir /var/log/chrony
#log measurements statistics tracking

Я не знаю, это не будет синхронизироваться, я читал, что это займет больше времени, но я оставил свою машину на 1 день, и все же у клиента ntp не было того же времени, что и у сервера ntp (не синхронизировано), Есть идеи? я пытаюсь не перезапустить службу chronyd и просто позволить ей автоматически синхронизировать время

Обратите внимание, что "local.ntp.server" определен в моем /etc/hosts. Кроме того, NTP-сервер и NTP-клиент не используют службу ntpd, а используют chronyd. И этот вид установки является изолированным

3 ответа

Решение

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

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

У меня такое ощущение, что запуск NTP-серверов, которые лгут, - очень плохая идея, но если вы настаиваете на этом и вдруг неожиданно искажаете сервер на какое-то значительное количество, вам нужно будет принудительно изменить тактовые импульсы клиента, прежде чем они смогут синхронизироваться., Это проще всего сделать, убедившись, что клиенты принудительно сбрасывают свои часы с сервера во время загрузки (с ntpdэто сделано с ntpdate во время загрузки; Я не знаю о хронологии) и перезагрузке клиентов.

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

Добавьте эту строку в конфигурацию Chrony (например, /etc/chrony.conf или же /etc/chrony/chrony.conf):

makestep 1 -1

Затем перезапустите Chrony.

# systemctl restart chronyd
# or
# /etc/init.d/chrony restart

Объяснение:

Директива maketep может использоваться, чтобы позволить chronyd активизировать часы. Например, если chrony.conf был

шаг 1 3

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

шаг 1 -1

https://chrony.tuxfamily.org/faq.html#_is_code_chronyd_code_allowed_to_step_the_system_clock

Если разница во времени огромна chrony может не принять ваш источник. Мои часы были несколько лет назад и chronyc tracking сообщал:

> chronyc tracking
Ref time (UTC) : Thu Jan 01 00:00:00 1970

Что сработало для меня, так это добавить maxdiference 1000000000 в /etc/chrony.conf а потом (после chronyd перезагрузить) сделать chrnoyc -a makestep 1000 -1,

Другие вопросы по тегам