Включить синхронизацию системных часов

Вопрос или проблема

Команда ‘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

  1. Редактирование конфигурационного файла:
    Откройте файл конфигурации 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
  2. Перезагрузите демон:
    После изменения сохраните файл и выполнив команды:

    sudo systemctl daemon-reload
    sudo timedatectl set-ntp off
    sudo timedatectl set-ntp on
  3. Проверьте статус:
    С помощью команды ниже, вы можете проверить был ли установлен статус синхронизации:

    timedatectl status

Метод 2: Использование NTP

Если предшествующий метод не подошел, можно установить NTP-сервер:

  1. Установите NTP:
    Для начала выполните команду:

    sudo apt install ntp
  2. Проверка работы NTP:
    После установки вы можете проверить, работает ли NTP, выполнив:

    ntpq -p
  3. Автоматический запуск при перезагрузке:
    Добавьте следующую строку в файл /etc/crontab, чтобы NTP запускался при каждом запуске системы:

    @reboot root /usr/sbin/ntpd -n

Дополнительные параметры

Если вы используете EC2 на AWS, лучше подходить следующий вариант:

  1. Установите Chrony:

    sudo apt install chrony
  2. Настройте его:
    Добавьте строку в файл /etc/chrony/chrony.conf:

    server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4
  3. Перезапустите 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-серверам.

Оцените материал
Добавить комментарий

Капча загружается...