Синхронизация системного времени не работает
Я использую Ubuntu 20.04 и использую timedatectl с timesyncd. Если я включу синхронизацию NTP, мои локальные и универсальные даты будут установлены на 2058 год.
Если я выполняю ручную проверку (используя python), используемые мной NTP-серверы работают правильно. Это случалось раньше и как-то исправлялось, но сейчас происходит снова.
Любая идея, что происходит не так?
Local time: mié 2058-05-22 01:16:55 CEST
Universal time: mar 2058-05-21 23:16:55 UTC
RTC time: sáb 2022-05-21 22:21:03
Time zone: Europe/Madrid (CEST, +0200)
System clock synchronized: no
NTP service: active
RTC in local TZ: no
/etc/systemd/timesyncd.conf
[Time]
NTP=pool.ntp.org ntp.ubuntu.com
#FallbackNTP=ntp.ubuntu.com
#RootDistanceMaxSec=5
#PollIntervalMinSec=32
#PollIntervalMaxSec=2048
1 ответ
Мне удалось найти проблему и решить ее. Разместите это здесь для тех, у кого есть такая же проблема.
Сначала я проверил журналы для systemd-timesyncd и обнаружил, что время подключения к серверу ntp истекло, а дата/время были установлены на последнюю записанную отметку времени.
> systemctl status systemd-timesyncd
may 22 00:31:38 falcon systemd[1]: Starting Network Time Synchronization...
may 22 00:31:38 falcon systemd-timesyncd[73828]: System clock time unset or jumped backwards, restoring from recorded timestamp: Wed 2058-05-22 01:16:53 CEST
may 22 01:16:53 falcon systemd[1]: Started Network Time Synchronization.
may 22 01:17:04 falcon systemd-timesyncd[73828]: Timed out waiting for reply from 91.189.91.157:123 (ntp.ubuntu.com).
Я попытался получить время с ntp-сервера с помощью python и увидел, что он терпит неудачу со временем, установленным так далеко вперед. Ручная фиксация времени позволяла получить текущее время. Это означало, что я не мог подключиться к серверу ntp, потому что моя дата/время устанавливались на записанные временные метки 2058 года, что затем препятствовало дальнейшей синхронизации.
import ntplib
from time import ctime
c = ntplib.NTPClient()
response = c.request('ntp.ubuntu.com')
print(ctime(response.tx_time))
Затем я проверил документы на timesyncd и обнаружил, что записанное время сохраняется в
/var/lib/systemd/timesync/clock
как время последнего изменения.
Поэтому я сбрасываю эти измененные файлы и даты последнего доступа.
touch -a -m -t 202205212221 /var/lib/systemd/timesync/clock
Затем я отключил ntp и вручную установил время, а затем перезапустил timesyncd, и теперь все работает.