Eine korrekte Systemzeit ist in Computersystemen idR unabdingbar. Vor allem in Netzwerken wo ggf Logfiles mehrerer Rechner miteinander verglichen werden müssen, ist es unerlässlich auf allen Systemen die korrekte oder zumindest die selbe Zeit eingestellt zu haben. Das Netzwerkprotokoll »NTP«1) (Network Time Protokoll) basiert auf UDP Port 123 und ist der Standard in Computersystemen zur Zeitsynchronisation.2)
Das folgende Tutorial beschreibt die Konfiguration eines Clients zur Synchronisation der Systemzeit mit einem NTP-Server der Physikalisch-Technischen Bundesanstalt Braunschweig (PTB).
Installieren Sie das Paket »ntp« aus dem Debian Repository3):
# aptitude install ntp
Konfigurieren Sie den zu verwendenden NTP-Server in der Konfigurationsdatei »/etc/ntp.conf«
/etc/ntp.conf
... # You do need to talk to an NTP server or two (or three). #server ntp.your-provider.example server ptbtime1.ptb.de server ptbtime2.ptb.de ...
In einer Default »/etc/ntp.conf« sind bereits einige Pools vorkonfiguriert, diese können Sie idR verwenden, ich jedoch deaktiviere diese und verwende ausschließlich die oben eingestellten der Physikalisch-Technische Bundesanstalt Braunschweig (PTB)4). Dort steht auch eine Cs-Atomuhr mit welcher die Server abgeglichen werden.
/etc/ntp.conf
... # pool.ntp.org maps to about 1000 low-stratum NTP servers. Your server will # pick a different set every time it starts up. Please consider joining the # pool: <http://www.pool.ntp.org/join.html> # server 0.debian.pool.ntp.org iburst # server 1.debian.pool.ntp.org iburst # server 2.debian.pool.ntp.org iburst # server 3.debian.pool.ntp.org iburst ...
Mit dem Kommando »ntpdate« können Sie eine Erstsynchronisation manuell sofort durchführen. Installieren Sie dazu das Paket »ntpdate«5) aus dem Debian-Repository:
# aptitude install ntpdate
Um einmalig die Erstsynchronisation anzustoßen verwenden Sie das Kommando »ntpdate« mit einem beliebigen Zeitserver als Argument. Um Konflikte mit evtl. bereits laufenden Prozessen aus dem Weg zu gehen, können Sie den NTP-Daemon zuvor anhalten und im Anschluss wieder starten:
# /etc/init.d/ntp stop # ntpdate ptbtime1.ptb.de 19 Dec 13:21:44 ntpdate[3326]: step time server 192.53.103.108 offset 47743.691243 sec # /etc/init.d/ntp start
Jedes Computersystem hat im Prinzip zwei Uhren. Zum Einen die Hardware-Uhr oder Real-Time-Clock (RTC), welche idR auf dem Motherboard des Systems eingebaut ist. Diese Uhr ist batteriegepuffert und arbeitet selbst dann, wenn das System nicht eingeschaltet oder von der Stromversorgung getrennt ist. Diese Uhr wird eigentlich nur beim Systemstart benötigt, wenn die Systemuhr des Betriebssystem-Kernels gestellt wird. Deshalb ist es auch sinnvoll, dass die RTC die richtige Uhrzeit bereitstellt. Unter Linux steht Ihnen das Kommando »hwclock« zur Manipulation der Hardware-Uhr zur Verfügung.
Schauen wir uns zuerst einmal die derzeitige Uhrzeit der Hardware-Uhr an:
# hwclock -r
Mo 26 Nov 2012 21:48:36 CET -0.688934 seconds
Wenn wir das jetzt mit unserer Zeit vergleichen, welche das Betriebssystem uns liefert, wird der Unterschied schnell deutlich:
# date
Mi 19. Dez 13:25:16 CET 2012
Mit dem Parameter »--systohc« oder kurz »-w« setzen Sie die Harware-Uhr nach der Systemzeit:
# hwclock -w
Eine Überprüfung der Hardware-Uhr zeigt nun ein aktuelles Datum und Uhrzeit an:
# hwclock -r
Mi 19 Dez 2012 13:28:44 CET -0.470355 seconds
Sie können aber auch die Systemuhr mit der Harware-Uhr synchronisieren (»--hctosys«)
Die Funktionalität eines NTP Daemons lässt sich mit dem Kommandozeilen-Utility »ntpq« überwachen bzw. lassen sich damit bestimmte Parameter abfragen. »ntpq« ist Bestandteil des ntp-Pakets. Eine Abfrage könnte zB so aussehen:
# ntpq -pn
remote refid st t when poll reach delay offset jitter
==============================================================================
192.53.103.108 .PTB. 1 u 4 64 7 56.978 46.388 3.813
192.53.103.104 .PTB. 1 u 3 64 7 57.464 47.560 6.846
Hier wird zB der Server angezeigt, welchen das System als Peer eingetragen hat und die »refid«, was den nächsten Server anzeigt. Hier im Beispiel ist das die Atomuhr selbst, was sich auch durch das Stratum »st« verdeutlichen lässt, welches Angaben macht wie viele Hops der eingetragene Zeitserver von der nächsten Atomuhr entfernt ist (Hier 1 Hop); Wann (In Sekunden) die letzte Abfrage stattgefunden hat (»when«) und in welchem Intervall diese abgefragt werden (»poll«). Der Zähler »when« wird bei der Abfrage auf Null gestellt und hochgezählt, bis der Wert in der Spalte »poll« erreicht ist, dann wird die nächste Synchronisation angestoßen. Die Spalte »reach« gibt Auskunft wie lange oder wie viele Synchronisationszyklen die Zeitquelle schon zur Verfügung stand. Die Schreibweise ist oktal und der Wert 377 ist der höchstmögliche. Die Spalten »delay«, »offset« und »jitter« geben Auskunft über Signallaufzeiten etc und sind in Millisekunden angegeben. So betrug in diesem Beispiel zB die Signallaufzeit der letzten Abfrage 56,978 Millisekunden. Aus diesen Werten werden dann auch Abweichungen ermittelt und korrigiert, welche sich durch die Signallaufzeit ergeben.
Der poll-Intervall regelt sich abhängig von der Zuverlässigkeit der Zeitquelle selbst nach. Das bedeutet er startet zuerst mit seinem minimalen poll-Intervall »minpoll« (16 Sekunden) und erhöht sich, je nachdem wie groß jeweils die zu korrigierenden Zeitunterschiede sind, bis zu seinem maximalen poll-Intervall »maxpoll«; das »maxpoll« variiert je nach verwendeter Version von 1024 Sekunden bis zu 1,5 Tagen. Der hier zugrunde liegende Algorithmus ist eine Wissenschaft für sich und wird durch eine ganze Menge an Parametern beeinflusst. Normalerweise ist an dieser Stelle kein Eingriff notwendig.
Sie können aber auch den poll-Intervall in der Konfigurationsdatei »/etc/ntp.conf« zu den konfigurierten Servern einstellen. Die poll-Zahl entspricht dabei jeweils dem Exponenten zur Basis 2 (also 24; 25; 26 usw.) und ergibt die Sekunden bis zur nächsten Synchronisation, wobei auf aktuellen Systemen idR »minpoll = 4« und »maxpoll = 17« entspricht:
/etc/ntp.conf
... # You do need to talk to an NTP server or two (or three). #server ntp.your-provider.example server ptbtime1.ptb.de minpoll 9 maxpoll 17 server ptbtime2.ptb.de minpoll 9 maxpoll 17 ...
Verwandte Artikel:
→ Windows Server 2008 R2 NTP Server einstellen
→ Aruba Networks: Set NTP server
"We are connecting more than computers"
— pronto 2012/12/19 12:54