null

Использование systemd-timesyncd для синхронизации времени в Debian/Ubuntu

У одного из наших заказчиков несколько linux серверов работают под управлением Ubuntu, появилась необходимость выполнить настроку синхронизации времени на данных машинах. В системах с systemd по-умолчанию используется systemd-timesyncd - отдельная служба, отвечающая за синхронизацию времени локальной системы по протоколу NTP с внешнеми NTP серверами. Самое приятное, что systemd-timesyncd являеться частью systemd и не требует установки.

Systemd-timesyncd не будет одновременно работать с ntpd или chronyd (не будет выполняться синхронизация времени). Данную проверка выполняется в конфигурационном файле /lib/systemd/system/systemd-timesyncd.service.d/disable-with-time-daemon.conf, где прописан список бинарников, при наличии которых в системе демон systemd-timesyncd не будет работать. Перед началом работ проверьте установлен ли у вас в системе ntpd или chronyd и при наличии удалите их.

В данном случае сервера выступают только в роли клиента, необходимости в ntp сервере  предоставляющего точное время для других серверов нет. С данной задачей прекрасно справляется systemd-timesyncd исходя из этого необходимость в ntpd отсутствует.

Для настройки systemd-timesyncd необходимо изменить файл конфигурации etc/systemd/timesyncd.conf ​​​​​.

 

@nano /etc/systemd/timesyncd.conf
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See timesyncd.conf(5) for details.

[Time]
#NTP=
#FallbackNTP=ntp.ubuntu.com
NTP=

Строка NTP= определяет список основных серверов времени, впишите туда свой сервер времени. Можно раскоментировать настройку FallbackNTP= она определяеи список резервных серверов времени

 

Выполняем перезапуск службу systemd-timesyncd:

#systemctl restart systemd-timesyncd.service

Проверяем статус работы

#systemctl status systemd-timesyncd.service

Результат:

● systemd-timesyncd.service - Network Time Synchronization
   Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendo
  Drop-In: /lib/systemd/system/systemd-timesyncd.service.d
           └─disable-with-time-daemon.conf
   Active: active (running) since Wed 2021-01-13 19:49:41 MSK; 21h ago
     Docs: man:systemd-timesyncd.service(8)
 Main PID: 25757 (systemd-timesyn)
   Status: "Synchronized to time server 91.207.136.50:123 (0.pool.ntp.org
    Tasks: 2
   Memory: 264.0K
      CPU: 81ms
   CGroup: /system.slice/systemd-timesyncd.service
           └─25757 /lib/systemd/systemd-timesyncd

Jan 13 19:49:41 web1 systemd[1]: Stopping Network Time Synchronization
Jan 13 19:49:41 web1 systemd[1]: Stopped Network Time Synchronization.
Jan 13 19:49:41 web1 systemd[1]: Starting Network Time Synchronization
Jan 13 19:49:41 web1 systemd[1]: Started Network Time Synchronization.
Jan 13 19:49:41 web1 systemd-timesyncd[25757]: Synchronized to time se
lines 1-19/19 (END)...skipping...


​​​​​Проверяем  состояние синхронизации:

#timedatectl

Результат:
      Local time: Thu 2021-01-14 17:04:41 MSK
  Universal time: Thu 2021-01-14 14:04:41 UTC
        RTC time: Thu 2021-01-14 14:04:41
       Time zone: Europe/Moscow (MSK, +0300)
 Network time on: yes
NTP synchronized: yes
 RTC in local TZ: no

PS: Если systemd-timesyncd не синхронизирует часы, то прежде всего проверьте настройки межсетевого экрана (iptables) на предмет разрешения исходящих подключений на 123 порт по протоколу UDP

Если же всё таки возникает необходимость использования других пакетов синхронизации времени, исполняемые файлы которых отличны от тех, что перечислены в disable-with-time-daemon.conf, то можно самостоятельно остановить и отключить службу systemd-timesyncd парой простых команд:

# systemctl stop systemd-timesyncd
# systemctl disable systemd-timesyncd