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

Хроническая синхронизация времени при огромной разнице во времени

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

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

Клиент ntp (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. И такая установка - изолированная

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

Добавьте эту строку в конфигурацию 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

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

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

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

Если разница во времени огромна 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.