Startseite >> Tipps und Tricks >> Linux

Linux-Tipp 11

Exakte Uhrzeit mit rdate, ntpdate und Co.

Nicht nur innerhalb eines Netzwerkes gibt es gute Gründe dafür, alle Rechner mit einer genauen Uhrzeit zu betreiben. Auch beim heimischen PC sind schnell überzeugende Argumente gefunden. So ist eine exakte Uhrzeit beispielsweise im Rahmen von Online-Auktionen à la eBay überaus wertvoll. Dabei ist gar nicht schwer, den eigenen PC automatisch mit der genauen Uhrzeit zu versehen. Linux bietet hierzu eine Reihe von Möglichkeiten.

Grundsätzlich gibt es drei Wege, die lokale PC-Zeit mit der amtlichen Uhrzeit zu synchronisieren:

  • über eine am PC angeschlossene Funkuhr (DCF77 oder GSM)
  • über einen Zeitserver im Internet
  • über ISDN-Zeitmarken

Die letztgenannte Möglichkeit ist denkbar einfach. Eine lauffähige ISDN-Unterstützung vorausgesetzt, reicht die Eingabe des Befehls /usr/sbin/isdnlog -t 1, um das ISDN-Subsystem anzuweisen, bei der nächsten Einwahl die lokale Uhrzeit auf die vom ISDN-Service-Provider übermittelte zu stellen. Der Aufruf /usr/sbin/isdnlog -t 2 erledigt dasselbe, jedoch für jede danach folgende Einwahl.

Für den zweiten Weg sollte zunächst ein Server der STRATUM-1-Klasse, d. h. ein Server, der seine Zeit direkt von einer autorisierten Quelle bezieht, gefunden werden. In Frage kommen hier beispielsweise die Zeit-Server der Physikalisch-Technischen Bundesanstalt (ptbtime1.ptb.de und ptbtime2.ptb.de) oder der Friedrich-Alexander-Universität Erlangen-Nürnberg (ntp1.fau.de, ntp2.fau.de und ntp3.fau.de).

Protokollfragen

Als nächstes stellt sich die Frage, welches Protokoll für die Zeitsychronisation verwendet werden soll. Mit Blick auf die Systemsicherheit ist das im RFC 868 beschriebene, auf Anschluss (Port) 37 (wahlweise TCP oder UDP) operierende Time-Protokoll sicherlich das geeignetste. Die zugeh&oouml;rigen Server-Dienste können unter Linux bereits von dem inetd- bzw. dem xinet-Dämon bereitgestellt werden, so dass selbst der Aufbau eines Zeit-Servers mit wenigen Handgriffen erledigt wäre. Doch das ist ein anderes Thema ...

rdate

Als RFC-868-Client bietet sich das von Arkadiusz Miskiewicz entwickelte Utility rdate an, das bei den meisten Linux-Distributionen zum Lieferumfang gehört. Der passende Aufruf von rdate ist denkbar einfach:

Beispiel:
rdate -s 131.188.34.45

Dieser Befehl benötigt root-Rechte und stellt die Uhr des lokalen Systems auf die vom RFC868-Server (131.188.34.45) übermittelte Uhrzeit ein. Die aktuelle Zeit wird dabei nicht ausgegeben (-s).

Leider hat diese Lösung zwei Schönheitsfehler: Zum einen bietet kaum ein STRATUM-1-Server den Zeitabgleich via RFC 868 an, und zum anderen ist dieses Protokoll von Hause aus nicht sehr genau. Die Genauigkeit der Zeitstempel beträgt nur 1 Sekunde. Für die meisten Fälle ist dies sicher ausreichend, aber eben nicht für alle. Deswegen gibt es Network Time Protocol (NTP).

NTP

Wie fast jedes Unix-Derivat unterstützt auch Linux das NTP-Protokoll vorbildlich. Neben dem NTP-Paket, das sowohl einen Server-Dämon als auch einen Client enthält, existieren einige weitere RFC-1305-konforme NTP-Clients wie beispielsweise Chrony von Richard Curnow. Bei den meisten Distributionen sind die NTP-Programme in einem RPM-Paket namens ntp-XXX.rpm oder xntp-XXX.rpm zusammengefasst. Aus Sicherheitsgründen sollten Sie nach der Installation eines solchen Paketes die NTP-Server-Dienste deaktivieren. Bei der SuSE-Distribution wird dazu beispielsweise in der Datei /etc/rc.config die Variable START_XNTP auf den Wert NO gesetzt. Bei Red-Hat-basierten Distributionen ab Version 7.0 führen Sie stattdessen die Befehlsfolge cd /etc/init.d/ && /sbin/chkconfig ntpd off aus (erfordert jeweils root-Rechte).

Um nun die lokale Uhrzeit manuell mit der eines NTP-Servers abzugleichen, verwenden Sie folgenden Befehl:

Beispiel:
/usr/sbin/ntpdate ptbtime1.ptb.de

PC-Uhr stellen

Durch den obigen ntpdate-Befehl wird die Systemzeit auf die von dem Server ptbtime1.ptb.de übermittelte eingestellt. Dabei wird übrigens genau wie beim Einsatz von rdate die CMOS-Uhr des Rechners nicht auf den aktuellen Stand gebracht. Ist dies gewünscht, führen Sie anschließend einfach den Befehl /sbin/hwclock -w aus. Doch Vorsicht: Das CMOS kann nicht beliebig oft beschrieben werden. Wenn Sie im 5-Minutentakt automatisiert die CMOS-Uhr neu stellen, wird dem CMOS Ihres Rechners kein sehr langes Leben beschert sein.

Noch ein Tipp zu ntpdate: Sie können ntpdate auch eine Liste von Time-Servern (getrennt durch je ein Leerzeichen) als Parameter übergeben. ntpdate wird dann selbstständig versuchen, die Zeit von dem zuverlässigsten Server d. h. einem Server aus der Gruppe mit der geringsten Abweichung untereinander zu beziehen.

Es gäbe an dieser Stelle sicherlich noch viel zu diesem Thema zu erzählen – angefangen beim Aufbau eines Time-Servers, über die richtigen Firewall-Regeln beim Einsatz von NTP bis hin zum Anschluss und Betrieb einer Funkuhr an einem Linux-PC. Doch all dies würde den Rahmen dieses Tipps sprengen. Dem interessierten Leser seien deswegen die nachfolgenden URLs ans Herz gelegt.

Weiterführende Literatur:

Picture

Linux