Zeitsynchronisation mit NTP Daemon für Debian und Ubuntu
Viele Webserver (oder Rootserver) sind auf eine genau laufende Uhrzeit angewiesen, um aussagefähige Logfiles (Beispielsweise Zugriffsstatistika der Webseiten oder Systemlogfiles für die Fehleranalyse) schreiben zu können. Leider laufen die Systemuhren (Hardwareclock) nicht sehr genau und haben bereits nach einigen Wochen relativ grosse Abweichungen zu verzeichnen. Vergisst man gelegentlich die Uhr zu stellen, kann man sich da schon einige Unschönheiten einfangen.
Die Rettung lautet NTP, das Network Time Protocol. Es dient, wie der Name schon sagt zur Zeitübertragung zwischen verschiedenen Rechnern über das Netzwerk. Das allein hilf natürlich noch nicht weiter… Aber es gibt relativ viele NTP Server im Internet, welche kostenlos mehr oder weniger aktuelle Uhrzeiten liefern, daruter auch Server, welche Ihre Uhrzeit direkt von Atomuhren beziehen! Über das NTP Protokoll kann man sich diese Server zu nutze machen, um automatisiert die uhrzeit auf dem einenem Rechner oder Server immer aktuell zu halten.
Unter Linux dient hierzu meist der NTP Client, welcher sich unter Debian Lenny sehr leicht mit der nachfolgenden Kommandozeile installieren lässt:
1 | aptitude install ntp ntpdate |
Konfiguriert wird der NTP Client über nur eine kleine Datei, die /etc/ntp.conf! Hier wird festgelegt, welche Zeitserver befragt werden können (nicht alle werden tatsächlich zeitserver für das System sein), ob und wie zeitdienste weitergegeben werden und wer den NTP Dienst noch konfigurieren darf.
/etc/ntp.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | /etc/ntp.conf # Pfad zum Driftfile driftfile /var/lib/ntp/ntp.drift statistics loopstats peerstats clockstats filegen loopstats file loopstats type day enable filegen peerstats file peerstats type day enable filegen clockstats file clockstats type day enable # Stratum 1 Server server ntp1.ptb.de server ntp2.ptb.de # NTP Server aus dem Debian Pool (Defaultserver bei Lenny) server 0.debian.pool.ntp.org iburst dynamic server 1.debian.pool.ntp.org iburst dynamic server 2.debian.pool.ntp.org iburst dynamic server 3.debian.pool.ntp.org iburst dynamic # By default, exchange time with everybody, but don't allow configuration. restrict -4 default kod notrap nomodify nopeer noquery restrict -6 default kod notrap nomodify nopeer noquery # Local users may interrogate the ntp server more closely. restrict 127.0.0.1 restrict ::1 |
Nachdem die Konfiguration in etwa wie im obigem Beispiel aussieht (Kommentarzeilen etc. habe ich der Übersichtlichkeit halber größtenteils entfernt), sollte man einmal von Hand die zeit auf dem System setzen. Das geht recht einfach mit dem oben schon mit installiertem ntpdate.
1 | ntpdate ntp1.ptb.de |
Nun ist die zeit auf dem System aktuell, sofern der Zeitserver auch erreichbar war! Ein funktionierendes Netzwerk mitsamt der dazugehörigen Namensauflösung (DNS Dienste) setze ich hier einfach mal vorraus! Wir können den NTP Client nun starten, bzw. neustarten
1 | /etc/init.d/ntp start |
oder
1 | /etc/init.d/ntp restart |
Überprüfung der Zeitsync:
Direkt nach dem Start:
ntpq -c peers
remote refid st t when poll reach delay offset jitter
==============================================================================
ptbtime1.ptb.de .PTB. 1 u 5 64 1 21.020 11.660 0.001
ptbtime2.ptb.de .PTB. 1 u 4 64 1 20.856 11.789 0.001
dnscache-frankf 192.53.103.104 2 u 1 64 1 6.087 12.967 0.891
bind.ch 130.60.75.52 3 u - 64 1 7.191 16.387 0.001
phoenix.wzw.tum 192.53.103.108 2 u 1 64 1 22.817 18.651 0.001
obelix.chown.dk 131.188.3.221 2 u - 64 1 0.954 13.563 0.001
Nach einer Minute:
ntpq -c peers
remote refid st t when poll reach delay offset jitter
==============================================================================
*ptbtime1.ptb.de .PTB. 1 u 33 64 37 20.637 15.675 8.187
+ptbtime2.ptb.de .PTB. 1 u 32 64 37 20.806 24.409 8.137
+dnscache-frankf 192.53.103.104 2 u 28 64 37 4.869 16.740 6.471
-bind.ch 130.60.75.52 3 u 28 64 37 7.158 29.072 9.780
phoenix.wzw.tum 192.53.103.108 2 u 23 64 37 21.779 19.059 8.523
+obelix.chown.dk 131.188.3.221 2 u 25 64 37 0.633 14.937 8.032
Erklärung relevanter Zeichen und Spalten:
* Der beste aller eingetragenen Server. Dieser Server wird als Referenz genommen.
+ akzeptable Qualität (sortiert nach absteigender Qualität)
# akzeptabler Zeitgeber, jedoch schlechter als mit “+”
- Schlechter Zeitgeber, meistens ausgenommen von der Zeitermittlung.
. Schlechter Zeitgeber, meistens ausgenommen von der Zeitermittlung.
x Server mit scheinbar falscher Zeit. Ausgenommen von der Zeitermittlung.
In der Spalte “st” steht der Stratum Wert, sprich wie viele Schritte der Server von der primären Zeitquelle (z.B. der Atomuhr) entfernt ist.
In der Spalte “when” steht wann der Zeitderver das letzte mal befragt wurde, analog dazu steht in der Spalte “poll” in welchem Zeitabstand der Server befragt wird.
Die Spalten “delay” “offset” und “jitter” stehen für die Netzlaufzeit, Abweichung und Streuung der Antworten des jeweiligen Servers in Millisekunden. Je weniger, desto besser natürlich.
Nach der Inbetriebnahme des NTP Dienstes, sollte man einige Stunden vergehen lassen, bevor man die Ergebnisse gegenprüft, da über das Driftfile ersteinmal eine gewisse Anzahl von Werten gesammelt werden müssen, bevor der NTP Dienst wirklich genau arbeiten kann.
Abschließend muss der NTP Dienst nur noch beim Systemstart gestartet werden. Dies erreicht man unter Debian wie folgt:
chkconfig --level 345 ntp on
Mit dieser Befehlszeile wird der NTP Dienst in den Runleveln 3,4 und 5 gestartet, was für 98% aller Systeme ausreichen sollte ;)!
P.S. Die Daten der ntp.conf gelten so für fast alle *nix Systeme, also auch HP UX, SUN Solaris sowie Linuxsysteme von SuSE und RedHat!
Weblinks zu Zeitserver Pools und Listen:
- http://www.pool.ntp.org/en/use.html
- http://tf.nist.gov/tf-cgi/servers.cgi#
- http://support.ntp.org/bin/view/Servers/StratumOneTimeServers





