39 Zeitsynchronisierung mit NTP #
Der NTP-(Network Time Protocol-)Mechanismus ist ein Protokoll für die Synchronisierung der Systemzeit über das Netzwerk. Erstens kann ein Computer die Zeit von einem Server abrufen, der als zuverlässige Zeitquelle gilt. Zweitens kann ein Computer selbst für andere Computer im Netzwerk als Zeitquelle fungieren. Es gibt zwei Ziele – das Aufrechterhalten der absoluten Zeit und das Synchronisieren der Systemzeit aller Computer im Netzwerk.
Das Aufrechterhalten der genauen Systemzeit ist in vielen Situationen wichtig. Die integrierte Hardware-Uhr erfüllt häufig nicht die Anforderungen bestimmter Anwendungen, beispielsweise Datenbanken oder Cluster. Die manuelle Korrektur der Systemzeit würde schwerwiegende Probleme nach sich ziehen; das Zurückstellen kann beispielsweise zu Fehlfunktionen wichtiger Anwendungen führen. Die Systemzeiten der in einem Netzwerk zusammengeschlossenen Computer müssen in der Regel synchronisiert werden. Es empfiehlt sich aber nicht, die Zeiten manuell anzugleichen. Vielmehr sollten Sie dazu NTP verwenden. Der NTP-Dienst passt die Systemzeit ständig anhand zuverlässiger Zeitserver im Netzwerk an. Zudem ermöglicht er die Verwaltung lokaler Referenzuhren, beispielsweise funkgesteuerter Uhren.
Ab SUSE Linux Enterprise Desktop 15 ist chrony
die Standardimplementation von NTP. chrony
besteht aus zwei Teilen: chronyd
ist ein Daemon, der beim Booten gestartet werden kann, und mit dem Befehlszeilenschnittstellenprogramm chronyc
ist es möglich, die Leistung von chronyd
zu überwachen und Betriebsparameter zur Laufzeit zu ändern.
Ab SUSE Linux Enterprise Desktop 15.2 konfiguriert das YaST-Modul für die NTP-Client-Konfiguration den systemd-timer anstelle des Cron-Daemon, um chrony
auszuführen, wenn es nicht zur Ausführung als Daemon konfiguriert ist.
Befolgen Sie die Anweisungen unter Procedure 7.2, “Joining an Active Directory domain using , um die Zeitsynchronisierung über Active Directory zu aktivieren. ”
39.1 Konfigurieren eines NTP-Clients mit YaST #
Der NTP-Daemon (chronyd
) im chrony
-Paket ist so voreingestellt, dass die Hardware-Uhr des lokalen Computers als Zeitreferenz verwendet wird. Die Präzision einer Hardware-Uhr ist stark von der Zeitquelle abhängig. Eine Atomuhr oder ein GPS-Empfänger ist beispielsweise eine genaue Zeitquelle, ein normaler RTC-Chip ist dagegen keine zuverlässige Zeitquelle. YaST erleichtert die Konfiguration von NTP-Clients.
Im Fenster für die YaST-NTP-Client-Konfiguration (
› ) können Sie den Zeitpunkt für den Start des NTP-Daemons sowie den Typ der Konfigurationsquelle angeben und benutzerdefinierte Zeitserver einfügen.39.1.1 Start des NTP-Daemons #
Zum Starten des NTP-Daemons stehen drei Optionen zur Auswahl:
Wählen Sie
, um denchrony
-Daemon manuell zu starten.Wählen Sie
aus, um die Systemzeit regelmäßig festzulegen, ohne dasschrony
ständig ausgeführt wird. Sie können das festlegen.Wählen Sie
aus, umchronyd
automatisch beim Booten des Systems zu starten. Diese Einstellung wird empfohlen.
39.1.2 Typ der Konfigurationsquelle #
Wählen Sie im Dropdown-Feld
entweder die Option oder . Verwenden Sie , wenn Ihr Server nur mit einer bestimmten Gruppe (öffentlicher) NTP-Server arbeitet, und , wenn Ihr internes Netzwerk NTP-Server über DHCP anbietet.39.1.3 Konfigurieren von Zeitservern #
Im unteren Bereich des Fensters
werden die Zeitserver aufgelistet, die der Client abfragen kann. Bearbeiten Sie diese Liste nach Bedarf mithilfe der Optionen , und .Klicken Sie auf
, um einen neuen Zeitserver hinzuzufügen:Geben Sie in das Feld
die URL des Zeitservers oder des Zeitserver-Pools ein, mit dem die Computerzeit synchronisiert werden soll. Prüfen Sie mit , ob die eingegebene URL auf eine gültige Zeitquelle verweist.Mit
wird eine größere Anzahl von Anfragen beim Start deschronyd
-Daemons gesendet, sodass die Zeitsynchronisierung beschleunigt wird.Mit
beschleunigen Sie den Bootvorgang auf Systemen, auf denen derchronyd
-Daemon automatisch gestartet wird und die beim Booten keine Internetverbindung besitzen. Diese Option eignet sich beispielsweise für Laptops, deren Netzwerkverbindungen über NetworkManager verwaltet werden.Bestätigen Sie Ihre Auswahl mit
.
39.2 Manuelle Konfiguration von NTP im Netzwerk #
chrony
liest die Konfiguration aus der Datei /etc/chrony.conf
aus. Damit die Computeruhr synchronisiert bleibt, müssen Sie die zu verwendenden Zeitserver in chrony
festlegen. Hierbei können Sie spezielle Servernamen oder IP-Adressen angeben, beispielsweise:
0.suse.pool.ntp.org 1.suse.pool.ntp.org 2.suse.pool.ntp.org 3.suse.pool.ntp.org
Sie können auch den Namen für einen Pool angeben. Der Poolname wird in mehrere IP-Adressen aufgelöst:
pool pool.ntp.org
Soll die Zeit auf mehreren Computern in demselben Netzwerk synchronisiert werden, sollten Sie nicht alle Computer mit einem externen Server synchronisieren. Ein bewährtes Verfahren besteht darin, einen Computer als Zeitserver, der mit einem externen Zeitserver synchronisiert wird, und die anderen Computer als die Clients dieses Computers festzulegen. Fügen Sie eine local
-Direktive zur Datei /etc/chrony.conf
des Servers hinzu, sodass dieser Server von einem autoritativen Zeitserver unterschieden wird:
local stratum 10
Starten Sie chrony
mit dem folgenden Befehl:
systemctl start chronyd.service
Nach der Initialisierung von chronyd
dauert es eine gewisse Zeit, bis die Zeit sich stabilisiert und die Drift-Datei zum Korrigieren der lokalen Computeruhr erstellt wird. Mithilfe der Drift-Datei kann der systematische Fehler der Hardware-Uhr berechnet werden, wenn der Computer eingeschaltet wird. Die Korrektur kommt umgehend zum Einsatz und führt zu einer größeren Stabilität der Systemzeit.
Aktivieren Sie den Dienst, sodass chrony
automatisch beim Booten gestartet wird, mit dem folgenden Befehl:
systemctl enable chronyd.service
yast-timesync.service
Neben dem Dienst chronyd.service
umfasst SUSE Linux Enterprise Desktop auch yast-timesync.service
. yast-timesync.service
wird alle 5 Minuten durch einen Zeitgeber ausgelöst. Der Dienst führt chronyd
mit der Option -q
aus, um die Systemzeit festzulegen, und wird anschließend beendet. Da immer nur eine Instanz von chronyd
ausgeführt werden kann, sollten Sie nicht beide chronyd
-bezogenen Dienste gleichzeitig aktivieren oder starten.
39.3 Konfigurieren von NTS #
Das Network Time Protocol (NTP) ist ein Protokoll, das zum Synchronisieren und Aufrechterhalten der genauen Systemzeit eines oder mehrerer Hosts im Netzwerk verwendet wird. In diesem Artikel wird beschrieben, wie Sie Sicherheit von NTP mittels Network Time Security (NTS) sicherstellen können.
Das NTP-Protokoll bietet keinen Sicherheitsmechanismus, der die Kommunikation zwischen dem Zeitserver und dem Client authentifiziert und verschlüsselt. Network Time Security (NTS) ist eine Erweiterung, die die Sicherheit von NTP verbessert. chrony
unterstützt NTS und kann Zeitquellen authentifizieren und vor bestimmten Netzwerkangriffen schützen.
Im Folgenden wird beschrieben, wie Sie den Zeitserver und den Client-Rechner für eine sichere Zeitsynchronisation konfigurieren.
(Optional) Es ist ratsam, den Zeitserver so zu konfigurieren, dass er seine Uhrzeit über NTS aktualisiert. Dies gewährleistet eine sichere Zeitsynchronisierung ab dem Beginn der Synchronisierungskette. Kommentieren Sie alle in
/etc/chrony.conf
vorhandenen Zeitquellen aus, die NTS nicht unterstützen, und fügen Sie mindestens eine Zeitquelle hinzu, die NTS unterstützt. Beispiel:server time.cloudflare.com iburst nts
TippDie Option
nts
fordert eine NTS-Verbindung an, wenn diese verfügbar ist. Wenn NTS nicht verfügbar ist, findet ein Fallback auf NTP statt.Starten Sie den
chronyd
-Dienst neu.>
sudo
systemctl restart chronyd.srvice
Überprüfen Sie die konfigurierten Zeitquellen.
>
chronyc sources -v
MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^? time.cloudflare.com 3 6 1 2 -947ms[ -947ms] +/- 12ms ^? pyrrha.fi.muni.cz 2 6 1 1 -948ms[ -948ms] +/- 39ms ^* whitesoft-intex16.c.cbsn> 1 6 1 2 -948ms[ -948ms] +/- 5444us ^? mail.combatostrich.dev 2 6 1 1 -948ms[ -948ms] +/- 28msAnmerkungIn der mit
^*
beginnenden Zeile steht die Zeitquelle, die als beste Quelle ausgewählt wurde.Überprüfen Sie, ob die konfigurierte Zeitquelle den NTS-Modus verwendet.
>
chronyc -N authdata
Name/IP address Mode KeyID Type KLen Last Atmp NAK Cook CLen ========================================================================= [...] time.cloudflare.com NTS 1 15 256 3 0 0 8 96Vergewissern Sie sich, dass die Serverkonfiguration die Option
allow
enthält, mit der festgelegt wird, welche Clients die Zeit mit dem Zeitserver synchronisieren können. Beispiel:allow 192.168.1.0/24
(Optional) Wenn der Zeitserver hinter einer Firewall ausgeführt wird, erlauben Sie die Kommunikation über die Ports für NTP und NTS. Standardmäßig sind dies die Ports 123 und 4460.
Besorgen Sie sich ein TLS-Zertifikat und einen entsprechenden privaten Schlüssel und kopieren Sie diese in
/var/lib/chrony/
. Stellen Sie sicher, dass sie vonchrony
gelesen werden können, z. B.:>
sudo
install -m 0440 -o chrony -g chrony nts.key /var/lib/chrony/>
sudo
install -m 0440 -o chrony -g chrony nts.crt /var/lib/chrony/Bearbeiten Sie
/etc/chrony.conf
und stellen Sie sicher, dass die Optionntsdumpdir /var/lib/chrony
aktiviert ist. Hängen Sie dann die Pfade an den TLS-Schlüssel und das Zertifikat an.ntsdumpdir /var/lib/chrony ntsserverkey /var/lib/chrony/nts.key ntsservercert /var/lib/chrony/nts.crt
Starten Sie den
chronyd
-Dienst neu.>
sudo
systemctl restart chronyd.service
Deaktivieren Sie vorhandene NTP-Quellen. Beispiel:
#server 192.168.1.1 iburst
Die Konfigurationen der Quellen befinden sich in
/etc/chrony.conf
oder in Dateien unter/etc/chrony.d/
.Der Client-Host muss der Root-CA vertrauen, die das TLS-Zertifikat signiert hat. Weitere Informationen zur Verwaltung des CA-Zertifikatspeichers finden Sie in einem Artikel zum Thema.
Fügen Sie die Quelle des NTS-Zeitservers, die Sie in Prozedur 39.1, „Konfigurieren des NTS-Zeitservers“ konfiguriert haben, zur Konfiguration des Clients
chrony
in/etc/chrony.conf
hinzu. Beispiel:server nts1.example.com iburst nts
Starten Sie den
chronyd
-Dienst neu.>
sudo
systemctl restart chronyd.serviceÜberprüfen Sie die konfigurierten Zeitquellen auf dem Client und stellen Sie sicher, dass die Verbindung authentifiziert ist.
>
sudo
chronyc sources -v>
sudo
chronyc -N authdataÜberprüfen Sie auf dem NTS-Zeitserver die Client-Statistiken im Hinblick auf NTS-Verbindungen.
>
sudo
chronyc -N clients -k
39.4 Konfigurieren von chronyd
zur Laufzeit mit chronyc
#
Mit chronyc
können Sie das Verhalten von chronyd
zur Laufzeit verändern. Hiermit werden außerdem Statusberichte zum Betrieb von chronyd
erzeugt.
Sie können chronyc
wahlweise im interaktiven oder im nicht interaktiven Modus ausführen. Soll chronyc
interaktiv ausgeführt werden, geben Sie chronyc
in die Befehlszeile ein. Eine Eingabeaufforderung wird angezeigt und das System wartet auf Ihre Kommandoeingabe. Mit dem folgenden Befehl 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 den Befehl direkt ein:
#
chronyc
activity
Die mit chronyc
vorgenommenen Änderungen sind nicht dauerhaft. Sie gehen nach dem nächsten Neustart von chronyd
verloren. Sollen dauerhafte Änderungen erfolgen, bearbeiten Sie /etc/chrony.conf
.
Eine vollständige Liste der chronyc
-Befehle finden Sie auf der Man-Seite (man
1 chronyc
).
39.5 Dynamische Zeitsynchronisierung während der Laufzeit #
chronyd
wird zwar auf einem System, das ohne Netzwerkverbindung bootet, normal ausgeführt, kann jedoch nicht die DNS-Namen der in der Konfigurationsdatei angegebenen Zeitserver auflösen.
chronyd
versucht in immer größeren Zeitabständen, die in den server
-, pool
- und peer
-Direktiven angegebenen Zeitservernamen aufzulösen, bis die Auflösung erfolgreich ist.
Falls der Zeitserver beim Starten von chronyd
nicht erreichbar sein wird, können Sie die Option offline
angeben:
server server_address offline
Hiermit ruft chronyd
den Server erst nach Aktivierung mit dem folgenden Kommando ab:
#
chronyc online server_address
Wenn die Option auto_offline
eingestellt 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 den Befehl offline
über chronyc
ausführen, wenn Sie die Netzwerkverbindung trennen.
39.6 Einrichten einer lokalen Referenzuhr #
Das Software-Paket chrony
greift auf andere Programme (z. B. gpsd
) zurück, die die Zeitgebungsdaten über den SHM- oder SOCK-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 Parametern können bei Bedarf noch refclock
-Optionen angegeben werden. chronyd
umfasst folgende Treiber:
PPS – Treiber für die Kernel-API
pulse per second
. 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
.
39.7 Uhrensynchronisierung mit einer externen Zeitreferenz (ETR) #
Unterstützung für Uhrensynchronisierung mit einer externen Zeitreferenz (ETR) ist verfügbar. Die externe Zeitreferenz sendet alle 2**20 (2 hoch 20) Millisekunden ein Oszillatorsignal und ein Synchronisierungssignal, um die Tageszeit-Uhren aller angeschlossenen Server synchron zu halten.
Zur Verfügbarkeit können zwei ETR-Einheiten an einen Computer angeschlossen werden. Wenn die Uhr um mehr als die Toleranz zum Prüfen der Synchronisierung abweicht, erhalten alle CPUs eine Rechnerprüfung, die darauf hinweist, dass die Uhr nicht synchronisiert ist. In diesem Fall werden sämtliche DASD-E/A an XRC-fähige Geräte gestoppt, bis die Uhr wieder synchron ist.
Die ETR-Unterstützung wird mithilfe von zwei sysfs
-Attributen aktiviert; führen Sie die folgenden Befehle als root
aus:
echo 1 > /sys/devices/system/etr/etr0/online echo 1 > /sys/devices/system/etr/etr1/online