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.
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 zur FH 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 -v wrzx03.rz.uni-wuerzburg.de
/sbin/clock -wu
echo -n "time synchronisation done." > /dev/tty1
...
Und ab hier der normale Rest der Datei... .
Im obigen Skriptausschnitt sind zwei Zeilen enthalten, die mit echo
"..." auf einer der Konsolen eine Ausgabe erzeugen sollen. Normalerweise
ist für das Script vorgegeben, daß Ausgaben des echo-Befehls
"ins Leere" laufen (technisch: /dev/null; Danke für den Hinweis an
Wolfgang Stark). Daher muß im Skript die Ausgabe explizit auf eines
der Terminals umgeleitet werden! Bei mir ist das das erste Terminal, da
ich normalerweise nicht am Server arbeite. Bei den Standardeinstellungen
müßten Sie dort /dev/tty10 eintragen!
Der Befehl netdate fragt den öffentlichen timeserver der Universität
Würzburg 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!
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.
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. Ich benutze
z.B. Dimension 4 von Thinking Man Software. Als timeserver muß hier
der Linuxserver eingetragen werden (192.168.1.1) und als Protokoll "time/tcp".
Da bei mir der Linuxserver nicht immer läuft, habe ich das Programm
so konfiguriert, daß die Zeit einmal abgefragt wird und sich das
Programm dann automatisch beendet. Und zudem habe ich mir eine Batchdatei
gestrickt, in der zuerst der Webbrowser und dann anschließend die
Zeitsynchronisation aufgerufen werden. So kann ich sicher sein, daß
der Server läuft, denn nur dann funktioniert der Internetzugriff.
Ich empfehle übrigens nicht, die Programme zur Zeitsynchronisation
permanent laufen zu lassen, um dann beispielsweise in regelmäßigen
Abständen die aktuelle Zeit zu holen. Die meisten Programme belegen
unnötig viel Arbeitsspeicher, soweit ich mir das bislang angesehen
habe.
Alternativ kann der Abgleich mit dem Server auch mit "Windows-Bordmitteln"
geschehen (Danke für den Hinweis an Peter Hinse). Erstellen Sie eine
Verknüpfung zu c:windowsnet.exe und geben als Parameter
time SERVER /set /yes ein. Anstelle von SERVER muß hier
natürlich der Name Ihres Linuxservers stehen (das ist der Name, der
in der Netzwerumgebung zu sehen ist). In den Eigenschaften der Verknüpfung
sollten Sie "Schliessen bei beenden" aktivieren, dann geschieht die Zeitsynchronisation,
ohne daß viel auf dem Bildschirm zu sehen ist. Wenn Ihr Linuxserver
ständig an ist, kopieren Sie diese Verknüpfung in das Autostart-Verzeichnis.
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 192.168.1.1
/sbin/clock -wu
eingeben oder ein entsprechendes Skript schreiben. Ich habe meines auch
wieder mit dem Start des Webbrowsers gekoppelt.
OS/2-Client
Für OS/2 habe ich ein freeware-Programm namens ntp im Einsatz.
Die letzte Version, die ich gefunden habe, wird als ntp107.zip vertrieben.
Das Programm kann in ein beliebiges Verzeichnis installiert werden. Der
Aufruf erfolgt von der Kommandozeile bzw. in einer Batchdatei in der Form
ntp
192.168.1.1 /SET. Dadurch wird die Zeit des OS/2-Rechners auf die
des Servers gesetzt.
|