Network Time Protocol (NTP)

Debian Swirl

http://www.black-board.net
Es ist nicht gestattet dieses Tutorial losgelöst von dem Namen BlackBoard und der URL zu verbreiten.


Das Tutorial befindet sich noch in der Entwicklung. Wenn du mitwirken möchtest, melde dich hier.
Dies ist ein Aufruf - wenn du Ahnung hast, mach mit!



1. Was ist NTP?


Atomuhr

Wenn man ein Netzwerk hat, dann ist es natürlich auch angebracht, dass auf jedem angebundenen Rechner auch dieselbe Uhrzeit läuft. Es ist allerdings ziemlich mühselig, will man ein Netzwerk regelmäßig manuell synchronisieren, erst recht wenn der eine oder andere Rechner über kurze Zeiträume große Zeitsprünge vollführt. Daher wurde das Network Time Protocol (NTP - http://www.ntp.org) entwickelt, welches die Zeit-Synchronisation in Netzwerken zur Aufgabe hat.

Damit nicht nur die Rechner im LAN alle dieselbe Uhrzeit haben, sondern diese Uhrzeit auch noch einigermaßen genau ist, sollte man einen seiner Rechner via Internet mit einer Atomuhr synchronisieren.


2. Einmalige Synchronisation


Zum einmaligen Setzen der Systemzeit gibt es das Tool ntpdate (Paket-Name: ntpdate). Dieses wird im einfachsten Fall mit ntpdate <servers> aufgerufen, wobei servers der Hostname, die Domain oder IP-Adresse eines oder mehrerer durch Leerzeichen getrennter NTP-Server ist. Im folgenden habe ich mal ein paar mögliche Server aufgelistet:

Deutschland:

ntp0.fau.de - ntp3.fau.de
ntps1-0.cs.tu-berlin.de - ntps1-1.cs.tu-berlin.de
ntp1.ptb.de - ntp2.ptb.de
rustime01.rus.uni-stuttgart.de

Schweiz:

ntp.metas.ch
swisstime.ethz.ch

Weitere Server findet man über Google, z.B. hier. Ein Beispiel-Aufruf, um mit dem zweiten Timeserver der Physikalisch-Technischen Bundesanstalt in Braunschweig zu synchronisieren wäre also (als root):

hermes:~# ntpdate ptbtime2.ptb.de
8 Jan 15:17:39 ntpdate[1034]: adjust time server 192.53.103.104 offset 0.054743 sec


Dabei werden per Default 4 Samples von den angegebenen Timeservern geholt und mit der lokalen Systemzeit verglichen. Liegt die Abweichung bei mehr als einer halben Sekunde, wird die Zeit sofort auf den korrekten Wert gesetzt, ist die Abweichung geringer, erfolgt diese Anpassung in mehreren Schritten.

ntpdate ist umso genauer je mehr Server angegeben werden, je mehr Samples eingeholt werden (kann man mit dem Parameter -p festlegen) und je häufiger es ausgeführt wird. Dabei kann ntpdate auf die bekannten Methoden gestartet werden: als Boot-Script, per Cronjob oder manuell.


3. Einrichtung eines NTP-Servers


Nachdem wir uns nun die Quick&Dirty-Version der Synchronisierung mit ntpdate angeschaut haben, komme ich zu der etwas eleganteren Form: der Synchronisierung mit Hilfe des NTP-Daemons ntpd. Hierfür werden die beiden Pakete ntp und ntp-simple benötigt.

Nach der Installation gilt es, die Konfigurationsdatei (/etc/ntp.conf) entsprechend seiner Bedürfnisse anzupassen. Hierfür wird zwar das Tool dpgk-reconfigure empfohlen, da man damit aber lediglich die angegeben Server anpassen kann, kann man in diesem Fall auch getrost auf den Editor seiner Wahl zurückgreifen.

Auf jeden Fall sollte die Konfigurationsdatei natürlich einen oder mehrere Server beinhalten, die Syntax hierfür ist:

server ntp1.ptb.de
server ntp2.ptb.de
# u.s.w.


Die von Debian vorgegebenen sonstigen Default-Einträge können übernommen werden. Da wir natürlich auch sicherheitsbewusst sind, empfiehlt es sich außerdem, den NTP-Daemon ein wenig einzuschränken und Zugriff nur dort zu erlauben, wo man ihn auch gern hätte. Dies sieht in der /etc/ntp.conf z.B. so aus:

# erlaubt Zugriffe durch die NTP-Server
restrict ntp1.ptp.de
restrict ntp2.ntp.de

# erlaubt Zugriff über Loopback
restrict 127.0.0.1

# erlaubt Zugriff über das LAN (hier entsprechend anpassen, falls die Netz-
# maske eine andere ist)
restrict 192.168.0.0 mask 255.255.255.0

# alle anderen Zugriffe ignorieren
restrict default ignore


Nachdem die Konfiguration nun also angepasst ist, empfiehlt es sich, die Systemzeit einmalig mit ntpdate anzupassen. Danach kann der Daemon mit /etc/init.d/ntp start gestartet werden. Wenn alles geklappt hat, braucht man sich auf diesem Rechner jetzt keine Sorgen mehr wegen der Uhrzeit zu machen, da der ntpd die Synchronisation übernimmt.


4. Einrichtung der Clients


So weit, so gut, doch was nutzt uns ein Timeserver ohne Clients? Herzlich wenig, also kümmern wir uns im folgenden darum, dass die übrigen Rechner im Netzwerk den soeben eingerichteten Timeserver auch nutzen.

Für Linux-Clients ist dies grundsätzlich erstmal kein Problem. Es bieten sich erneut die beiden Möglichkeiten, das entweder mit ntpdate oder dem ntpd zu lösen. Die Konfiguration bleibt hierbei dieselbe, nur dass man als Timeserver nicht einen externen wie den der PTB angibt, sondern eben IP oder Hostname des Rechners, auf dem wir eben den ntpd eingerichtet haben:

zeus:~# ntpdate hermes
8 Jan 16:19:52 ntpdate[1270]: adjust time server 192.168.0.1 offset 0.014911 sec


Analog dazu wird beim ntpd in der /etc/ntp.conf der Eintrag server 192.168.0.1 vorgenommen.

Schwieriger gestaltet sich die Geschichte, wenn sich nun nicht nur Linux-Clients im Netzwerk befinden. Bei mir befinden sich beispielsweise momentan noch ein Windows2000 und ein WindowsXP-Rechner im Netzwerk. Ich möchte hier auch zeigen, wie man diese Rechner auch aktualisieren lassen kann.

Unter Windows2000 habe ich dafür eine Batch-Datei angelegt (z.B. time.bat), die folgenden Inhalt hat:


time.bat

net time /setsntp:hermes
net stop w32time
w32time -once
net start w32time

Dies synchronisiert die System-Uhr einmalig mit dem unter setsntp angegebenen Server (hier hermes). Das ganze steht bei mir im Autostart, wird also jedes Mal bei Systemstart ausgeführt. Wer es gern noch ein bisschen genauer hat, kann auch einen Task dafür anlegen, der diese Batch-Datei in bestimmten Intervallen ausführt.

Unter WindowsXP ist das ganze etwas weniger aufwendig. Hier genügt es, beim Einstellen der Uhrzeit unter der Registerkarte "Internetzeit" den entsprechenden Rechner einzutragen (z.B. 192.168.0.1). Danach erfolgt die Synchronisierung automatisch.


5. Allgemeine Ergänzungen


  • NTP benutzt den UDP-Port 123, wer also eine Firewall nutzt, der sollte diesen für die Synchronisation nach außen und wegen der Anfragen der Clients für das LAN-Interface auch eingehend öffnen.
  • Läuft der ntpd, so kann nicht gleichzeitig auf dem selben Rechner ntpdate ausgeführt werden. Sollte dies, aus welchen Gründen auch immer, einmal nötig sein, muss vorher der ntpd mit /etc/init.d/ntp stop beendet werden.

Verfasser

LX

Letzte Aktualisierung 19.06.2006 von LX