Zeitabgleich mit ntp

Auf Desktop-Rechnern und Notebooks ist auf dem Mainboard üblicherweise eine CMOS-Uhr eingebaut. Diese wird von einer eigenen Batterie gespeist und läuft auch weiter, wenn der Rechner ausgeschaltet ist. Wenn man ohne Verbindung zum Internet nach einiger Zeit den Rechner wieder anschaltet, so bekommt man weiterhin eine augenscheinlich korrekte Uhrzeit angezeigt.

Für viele Zwecke ist die CMOS-Uhr ausreichend genau. Es gibt allerdings durchaus auch Anwendungen, bei denen die Systemzeit exakt stimmen sollte – beispielsweise, wenn ein bidirektionales Synchronisierungs-Programm wie bsync auf zwei verschiedenen Rechnern prüfen möchte, auf welchem der beiden eine bestimmte Datei zuletzt geändert wurde.

In einem Netzwerk ist es allgemein sinnvoll, dass alle Rechner-Uhren aufeinander abgestimmt sind. Hierfür bietet sich das „Network Time Protocol“ (NTP) an. Der entsprechende Hintergrund-Dienst ntpd kann unter Debian/Ubuntu/LinuxMint folgendermaßen installiert werden:

sudo aptitude install ntp ntpdate

Mittels ntpdate kann die aktuelle Zeit des Rechners mit einem externen Rechner-Netzwerk synchronisiert werden. Diese Anweisung sollte einmalig ausgeführt werden, bevor der eigentliche Hintergrund-Dienst genutzt wird.

Da der Dienst ntpd bereits oftmals im Rahmen der Installation automatisch gestartet wird, ist es empfehlenswert, diesen zwischenzeitlich zu beenden:

# NTP stoppen:
sudo systemctl stop ntp

# Rechnerzeit aktualisieren:
sudo ntpdate de.pool.ntp.org

# NTP wieder starten:
sudo systemctl start ntp

Der Grund für das zwischenzeitliche Deaktivieren des NTP-Dienstes liegt darin, dass die Systemzeit nicht sprunghaft geändert werden sollte – dies kann beispielsweise bei Mailservern oder Logging-Diensten zu Komplikationen führen. Der Dienst ntpd vergleicht daher kontinuierlich die Systemzeit mit den Zeiten des externen Rechner-Pools, und lässt bei Bedarf die eigene CMOS-Uhr etwas schneller beziehungsweise langsamer laufen, bis die Zeiten wieder möglichst exakt übereinstimmen.

Die Abweichungen der aktuellen Systemzeit von den Zeiten der anderen Rechner im NTP-Pool kann man sich folgendermaßen anzeigen lassen:

sudo ntpq -p

# Mögliches Ergebnis:
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 0.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
+spacys.de       36.224.68.195    2 u   27   64   37   32.067   -1.310   2.473
+alpha.rueckgr.a 130.149.17.8     2 u   32   64   37   33.030   -2.245   1.659
#news01.nierle.c 192.53.103.108   2 u   26   64   37   33.003    2.832   1.444
#re.uni-paderbor 131.234.137.63   2 u   26   64   37   37.210   -8.801   0.833
+muenchen.kumi.s 131.188.3.220    2 u   18   64   37   37.077   -2.460   0.848

Entscheidend ist hierbei vor allem die Spalte offset, welche die Abweichung von der Systemzeit der anderen Rechnern in Millisekunden angibt. Liegt der aktuelle Wert dort über 1000 (was einer Sekunde enstspricht), so sollte die Systemzeit wie oben beschrieben mittels ntpdate manuell synchronisiert werden.