Synchronisieren der Uhrzeit mit NTP
- WAS?
In diesem Artikel wird beschrieben, was die Zeitsynchronisierung ist und wie Sie sie konfigurieren.
- WARUM?
Die Synchronisierung der Systemzeit ist entscheidend, wenn Sie Aufgaben und Ressourcen mit anderen Teammitgliedern über das Netzwerk freigeben.
- AUFWAND
Bis zu 60 Minuten, um diesen Artikel zu lesen und eine Grundkonfiguration der Zeitsynchronisation auf Ihrem Computer vorzunehmen.
- ANFORDERUNGEN
Grundlegende Kenntnisse der Linux-Systemverwaltung sind unabdingbar. Für bestimmte Aufgaben sind
root
-Rechte erforderlich.Funktionierende Verbindung zum internen Netzwerk oder zum Internet für den Zugriff auf den Quellzeitserver.
1 Einführung #
Die Beibehaltung einer genauen und synchronisierten Systemzeit auf dem Computer ist für die Teamarbeit unerlässlich. Planungs- und Kalenderanwendungen verlassen sich darauf, um die Zeit korrekt zu erfassen und die Benutzer rechtzeitig über Termine zu informieren. Bei Cluster-Anwendungen benötigen die einzelnen Hostcomputer oft die synchrone Systemzeit für die wechselseitige Kommunikation.
Die eingebaute Hardware-Uhr ist keine zulässige Zeitquelle. Eine manuelle Korrektur der Systemzeit kann aufgrund des plötzlichen Zeitsprungs zu Fehlfunktionen wichtiger Anwendungen führen. Die Systemzeit muss daher mit einer externen zuverlässigen Zeitquelle über das Netzwerk synchronisiert werden.
1.1 Was ist NTP? #
Das NTP (Network Time Protocol) synchronisiert die Systemzeit über das Netzwerk. Ziel ist es, die absolute Zeit zu erhalten und sie zur Synchronisierung der Systemzeit aller Rechner innerhalb eines Netzwerks heranzuziehen.
1.2 Wie funktioniert NTP? #
Wenn der NTP-Dienst richtig konfiguriert ist, fragt er die Systemzeit kontinuierlich bei zuverlässigen Zeitservern ab und passt sie an. Normalerweise sind Heimcomputer und andere Geräte, die mit dem Internet verbunden sind, so konfiguriert, dass sie einen öffentlichen Zeitserver im Internet abfragen.
Umgekehrt sind Desktop-Computer und Server, die sich innerhalb eines Firmen-Teilnetzes befinden, so konfiguriert, dass sie einen speziellen Zeitserver innerhalb des lokalen Netzwerks abfragen. Der Zeitserver selbst synchronisiert die Zeit mit einem öffentlichen Zeitserver.
1.2.1 Implementierung #
chrony
ist die NTP-Standardimplementierung in SLE Micro. chrony
besteht aus zwei Teilen:
chronyd
ist einsystemd
-Dienst, der beim Booten gestartet werden kann.chronyc
ist ein Kommandozeilenprogramm, mit dem Sie die Leistung vonchronyd
überwachen und bestimmte Betriebsparameter zur Laufzeit ändern können.
1.3 Vorteile #
Die Aufrechterhaltung der richtigen Zeit mit NTP bietet folgende Vorteile:
Die Benutzer können sich auf ihre Uhr verlassen, wenn sie einem Zeitplan folgen.
Anwendungen können geplante Desktop- oder Systemaktionen zum richtigen Zeitpunkt auslösen.
Cluster-Knoten können ihre Daten synchronisieren und auf dem neuesten Stand halten.
Mithilfe eines internen Zeitservers lässt sich die Systemzeit auch in Netzwerken mit eingeschränktem Internetzugang synchron halten.
2 Konfigurieren von NTP durch Anpassung von /etc/chrony.conf
#
chronyd
liest beim Starten die Konfiguration aus der Datei /etc/chrony.conf
aus. In den folgenden Abschnitten werden wichtige Parameter vorgestellt, die das Verhalten von chronyd
beeinflussen können.
2.1 Festlegen von Zeitquellen #
Damit die Computeruhr synchronisiert bleibt, müssen Sie die zu verwendenden Zeitquellen in chronyd
festlegen. Verwenden Sie zu diesem Zweck die Direktiven server
, pool
und peer
. Sie können sie jeweils mehrfach verwenden.
Die Direktive server
weist chronyd
an, einen bestimmten Host als Zeitserver zu nutzen, der mit seinem Namen oder seiner IP-Adresse angegeben ist.
server 0.europe.pool.ntp.org offline1 server 1.europe.pool.ntp.org offline prefer2 server 192.168.2.254
Die Option | |
Die Option |
Mit der Direktive pool
können Sie einen Netzwerknamen angeben, der in mehrere IP-Adressen aufgelöst wird, die sich im Laufe der Zeit ändern können.
pool pool.ntp.org iburst1 maxsources 32
Die Option | |
Die Option |
Mit der Direktive peer
wird ein NTP-Peer-Host anstelle eines Zeitservers angegeben. Die Systemzeitsynchronisierung zwischen Peers verwendet eine symmetrische Architektur anstelle des Client/Server-Modus, der durch die Optionen server
und pool
aufgerufen wird. Sie können peer
mehrfach verwenden und damit mehrere Peers angeben.
peer 192.168.1.116 peer ntp.example.com
2.2 Ausführen von chronyd
als NTP-Server #
Standardmäßig fungiert chronyd
als Client für bestimmte NTP-Server. Soll auch die Funktion als NTP-Server übernommen werden, fügen Sie die Direktive allow
in die Datei /etc/chrony.conf
ein. Sie öffnet den NTP-Server-Port (standardmäßig 123) und antwortet auf Client-Anforderungen.
Sie können entweder eine einzelne IP-Adresse für einen NTP-Client nennen oder ein Subnetz angeben und damit mehrere Clients berücksichtigen. Sie können die Direktive allow
mehrfach verwenden:
allow 1.2.3.4 allow 3.4.5.0/24
Wenn Sie keine IP-Adresse oder ein Teilnetz angeben, erlaubt die eigenständige Direktive allow
den Zugriff von allen IPv4- und IPv6-Adressen.
Soll der Zugriff der vorherigen Direktive allow
eingeschränkt werden, verwenden Sie die Direktive deny
:
allow 1.2.3.4 deny 1.2.3.0/24 allow 1.2.0.0/16
Im obigen Beispiel wird dieselbe Wirkung erzielt, unabhängig von der Reihenfolge der drei Direktiven. Das Subnetz 1.2.0.0/16
erhält Zugriff, das Subnetz 1.2.3.0/24
jedoch nicht. Der Host 1.2.3.4
erhält allerdings Zugriff.
2.3 Konfigurieren einer lokalen Referenzuhr #
chronyd
greift auf andere Programme (z. B. gpsd
) zurück, die die Zeitgebungsdaten über einen bestimmten Treiber abrufen. Geben Sie mit der refclock
-Direktive in /etc/chrony.conf
eine Hardware-Referenzuhr als Zeitquelle an. Hierbei sind zwei Parameter obligatorisch, zum einen der Treibername und zum anderen ein treiberspezifischer Parameter. Nach den beiden Parameter können bei Bedarf noch refclock
-Optionen angegeben werden. chronyd
umfasst folgende Treiber:
- PPS
Treiber für die Kernel-API Impuls pro Sekunde. Beispiel:
refclock PPS /dev/pps0 lock NMEA refid GPS
- SHM
Treiber für den gemeinsam genutzten NTP-Speicher. Beispiel:
refclock SHM 0 poll 3 refid GPS1 refclock SHM 1:perm=0644 refid GPS2
- SOCK
Treiber für den Unix-Domänen-Socket. Beispiel:
refclock SOCK /var/run/chrony.ttyS0.sock
- PHC
Treiber für die PTP-Hardware-Uhr. Beispiel:
refclock PHC /dev/ptp0 poll 0 dpoll -2 offset -37 refclock PHC /dev/ptp1:nocrossts poll 3 pps
Weitere Informationen zu den Optionen der einzelnen Treiber finden Sie auf der man-Seite man 8
chrony.conf
.
2.4 Aktivieren von Offline-Zeitquellen #
chronyd
startet auch auf einem System normal, das ohne Netzwerkverbindung gebootet wird, kann jedoch nicht auf die in /etc/chrony.conf
angegebenen Zeitserver zugreifen. Damit chronyd
nicht versucht, die nicht erreichbaren Zeitserver abzurufen, verwenden Sie die Option offline
neben der Zeitquellendirektive, beispielsweise:
server ntp.example.org offline
Hiermit ruft chronyd
den Server erst nach Aktivierung mit dem folgenden Kommando ab:
#
chronyc online ntp.example.org
Wenn die Option auto_offline
anstelle der Option offline
festgelegt ist, nimmt chronyd
an, dass der Zeitserver offline geschaltet wurde, sobald zwei Anfragen ohne Antwort gesendet wurden. Mit dieser Option müssen Sie nicht mehr das Kommando offline
über chronyc
ausführen, wenn Sie die Netzwerkverbindung trennen.
3 Verwalten von chronyd
zur Laufzeit #
3.1 Was ist chronyc
? #
chronyc
ist der Client-Teil der chrony
NTP-Implementierung. Mit dem Kommando chronyc
können Sie das Verhalten des chronyd
-Dienstes zur Laufzeit verändern. Hiermit werden außerdem Statusberichte zum Betrieb von chronyd
erzeugt.
Die mit chronyc
vorgenommenen Änderungen sind nicht dauerhaft. Nach dem nächsten Neustart von chronyd
gehen sie verloren. Sollen dauerhafte Änderungen erfolgen, bearbeiten Sie /etc/chrony.conf
(siehe Abschnitt 2, „Konfigurieren von NTP durch Anpassung von /etc/chrony.conf
“).
3.2 Wie funktioniert chronyc
? #
Sie können chronyc
wahlweise in einem interaktiven oder einem nicht interaktiven Modus ausführen. Soll chronyc
interaktiv ausgeführt werden, geben Sie chronyc
in die Kommandozeile ein und drücken Sie Eingabetaste. Eine Eingabeaufforderung wird angezeigt und das System wartet auf Ihre Kommandoeingabe. Mit dem Kommando activity
prüfen Sie beispielsweise, wie viele NTP-Quellen online oder offline sind:
#
chronyc
chronyc> activity 200 OK 4 sources online 2 sources offline 1 sources doing burst (return to online) 1 sources doing burst (return to offline) 0 sources with unknown address
Mit quit
oder exit
schließen Sie die chronyc
-Eingabeaufforderung.
Falls Sie keine interaktive Eingabeaufforderung benötigen, geben Sie das Kommando direkt ein, beispielsweise:
#
chronyc
activity
4 Der Dienst chronyd
systemd
#
Der Hauptbestandteil von chrony
ist der Dienst chronyd
systemd
, der im Hintergrund läuft und die Systemzeit mit ausgewählten Zeitservern synchronisiert. Mit den folgenden systemd
-Kommandos können Sie den chronyd
-Dienst bedienen:
-
systemctl status chronyd.service
Gibt erweiterte Informationen zum aktuellen Status des
chronyd
-Dienstes aus.-
systemctl is-enabled chronyd.service
Prüft, ob der automatische Start des
chronyd
-Dienstes beim Booten des Systems aktiviert ist.-
systemctl enabled chronyd.service
Aktiviert den automatischen Start des
chronyd
-Dienstes beim Booten des Systems.-
systemctl disable chronyd.service
Deaktiviert den automatischen Start des
chronyd
-Dienstes beim Booten des Systems.-
systemctl is-active chronyd.service
Prüft, ob der
chronyd
-Dienst gestartet wurde und läuft.-
systemctl start chronyd.service
Startet den
chronyd
-Dienst.-
systemctl stop chronyd.service
Stoppt den
chronyd
-Dienst.-
systemctl restart chronyd.service
Startet den
chronyd
-Dienst neu und lädt/etc/chronyd.conf
neu.
5 Fehlersuche #
Sollte es zu Fehlern kommen, prüfen Sie die folgenden Punkte.
Vergewissern Sie sich, dass Ihr Computer mit einem Netzwerk verbunden ist und dass das Netzwerk richtig konfiguriert ist:
>
sudo
systemctl status network.service ● NetworkManager.service - Network Manager Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2021-08-07 20:09:44 CEST; 4 days ago [...]Überprüfen Sie, ob die Zeitserver, die Sie als Zeitquelle angegeben haben, existieren und über das Netzwerk erreichbar sind. Beispiel:
>
ping pool.ntp.org PING pool.ntp.org (85.199.214.101) 56(84) bytes of data. 64 bytes from 85.199.214.101 (85.199.214.101): icmp_seq=1 ttl=37 time=29.9 ms [...]Wenn der
firewalld
-Dienst auf dem Computer aktiv ist, prüfen Sie, ob der NTP-Dienst zugelassen ist.Prüfen Sie, ob der
chronyd
-Dienst ausgeführt wird:>
sudo
systemctl status chronyd.service ● chronyd.service - NTP client/server Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2021-08-07 20:09:44 CEST; 4 days ago [...]Wenn die Systemzeit auf einem virtualisierten Gast von der exakten Zeit abweicht, stellen Sie sicher, dass die Systemzeit des VM-Host-Servers mit einem gültigen Zeitserver synchronisiert ist und dass der Gast mit derselben Zeitquelle wie der Host synchronisiert ist.
Wird der NTP-Dienst beim Booten des Systems nicht fehlerfrei gestartet, kann dies darauf zurückzuführen sein, dass die Netzwerk-Switches für
Spanning Tree Protocol
konfiguriert sind, während die Ports nicht alsEdge Ports
, sondern alsPortfast
konfiguriert wurden. In diesem Fall kann es bis zu einer Minute dauern, bis die Netzwerkverbindung hergestellt ist.Wenn der NTP-Dienst beim Systemstart nicht startet, wenn der NetworkManager verwendet wird, bearbeiten Sie die Datei
/etc/sysconfig/network/config
und ändern Sie den Wert vonNM_ONLINE_TIMEOUT
auf 30. Wenn das Problem weiterhin besteht, erhöhen Sie den Timeout-Wert um 15 und versuchen Sie es erneut.Sind die NTP-Quellen nicht erreichbar, identifizieren Sie sie mit dem folgenden Kommando:
>
chronyc sources -v [...] MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* time.mydomain.com 3 10 377 81 -5354us[-8257us] +/- 191ms ^? ntp1.example.com 0 10 0 - +0ns[ +0ns] +/- 0ns ^? 77.177.77.177 0 10 0 - +0ns[ +0ns] +/- 0ns ^? ntp3.example.com 0 10 0 - +0ns[ +0ns] +/- 0ns ^? ntp4.example.net 0 10 0 - +0ns[ +0ns] +/- 0ns ^? 2a02:3d8:1::1:1 0 6 0 - +0ns[ +0ns] +/- 0ns ^? ntp2.example.org 0 10 0 - +0ns[ +0ns] +/- 0nsIn diesem Fall gibt nur der Server
time.mydomain.com
eine Zeit zurück. Für die Netzwerkverbindung zu den fehlerhaften entfernten NTP-Zeitquellen muss eine allgemeine Fehlerbehebung durchgeführt werden.
6 Weitere Informationen #
Der Schutz des Computers mit
firewalld
wird in https://documentation.suse.com/sles/html/SLES-all/cha-security-firewall.html#sec-security-firewall-firewalld beschrieben.Eine Liste der Kommandos für den Betrieb der
systemd
-Dienste finden Sie in https://susedoc.github.io/doc-modular/main/html/reference-systemctl-enable-disable-services/.Eine ausführliche Referenz finden Sie auf den zugehörigen Handbuchseiten:
Mit
man 1 chrony.conf
erhalten Sie eine vollständige Liste der Konfigurationsdirektiven.Mit
man 1 chronyc
erhalten Sie eine vollständige Liste derchronyc
-Kommandos.Mit
man 8 chronyd
erhalten Sie eine vollständige Liste der Kommadozeilenoptionen fürchronyd
.
7 Rechtliche Hinweise #
Copyright © 2006–2024 SUSE LLC und Mitwirkende. Alle Rechte vorbehalten.
Es wird die Genehmigung erteilt, dieses Dokument unter den Bedingungen der GNU Free Documentation License, Version 1.2 oder (optional) Version 1.3 zu vervielfältigen, zu verbreiten und/oder zu verändern; die unveränderlichen Abschnitte hierbei sind der Urheberrechtshinweis und die Lizenzbedingungen. Eine Kopie dieser Lizenz (Version 1.2) finden Sie im Abschnitt „GNU Free Documentation License“.
Die SUSE Marken finden Sie im https://www.suse.com/company/legal/. Alle anderen Marken von Drittanbietern sind Besitz ihrer jeweiligen Eigentümer. Markensymbole (®, ™ usw.) kennzeichnen Marken von SUSE und ihren Tochtergesellschaften. Sternchen (*) kennzeichnen Marken von Drittanbietern.
Alle Informationen in diesem Buch wurden mit größter Sorgfalt zusammengestellt. Auch hierdurch kann jedoch keine hundertprozentige Richtigkeit gewährleistet werden. Weder SUSE LLC noch ihre Tochtergesellschaften noch die Autoren noch die Übersetzer können für mögliche Fehler und deren Folgen haftbar gemacht werden.