Der Linuxrechner als Zeitserver

Im Netzwerk kann es von entscheidender Bedeutung sein, daß die Uhren der PCs im Netz synchron laufen. Außerdem ist es auch so recht angenehm, wenn am Rechner die aktuelle Zeit zur Verfügung steht. Im Internet gibt es eine Reihe von öffentlich zugänglichen Rechnern, die ihrerseits mit Atomuhren verbunden sind. Der folgende Text beschreibt, wie Sie diese Zeitinformationen auf den Linuxserver holen und von da an die Netzwerkrechner weitergeben.

 

Gibt es die Zeit auch online?

 

Zur Synchronisation von Rechneruhren über das Internet bietet die PTB zwei Zeitserver an. Diese Server benutzen zur Weitergabe der Zeitinformation das "Network Time Protocol" (NTP). Dieses Protokoll wurde mit dem Ziel entworfen, Rechner innerhalb lokaler Netzwerke und in Weitverkehrsnetzwerken zeitlich synchronisieren zu können. Das Protokoll basiert auf dem im Internet benutzten IP-Protokoll und ist für alle relevanten Betriebssysteme verfügbar.

 

Um die Zeitserver der PTB zur Synchronisation eines Rechners nutzen zu können, wird ein Programm benötigt, das dieses Protokoll unterstützt. Für die Betriebssysteme Windows, Unix, Macintosh u.a. sind derartige Programme verfügbar. Eine Liste geeigneter Programme ist auf den WWW-Seiten des PTB-Serverdienstes Q.42 unter "Time Synchronisation Software" zu finden. Nach der Installation eines solchen Programms müssen diesem die Adressen der NTP-Server hinzugefügt werden, die zur Synchronisation herangezogen werden sollen. Um die Zeitserver der PTB zur Synchronisation zu nutzen, müssen die folgenden Adressen eingegeben werden:

  • ptbtime1.ptb.de oder
  • ptbtime2.ptb.de

Im Rahmen der Kapazität des Rechenzentrums der PTB Braunschweig wird angestrebt, dass permanent mindestens einer der beiden Zeitserver erreichbar ist. Auf Störungen, die auf den Übertragungswegen entstehen, und auf zeitliche Abweichungen infolge von Verzögerungen im Internet hat die PTB aber keinen Einfluss.

Unter der Nummer +49 531 51 20 38 bietet die PTB zudem Zeitinformationen über das öffentliche Telefonnetz an. Unter Verwendung von Telefonmodems können Rechner und Datenerfassungsanlagen durch automatischen Zugriff die genaue Zeit abfragen.

 

 

Es gibt verschiedene Niveaus an Genauigkeit, die timeserver im Internet liefern können. Ich beschränke mich im folgenden auf eine "einfache" Genauigkeit (so etwa im Sekundenbereich), wer an exakteren Zeitinformationen interessiert ist muß sich mit dem Thema NTP beschäftigen.


Linuxserver

Um die Zeit des Linuxservers mit einem timeserver im Internet zu synchronisieren, muß der Server logischerweise mit dem Netz verbunden sein. Das ist aber in unserem Netz nur der Fall, wenn eine ISDN-Verbindung zum Provider besteht. In regelmäßigen Abständen eine Anfrage an den entsprechenden Rechner zu stellen, würde oft eine kostenpflichtige Verbindung aufbauen. Die Idee ist deshalb, die Zeitsynchronisation an den Einwahlvorgang zu koppeln. Für diesen Zweck wird die Datei ip-up im Verzeichnis /etc/ppp um zwei Befehle ergänzt. Dieses Skript wird vom ISDN-System automatisch gestartet, sobald die ISDN-Verbindung hergestellt ist (Für DOS-Freaks: so etwas wie die autoexec.bat des ISDN-Systems).

 

Die relevanten Zeilen (der untere Teil ist nur ein Ausschnitt) in meiner ip-up sehen so aus:



case "$BASENAME" in
ip-up)
echo -n "starting timesynchronisation ..." > /dev/tty1
/usr/sbin/netdate -l 10 localhost tcp NTP.HEH.Uni-Oldenburg.DE wrzx03.rz.uni-wuerzburg.de
/sbin/clock -wu
echo -n "time synchronisation done." > /dev/tty1

 

Der Befehl netdate fragt den/die öffentlichen Timeserver ab. Suchen Sie sich im Internet möglichst einen wenig frequentierten Rechner in Ihrer Nähe. Netdate setzt nur das Systemdatum, verstellt aber nicht die CMOS-Uhr im Rechner. Das heißt, wenn Sie den Server ausschalten würden, würde er beim Neustart wieder die alte Uhrzeit verwenden. Der nächste Befehl (/sbin/clock -wu) stellt deshalb die interne Uhr auf die korrekte Zeit. Achtung, wenn Sie auf Ihrem Linuxrechner als Zeitzone nicht GMT eingestellt haben, sollten Sie nur /sbin/clock -w aufrufen!

 

Weitere frei zugängliche Zeitserver

  • NTP.HEH.Uni-Oldenburg.DE
  • wrzx03.rz.uni-wuerzburg.de
  • rustime01.rus.uni-stuttgart.de

Damit der Rechner als timeserver fungieren kann, muß jetzt noch der entsprechende Service aktiviert werden. Dazu müssen in der Datei /etc/inetd.conf bei vier Zeilen das Kommentarzeichen am Zeilenanfang entfernt werden. Es handelt sich um die Zeilen:

 

daytime stream tcp nowait root internal
daytime dgram udp wait root internal
time stream tcp nowait root internal
time dgram udp wait root internal

 

Das war's, beim nächsten Systemstart können andere Rechner die Zeit beim Server abfragen.

 

Linux-Client

Die Zutaten zur Zeitsynchronisation des Linuxclients sind die selben wie für den Server. Sie können also entweder per Hand die Befehle:

 

/usr/sbin/netdate -v SERVER
/sbin/clock -wu

 

eingeben oder ein entsprechendes Skript schreiben.

 

Ab SuSE 9.0 gibt es unter Netzwerkdienste einen NTP-Client.

Dort ist es möglich einen der bevorzugten Zeitserver einzutragen.

Wichtig ist, dass dort "NTP-Daemon bei Systemstart starten" aktiviert ist.

 

Wenn dieses System als Arbeitsstation benutzt wird, sollte dies zum weiteren Arbeiten ausreichen. Wird dieses System allerdings als Server eingesetzt, dannn sollte folgendes Script per Crontab aufgerufen werden:

 

/bin/date >> /var/log/time.log

# fuer SuSE 9.0
#/etc/rc.d/xntpd restart >> /var/log/time.log

# fuer SuSE 10.0
/etc/rc.d/ntp restart >> /var/log/time.log

echo ------------ >> /var/log/time.log

 

 

Windows Client

Es gibt eine Reihe von Programmen für Windowsrechner, die den Zeitabgleich mit Unixservern ermöglichen und die darüberhinaus noch als freeware angeboten werden. Die Programme finden Sie leicht, wenn Sie eine Suchmaschine nach den Stichworten timesynchronisation + Windows abfragen.

Der Abgleich mit dem Server kann auch mit "Windows-Bordmitteln" geschehen. Erstellen Sie dazu eine BAT-Datei mit der Zeile:

 

c:\windows\net.exe time \\SERVER /set /yes

 

Anstelle von SERVER muß hier natürlich der Name Ihres Linuxservers stehen (das ist der Name, der in der Netzwerkumgebung zu sehen ist - nicht die IP-Adresse). Wenn Ihr Linuxserver ständig an ist, erstellen Sie davon eine Verknüpfung in das Autostart-Verzeichnis.

Es ist auch denkbar, diese Zeile in der autoexec.bat zu integrieren.