Zum Inhalt springenZur Seitennavigation springen: vorherige Seite [Zugriffstaste p]/nächste Seite [Zugriffstaste n]
documentation.suse.com / Synchronisieren der Uhrzeit mit NTP

Synchronisieren der Uhrzeit mit NTP

Veröffentlicht: 12.12.2024
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.

Einzelne Geräte fragen einen öffentlichen Zeitserver ab
Abbildung 1: Einzelne Geräte fragen einen öffentlichen Zeitserver ab

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.

Mehrere Hosts fragen einen internen Zeitserver ab
Abbildung 2: Mehrere Hosts fragen einen internen Zeitserver ab

1.2.1 Implementierung

chrony ist die NTP-Standardimplementierung in SLE Micro. chrony besteht aus zwei Teilen:

  • chronyd ist ein systemd-Dienst, der beim Booten gestartet werden kann.

  • chronyc ist ein Kommandozeilenprogramm, mit dem Sie die Leistung von chronyd ü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

1

Die Option offline verhindert, dass chronyd den Zeitserver abfragt. Diese Option ist sinnvoll, wenn der Server beim Starten von chronyd nicht erreichbar ist. Sie müssen den Server mit chronyc online schalten, sobald er erreichbar ist. Weitere Informationen finden Sie in Abschnitt 3, „Verwalten von chronyd zur Laufzeit“.

2

Die Option prefer weist chronyd an, die betreffende Zeitquelle anderen Zeitquellen vorzuziehen, die diese Option nicht umfassen.

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

1

Die Option iburst bedeutet, dass chronyd mit einem Block von 4–8 Anfragen gestartet wird, damit die erste Synchronisierung der Uhr schneller erfolgt.

2

Die Option maxsources weist chronyd an, bis zu drei Quellen aus dem Pool zu verwenden.

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
Tipp
Tipp

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
Tipp
Tipp

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
Tipp
Tipp

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.

Anmerkung
Anmerkung: Temporäre Änderungen

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 als Edge Ports, sondern als Portfast 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 von NM_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] +/-    0ns

    In 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