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

Всем привет. Проблема из-за чего, я написал эту инструкцию, потому что мне надоело, что в интернете по данному запросу только и выдаются статьи 10-летней давности. Но в них нет информации, зачем устанавливать и настраивать старый Chronyd, если новый (относительно) systemd-timesyncd отлично справляется со своей задачей и нет никакого смысла, делать лишних телодвижений. Тем более, что он идёт из коробки во всех современных системах (Ubuntu, Fedora, Arch, Manjaro, Debian) уже лет пять.

Собственно перейдем к его настройки.

Для начала проверим, что сервис включен (enabled) и запущен, для этого вводим команду:

$ systemctl status systemd-timesyncd
● systemd-timesyncd.service - Network Time Synchronization
     Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2024-03-02 10:51:42 UTC; 3min 53s ago
       Docs: man:systemd-timesyncd.service(8)
   Main PID: 580 (systemd-timesyn)
     Status: "Initial synchronization to time server 192.168.71.1:123 (192.168.71.1)."
      Tasks: 2 (limit: 4558)
     Memory: 1.5M
        CPU: 42ms
     CGroup: /system.slice/systemd-timesyncd.service
             └─580 /lib/systemd/systemd-timesyncd

Толстым шрифтом выделены два важных элемента, если вместо enabled, установлено disabled, значит служба не включена на автоматический запуск при старте системы, а если вместо active (running), что-либо другое – то не запущена, либо упала.

Исправить это можно соответствующими командами:

# включение сервиса
systemctl enable systemd-timesyncd
# запуск сервиса 
systemctl start systemd-timesyncd

Далее вводим команду timedatectl и смотрим на состоянии службы:

$ timedatectl
               Local time: Sat 2024-03-02 11:10:56 UTC
           Universal time: Sat 2024-03-02 11:10:56 UTC
                 RTC time: Sat 2024-03-02 11:10:56
                Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

В идеальной картинке ваш вывод должен быть как на примеры выше, нас интересуют строки System clock synchronized и NTP service.

Если NTP service стоит в состоянии inactive, то сервис автоматического синхронизации времени выключен, включаем его командой и проверяем состояние снова:

sudo timedatectl set-ntp true

Если сервис NTP включен, но System clock synchronized стоит в no, то дело скорее всего в том, что сервис не может достучаться до сервера с эталонным временем. Проверить, что идёт не так, можно посмотрев логи сервиса, командой:

journalctl -xeu systemd-timesyncd

В логах может быть указан, например, сервер до которого пытается достучаться timesyncd. Для проверки доступности порта сервера синхронизации используйте команду netcat как в примере ниже, подставив ваш сервер вместо ru.pool.ntp.org (123 – это порт NTP, работает через UDP)

$ nc -uvzw 3 ru.pool.ntp.org 123                                                                                                            
Connection to tr.pool.ntp.org (162.159.200.123) 123 port [udp/ntp] succeeded!

Если сервер не доступен и это ваш промышленный контур, то скорее дело в настройках сетевого экрана, либо фаервола машины, на котором вы проверяете.

Для замены сервера обновления, нужно внести правку в файл /etc/systemd/timesyncd.conf

Выглядит он следующим образом:

$ cat /etc/systemd/timesyncd.conf
[Time]
#NTP=
#FallbackNTP=ntp.ubuntu.com
#RootDistanceMaxSec=5
#PollIntervalMinSec=32
#PollIntervalMaxSec=2048

Строки, начинающиеся с # считаются комментариями, нам в блок [Time] нужно вписать строку (например с помощью vim, либо nano с правами администратора либо sudo)

NTP=ru.pool.ntp.org

Либо любой другой, доступ к которому вы смогли получить, в закрытых контурах администраторы обычно предоставляют свои сервера для синхронизации времени.

Вот мой список серверов, которые чаще всего работают на внешних виртуальных машинах.

  • time.google.com
  • ru.pool.ntp.org
  • ntp0.NL.net
  • clock.isc.org
  • ntps1-1.cs.tu-berlin.de
  • ntp2.vniiftri.ru
  • ntp.ix.ru

После сохранения файла нужно перезапустить службу, например командой

sudo systemctl restart systemd-timesyncd

После этого ещё раз проверяем командой timedatectl, что System clock synchronized: yes.

Если проблема все ещё сохранилась, то снова открываем логи и разбираемся, почему нет доступа до сервера. Чаще всего это именно настройки безопасности сети, что является поводом для какой-то другой статьи или инструкции.

Спасибо за внимание


Posted

in

by

Tags:

Комментарии

Leave a Reply

Your email address will not be published. Required fields are marked *