14.11. Zeitsynchronisation mit xntp

Bei vielen Abläufen in einem Computersystem spielt eine exakte Zeit eine wichtige Rolle. Zu diesem Zweck haben alle Rechner normalerweise eine Uhr eingebaut. Leider genügt diese oftmals nicht den Anforderungen, die von Applikationen wie Datenbanken gefordert werden. Hierzu bietet es sich an, zum einen die lokale Rechneruhr permanent nachzustellen, oder auch über ein Netzwerk immer wieder zu korrigieren. Optimalerweise sollte eine Rechneruhr niemals rückwärts gestellt werden, und die Schritte, in denen sie nach vorne gestellt wird sollten gewisse Zeitintervalle nicht überschreiten. Verhältnismäßig einfach ist es, die Rechneruhr mit ntpdate von Zeit zu Zeit nachzustellen. Dies bewirkt aber immer einen harten Sprung in der Zeit, der nicht von allen Anwendungen toleriert wird.

Einen interessanten Ansatz zur Lösung dieses Problems liefert xntp. Zum einen korrigiert xntp die lokale Rechneruhr laufend anhand von gesammelten Korrekturdaten. Zum anderen Korrigiert es permanent die lokale Zeit mit Hilfe von Zeitservern im Netz. Als dritte Möglichkeit bietet es die Verwaltung von lokalen Zeitnormalen, wie Funkuhren, an.

14.11.1. Konfiguration im Netzwerk

Unter SUSE LINUX wird xntp so voreingestellt, dass nur die lokale Rechneruhr als Zeitreferenz dient. Die einfachste Möglichkeit, einen Zeitserver im Netz zu verwenden ist die Angabe von sog. „server“ parametern. Steht im Netzwerk ein Zeitserver zur Verfügung, der zum Beispiel den Namen ntp.example.com hat, so können Sie diesen Server in der Datei /etc/ntp.conf folgendermaßen ergänzen: server ntp.example.com.

Weitere Zeitserver trägt man einfach ein, indem zusätzliche Zeilen mit den Schlüsselwort „server“ eingefügt werden. Nachdem der xntpd mit dem dem Befehl rcxntpd start initialisiert wurde, benötigt er eine Stunde, bis sich die Zeit stabilisiert und das „drift-File“ zur Korrektur der lokalen Rechneruhr angelegt wird. Das „drift-File“ hat langfristig den Vorteil, dass bereits nach dem Einschalten des Rechners bekannt ist, wie sich die Hardwareuhr im laufe der Zeit verstellt. Die Korrektur wird dann sofort aktiv, wodurch eine hohe Stabilität der Rechnerzeit erreicht wird.

Sofern in Ihrem Netzwerk der Zeitserver auch über einen Broadcast erreichbar ist, benötigen Sie den Server Namen nicht. Tragen Sie in diesem Fall den Befehl broadcastclient in die Konfigurationsdatei /etc/ntp.conf ein. In diesem Fall sollten Sie jedoch die Authentifizierungsmechanismen einrichten, da sonst ein Fehlerhafter Zeitserver im Netzwerk Ihre Rechnerzeit verändern würde.

Jeder xntpd kann im Netzwerk normalerweise auch als Zeitserver angesprochen werden. Wenn Sie den xntpd auch mit broadcasts betreiben möchten, können Sie dies mit der Option broadcast einrichten:

broadcast 192.168.0.255

Ändern Sie hierzu die Broadcastadresse auf Ihre Gegebenheiten ab. Hierbei sollten Sie jedoch sicherstellen, dass der Zeitserver wirklich die richtige Uhrzeit verwendet. Hierzu eigenen sich zum Beispiel Zeitnormale.

14.11.2. Einrichten eines lokalen Zeitnormals

Das Programmpaket xntp enthält auch Treiber, die den Anschluss von lokalen Zeitnormalen erlauben. Die unterstützten Uhren finden Sie im Paket xntp-doc in der Datei file:/usr/share/doc/packages/xntp-doc/html/refclock.htm. Jedem Treiber ist hierbei eine Nummer zugeordnet. Die eigentliche Konfiguration geschieht bei xntp über sogenannte Pseudo IPs. Die Uhren werden in die Datei /etc/ntp.conf so eingetragen, als wären sie im Netzwerk verfügbare Uhren.

Hierzu bekommen sie spezielle IP Adressen, die alle folgende Form haben: 127.127.t.u. Den Wert von t bekommen Sie aus der oben genannten Datei mit der Liste der Referenzuhren. u ist die Gerätenummer, die nur dann von 0 abweicht, wenn Sie mehrere Uhren des gleichen Typs an Ihrem Rechner verwenden. Eine Type 8 Generic Reference Driver (PARSE) hat demnach die Pseudo IP Adresse 127.127.8.0.

Die einzelnen Treiber haben im Normalfall spezielle Parameter, die die Konfiguration näher beschreiben. In der Datei file:/usr/share/doc/packages/xntp-doc/html/refclock.htm finden Sie zu jedem Treiber einen Link zur jeweiligen Treiberseite, die diese Parameter beschreiben. Für die Uhr mit dem Typ 8 ist es zum Beispiel notwendig, einen zusätzlichen mode anzugeben, der die Uhr genauer spezifiziert. Beispielsweise hat das Modul Conrad DCF77 receiver module den mode 5. Damit diese Uhr von xntp als Referenz genommen wird, können sie zusätzlich das Schlüsselwort prefer angeben. Die vollständige server-Zeile eines „Conrad DCF77 receiver module“ lautet somit:

server 127.127.8.0 mode 5 prefer

Andere Uhren folgen dem gleichen Schema. Die Dokumentation zu xntp steht Ihnen nach der Installation des Paketes xntp-doc im Verzeichnis /usr/share/doc/packages/xntp-doc/html zur Verfügung.