systemd/timesyncd

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. ⚓︎ Ein Terminal öffnen

  2. ⚓︎ Root-Rechte

Inhaltsverzeichnis
  1. Installation
  2. Benutzung
    1. Konfiguration
    2. timedatectl
  3. Links

timesyncd ist der Client vom systemd, der über das Network Time Protocol Zeitserver im Internet abfragt und die Systemzeit des eigenen Rechners mit diesen synchron hält. Normalerweise wird timesyncd beim Systemstart automatisch mit gestartet und läuft dann im Hintergrund. Besitzt der Rechner eine eingebaute Real Time Clock - was bei den meisten Laptops und Desktop-Rechner normalerweise der Fall ist - dann korrigiert timesyncd diese auch, falls die Abweichung zum Zeitserver zu groß ist.

Ist auf dem System ntpd oder chrony 🇬🇧 installiert, dann ist timesyncd nicht aktiv, sondern überlässt NTP die Aufgabe der Zeitsynchronisation.

Die Verwendung von externen Zeitquellen wie lokalen DCF-Empfängern usw. oder die Nutzung als Zeit-Server ist mit timesyncd nicht möglich.

Installation

timesyncd ist im Paket systemd enthalten, welches Grundbestandteil der Ubuntu-Installation ist.

Benutzung

timesyncd läuft als Dienst im Hintergrund und kann bzw. braucht nicht direkt genutzt wurde. Die wenigen mögliche Interaktionen laufen über das Kommandozeileprogramm timedatectl. Weitere Informationen findet man den den Man-Pages zu timesyncd und timedatectl.

Konfiguration

Die Zeitsynchronisation mit timesyncd wird über die Konfigurationsdatei /etc/systemd/timesyncd.conf gesteuert, in die die Zeitserver eingetragen werden können.

Die Datei enthält nur die Sektion [Time]. Dort können in die Zeile NTP= ein oder mehrere Zeitserver (mit Leerzeichen getrennt) eingetragen werden. In der Zeile FallbackNTP= können die Server eingetragen werden, die kontaktiert werden sollen, wenn die primären Zeitserver nicht erreichbar sind. Der Vorgabewert bei Ubuntu ist hier ntp.ubuntu.com. Damit die Zeitserver tatsächlich abgefragt werden, dürfen die beiden Zeilen nicht auskommentiert sein, das heißt, das Rautezeichen # am Zeilenanfang muss entfernt werden.

Trägt man selber keinen Zeitserver ein, hat timesyncd in früheren Ubuntu Versionen mal automatisch den Google Zeitserver time.google.com. Dieser kann aber eine Abweichung von bis zu 0,5 Sekunden haben und ist deshalb für Produktivsysteme, wo eine exakte Zeit benötigt wird, nicht zu empfehlen. Zumindest in der Version 22.04 verwendet timesyncd jedoch, ntp.ubuntu.com als NTP Server, wenn in der timesyncd.conf keine Angaben durch den Nutzer gemacht wurden oder die angegebenen NTP Server nicht erreichbar sind.

Sinnvoll ist die Verwendung eines länderspezifischen NTP-Pools wie de.pool.ntp.org und/oder eines lokalen Zeitservers, der zum Beispiel von einem Internetrouter mit entsprechender Funktionalität gestellt werden kann. Eine fertige Konfiguration über die Datei /etc/systemd/timesyncd.conf könnte dann folgendermaßen aussehen:

[Time]
NTP=fritz.box 0.de.pool.ntp.org 1.de.pool.ntp.org 2.de.pool.ntp.org
FallbackNTP=ntp.ubuntu.com

timesyncd versucht zunächst den Zeitserver der FritzBox im Heimnetz zu erreichen. Sollte fritz.box nicht antworten (z. B. da man sich nicht im heimischen LAN/WLAN befindet), wird versucht einen der deutschen NTP-Pools zu erreichen usw. Als Fallback wird die Standardkonfiguration ntp.ubuntu.com verwendet.

Alternativ kann man die Angaben auch z.B. in folgender Weise durch führen. Dann wird zuerst geguckt ob es auf den angegebenen lokalen IP Adressen einen Router wie z.B. eine Fritzbox im LAN gibt, wobei es hierbei keine Rolle spielt ob es sich um eine Fritzbox oder ein anderes Routermodell handelt. Wenn kein Router im LAN die Anfrage beantworten sollte, erfolgt soweit notwendig nach und nach die nächste Abfrage eines der als FallbackNTP angegebenen NTP Server im Internet.

[Time]
NTP=192.168.178.1 192.168.8.1
FallbackNTP=0.de.pool.ntp.org 1.de.pool.ntp.org 2.de.pool.ntp.org 3.de.pool.ntp.org

timedatectl

Über den Befehl[1]

timedatectl status 

kann der Status von timesyncd abgefragt werden. Mit folgenden Befehlen kann der Dienst gestoppt und wieder gestartet werden:

timedatectl set-ntp 0 #deaktivieren
timedatectl set-ntp 1 #aktivieren 

Den gleichen Effekt erreicht man auch, wenn man über systemctl die Service-Unit systemd-timesyncd.service deaktiviert bzw. aktiviert.