Archiv

Artikel Tagged ‘Zeitserver’

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:

Windows NTP Serverliste ergänzen (Zeitserver)

Wer seinen Client bisher mit einem der von Windows vorgegebenen Zeitserver aktualisiert hat, möchte in dieser Liste vielleicht auch andere Server stehen haben. So erging es mir zumindest heute. Auf einem Windows Server 2003 System sollte der lokale NTP Server des Kundennetzwerkes verwendet werden, externe NTP Server sind aufgrund von Firewallrestriktionen nicht erreichbar.



Gut, kein Thema – der lokale NTP Server ist ein kleines Linuxsystem mit einer Funkuhr dran, also eine fast ideale Zeitquelle – nur wie bringe ich Windows dazu es genauso zu sehen?
Durch einen Blick in die Windows Registry “Start -> Ausführen -> Regedit” wird es sehr schnell deutlich. Unter

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime\Servers

findet man genau die Liste der Server die Microsoft Windows von Hause aus mitgibt. Diese muss man nur erweitern!

Mit einem Rechsklick in einen freien Bereich unter der Serverliste im Windows Registry Editor fügt man einfach über “Neu – Zeichenfolge” einen neuen Eintrag hinzu. Achte auf die fortlaufende Nummer! Danach editiert man den neuen Wert und trägt dort den gewünschten neuen Zeitserver ein, sei es ein lokaler Zeitserver oder zum Beispiel ntp1.ptb.de oder auch ntp2.ptb.de – Fertig!

Es gibt auch noch andere Wege einen Zeitserver zu setzen, dabei sind auch Scriptgeeignete – aber dazu komme ich in meinem nächstem Beitrag zum Thema KixTart!