Вопрос или проблема
Команда ‘timedatectl’ выводит следующий результат –
Локальное время: Ср 2018-06-13 18:08:51 IST
Всемирное время: Ср 2018-06-13 12:38:51 UTC
Время RTC: Ср 2018-06-13 12:38:51
Часовой пояс: Азия/Колката (IST, +0530)
Системные часы синхронизированы: нет
Служба systemd-timesyncd активна: да
RTC в локальном TZ: нет
Как установить синхронизацию системных часов на “да”?
Это можно сделать без установки NTP следующим образом:
sudo nano /etc/systemd/timesyncd.conf
Отредактируйте детали сервера NTP
[Time]
NTP=ur.ntp.srv
FallbackNTP=ur.fallbackntp.srv
Затем выполните
sudo systemctl daemon-reload
sudo timedatectl set-ntp off
sudo timedatectl set-ntp on
и вы можете проверить это с помощью
timedatectl status
Один из способов сделать это – использовать ntp
, который все еще работает в Ubuntu 18.04. Выполните следующую команду для установки ntp
.
sudo apt install ntp
После установки вы можете выполнить ntpq -p
, чтобы убедиться, что он работает.
~$ ntpq -p
удаленный refid st t когда опрос достиг задержка смещение дребезг
==============================================================================
0.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
1.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
2.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
3.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
ntp.ubuntu.com .POOL. 16 p - 64 0 0.000 0.000 0.000
Затем в файле /etc/crontab
добавьте @reboot root /usr/sbin/ntpd -n
, чтобы ntpd
автоматически запускался при перезагрузке системы. Используйте ваш любимый редактор, например, gedit
или mousepad
или любой другой:
pkexec gedit /etc/crontab
Когда линия будет добавлена, она должна выглядеть примерно так:
# /etc/crontab: системный crontab
# В отличие от любого другого crontab, вам не нужно запускать команду `crontab`
# Чтобы установить новую версию, когда вы редактируете этот файл
# и файлы в /etc/cron.d. Эти файлы также имеют поля с именем пользователя,
# чего нет у других crontab.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# м ч дом мон дн пользователь команда
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
@reboot root /usr/sbin/ntpd -n
#
Затем перезагрузите компьютер, чтобы настройки вступили в силу.
~$ timedatectl status
Локальное время: Ср 2018-06-13 06:55:35 MDT
Всемирное время: Ср 2018-06-13 12:55:35 UTC
Время RTC: Ср 2018-06-13 12:55:36
Часовой пояс: Америка/Денвер (MDT, -0600)
Системные часы синхронизированы: да
Служба systemd-timesyncd активна: да
RTC в локальном TZ: нет
Если вы хотите изменить свои серверы на сервера Asia Pool, добавьте их в раздел # Используйте серверы из NTP Pool Project.
файла /etc/ntp.conf
следующим образом:
# Используйте серверы из NTP Pool Project. Утверждено Техническим советом Ubuntu
# 2011-02-08 (LP: #104525). См. http://www.pool.ntp.org/join.html для
# получения дополнительной информации.
server 0.asia.pool.ntp.org
server 1.asia.pool.ntp.org
server 2.asia.pool.ntp.org
server 3.asia.pool.ntp.org
Надеюсь, это поможет!
Следующее сработало для меня:
timedatectl set-ntp true
и затем…
systemctl restart systemd-timesyncd
Пример:
Для тех, кто использует Ubuntu 18+ на экземплярах AWS EC2, я нашел, что это работает великолепно. Он использует внутреннюю службу синхронизации времени AWS:
sudo apt install chrony
sudo nano /etc/chrony/chrony.conf
Добавьте следующую строку перед любой другой записью сервера:
server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4
и затем
sudo /etc/init.d/chrony restart
Лучшее в этом методе для экземпляров EC2 в том, что вам не нужно изменять правила безопасности вашей группы, даже если ваш экземпляр не подключен к Интернету 🙂
Связанный случай, который не совсем соответствует этому, но я хочу его где-то добавить:
Возможно, как это было у меня, вывод timedatectl
соответствует тому, что порт NTP блокируется вашим брандмауэром.
В Ubuntu вы можете явно разрешить связи на порту NTP 123, выполнив следующую команду:
sudo ufw allow out from any to any port 123
Это позволит исходящему трафику от службы, работающей на вашем ПК, использовать любую комбинацию порта/сетевого протокола к службам, работающим на удаленной машине, используя порт 123 с любым сетевым протоколом. Это включает службы, работающие на удаленных машинах, которые реализуют протокол сетевого времени, который необходим для того, чтобы иметь возможность запрашивать время у удаленной машины.
Графический вариант:
Перейдите в “Настройки” –> “Подробности” –> “Дата и время” –> Включите “Автоматическую дату и время”.
systemctl restart systemd-timesyncd
может помочь
Я где-то читал, что время вашей системы должно отличаться от времени сервера синхронизации не более чем на 1000 секунд, чтобы синхронизация работала. Если текущее время вашей системы отличается более чем на 1000 секунд, это не сработает.
Поэтому сначала попробуйте изменить время вручную:
timedatectl set-ntp false
timedatectl set-timezone 'Europe/Berlin'
timedatectl set-time 2022-01-13
timedatectl set-time 13:16
timedatectl set-ntp true
После выполнения этих действий я получил “да” в timedatectl
Локальное время: Чт 2022-01-13 13:16:16 CET
Всемирное время: Чт 2022-01-13 12:16:16 UTC
Время RTC: н/д
Часовой пояс: Европа/Берлин (CET, +0100)
Системные часы синхронизированы: да # <----------- они синхронизированы
Служба NTP: активна
RTC в локальном TZ: нет
Для получения дополнительной информации смотрите опцию -g
здесь https://linux.die.net/man/8/ntpd
Для тех, кто следовал max‘s ответу, но не добился успеха.
Перейдите на NTP, выберите свою конкретную зону пула и добавьте как минимум две зоны пула в ваш /etc/systemd/timesyncd.conf
. Например, для Азии добавьте:
[Time]
NTP=0.asia.pool.ntp.org 1.asia.pool.ntp.org
FallbackNTP=0.pool.ntp.org 1.pool.ntp.org
Затем выполните остальные команды из рекомендованного ответа.
после завершения всего этого, Системные часы синхронизированы: нет
.
Так что я отредактировал файл sudo nano /etc/systemd/timesyncd.conf
вот так
[Time]
Servers=your_NTP_ip 0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org
сохраните и выполните
sudo systemctl daemon-reload
sudo timedatectl set-ntp off
sudo timedatectl set-ntp on
timedatectl status
Теперь это работает для меня.Системные часы синхронизированы: да
Возможно, вам стоит проверить подключение к сети и работу DNS. У меня изменение файла /etc/resolv.conf могло привести к Системные часы синхронизированы: да
спустя несколько секунд.
Ответ или решение
Чтобы включить синхронизацию системных часов на вашем устройстве, выполните следующие шаги. На основании вывода команды timedatectl
, видно, что ваш системный часы не синхронизированы (System clock synchronized: no). В этой инструкции описаны методы для исправления данной проблемы.
Метод 1: Использование systemd-timesyncd
-
Редактирование конфигурационного файла:
Откройте файл конфигурацииtimesyncd
для редактирования:sudo nano /etc/systemd/timesyncd.conf
В разделе
[Time]
добавьте строки с NTP-серверами. Например:[Time] NTP=0.asia.pool.ntp.org 1.asia.pool.ntp.org FallbackNTP=0.pool.ntp.org 1.pool.ntp.org
-
Перезагрузите демон:
После изменения сохраните файл и выполнив команды:sudo systemctl daemon-reload sudo timedatectl set-ntp off sudo timedatectl set-ntp on
-
Проверьте статус:
С помощью команды ниже, вы можете проверить был ли установлен статус синхронизации:timedatectl status
Метод 2: Использование NTP
Если предшествующий метод не подошел, можно установить NTP-сервер:
-
Установите NTP:
Для начала выполните команду:sudo apt install ntp
-
Проверка работы NTP:
После установки вы можете проверить, работает ли NTP, выполнив:ntpq -p
-
Автоматический запуск при перезагрузке:
Добавьте следующую строку в файл/etc/crontab
, чтобы NTP запускался при каждом запуске системы:@reboot root /usr/sbin/ntpd -n
Дополнительные параметры
Если вы используете EC2 на AWS, лучше подходить следующий вариант:
-
Установите Chrony:
sudo apt install chrony
-
Настройте его:
Добавьте строку в файл/etc/chrony/chrony.conf
:server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4
-
Перезапустите Chrony:
sudo systemctl restart chronyd
Дополнительные проверки
-
Убедитесь, что порты для NTP (порт 123) открыты в вашем фаерволе:
sudo ufw allow out from any to any port 123
-
Проверьте связь сети и работоспособность DNS. Убедитесь, что вы можете обращаться к выбранным NTP-серверам, например, с помощью команды
ping
.
Заключение
Проведя эти шаги, вы должны увидеть, что System clock synchronized
изменилось на yes
при выполнении команды timedatectl status
. Если проблемы сохраняются, проверьте настройки сети и конфигурацию DNS, так как они могут влиять на вашу возможность подключения к NTP-серверам.