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:
|