Zeitsynchronisation mit dem NTP Daemon

NTP steht für Network Time Protocol und damit wird im Internet die Synchronisierung der Zeit umgesetzt. Die Einrichtung des dazugehörigen Dienstes ist eigentlich nicht kompliziert, trotzdem möchte ich diese kurz festhalten. In manchen Situationen bzw. Umgebungen ist es wichtig, dass auf allen Systemen die gleiche Uhrzeit verfügbar ist.

Betreibt man verschiedene Systeme in einem Netzwerk sollte im Fall der Fälle der Zeitstempel aller Logeinträge gleich sein. Denn nichts stört die Analyse von verschiedenen Logdateien auf verschiedenen Systemen mehr als wenn man zwischen verschiedenen Zeiten hin-und-her rechnen muss. Das Problem lässt sich einfach lösen, in dem man den NTP-Daemon auf allen System installiert.

Die Installation & Konfiguration

Wenn das Programm „ntpd“ nicht bereits von der Distribution mitgeliefert wird, dann lässt sich das Paket „ntp“ einfach über den Paketmanager installieren:

sudo apt-get install ntp

Ist das getan, sollte eine einfache Konfiguration unter /etc/ntp.conf vorhanden sein.

Die Konfiguration

Ich werde folgend die Standardeinträge der Konfigurationsdatei ein wenig kommentieren.

driftfile /var/lib/ntp/ntp.drift

In der Driftdatei trägt der NTPD die Zeitverschiebung bei einer Aktualisierung ein. Dabei bedeutet ein negativer Wert, dass die Systemzeit vorgegangen war, und ein positiver Wert, dass die Zeit zurücklag.

server 0.ubuntu.pool.ntp.org
server 1.ubuntu.pool.ntp.org
server 2.ubuntu.pool.ntp.org
server 3.ubuntu.pool.ntp.org 

Mit den „server“ Einträgen legt man fest, von welchen Zeitservern sich der Client die aktuelle Zeit holen soll. Es gibt eine Hierarchie unter den Zeitservern. Ein Stratum-0 Server hängt direkt an einer Atomuhr und gibt von dort die Zeit an. Ein Stratum-1 ist ein Server, der sich bereits von einem Stratum-0 Server die Zeit geholt hat. So setzt sich die Kette fort.

Zu dem bietet sich es an, verschiedene Zeitserver auf der ganzen Welt in seine Konfiguration aufzunehmen. Eine Übersicht über alle eingetragenen NTP-Server findet ihr auf http://www.pool.ntp.org/de/ .

restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1

Mit dieser Einstellung erlauben wir das Abrufen der Zeit von unserem NTPD, jedoch nicht andere Aktivitäten, wie z.B. die Administration des Servers von außen. Diese Regeln gelten jeweils für IPv4 bzw. IPv6. Außerdem erlauben wir den vollständigen Zugriff vom localhost aus, damit wir mit dem Server später einfach kommunizieren können.

Damit wären wir mit der einfachen Konfiguration durch.

Der Start des NTPD

Beim Start des NTP-Daemons muss man beachten, dass man es in ein chroot packt. Das Programm verwendet den Port 123, welcher nur durch einen privilegierten Benutzer geöffnet werden kann. Damit der Service nach seinem Start und der Portöffnung seine erhöhten Rechte wieder verliert, sollte man diesen mit folgenden Parametern aufrufen:

ntpd -g -u ntp:ntp

Das in den Paketen mitgelieferte Startscript beachtet diese Kleinigkeit bereits. Ein Blick zur Vergewisserung kann trotzdem nicht schaden.

Fazit

Mit dem NTPD lässt sich sehr einfach die Zeit auf einem System aktualisieren und synchron halten. Das aktuelle Datum kann dann entsprechend in Logfiles verwendet werden.