Unterschiede zwischen den Revisionen 26 und 27
Revision 26 vom 2003-11-17 07:53:08
Größe: 4049
Kommentar:
Revision 27 vom 2003-11-17 07:54:22
Größe: 4440
Kommentar:
Gelöschter Text ist auf diese Art markiert. Hinzugefügter Text ist auf diese Art markiert.
Zeile 35: Zeile 35:
Unter SuSE 9.0 wird die Zeit über `/etc/ppp/poll.tcpip' beim Einwählen gesetzt, sofern `ntpdate' installiert ist. Der xntpd Daemon darf nicht laufen. Dann wird ein `/usr/sbin/rcxntpd ntptimeset' ausgeführt. Unter SuSE 9.0 wird die Zeit über '/etc/ppp/poll.tcpip' beim Einwählen gesetzt, sofern `ntpdate' installiert ist. Der xntpd Daemon darf nicht laufen. Dann wird ein '/usr/sbin/rcxntpd ntptimeset' ausgeführt. Es müsste lediglich noch die Zeile '/sbin/hwclock -uw' eingefügt werden. Sollte dann so aussehen:

{{{
while true ; do
    set -- $(/sbin/runlevel)
    test -e /etc/init.d/rc${2}.d/S*xntpd && break
    test -x /usr/sbin/ntpdate || break
    checkproc /usr/sbin/xntpd &> /dev/null && break
    /usr/sbin/rcxntpd ntptimeset
    /sbin/hwclock -uw
    break
done
}}}

NTP ist das Network Time Protocol. Dieses Protokoll erlaubt den Abgleich der Systemzeit mit einem zentralen ZeitServer (im Internet oder eigener Server im LAN).

Das Protokoll ist in RFC 1305 definiert (siehe auch http://www.ntp.org).

In unseren Breitengraden verwendet man am besten einen der folgenden Server:

  • ptbtime1.ptb.de (Atomuhr der [^http://www.ptb.de Physikalisch-Technischen Bundesanstalt])

  • ptbtime2.ptb.de
  • bernina.ethz.ch

Weitere öffentliche NTP-Server siehe: http://www.eecis.udel.edu/~mills/ntp/servers.html

Der Zeitabgleich funktioniert am einfachsten mit dem Kommando ntpdate Servername. Anschließend sollte die somit neu gestellte Betriebssystemzeit noch mit hwclock -uw auf die BIOS-Uhr übertragen werden.

Automatisierung durch Cron-Job

So richtig rund wird die Sache, wenn man z.B. über ["cron"] folgendes Script ausführt:

ntpdate -t 60 lieblingstimeserver; hwclock -u --systohc

hwclock stellt die Hardware-Uhr (RTC); -u heißt, dass diese auf UTC läuft. Sollte ntpdate nicht schnell genug eine Antwort bekommen (z.B. bei Wählleitungen), kann man das Timeout (-t) auch höher setzen.

Automatisierung bei Wählverbindung

Wer sich über eine Wählleitung mit dem Internet verbindet, kann die nötigen Befehle in der Datei /etc/ppp/ip-up.local unterbringen:

ntpdate ptbtime1.ptb.de
hwclock -uw

/!\ Unter SuSE 9.0 wird die Zeit über '/etc/ppp/poll.tcpip' beim Einwählen gesetzt, sofern `ntpdate' installiert ist. Der xntpd Daemon darf nicht laufen. Dann wird ein '/usr/sbin/rcxntpd ntptimeset' ausgeführt. Es müsste lediglich noch die Zeile '/sbin/hwclock -uw' eingefügt werden. Sollte dann so aussehen:

while true ; do
    set -- $(/sbin/runlevel)
    test -e /etc/init.d/rc${2}.d/S*xntpd  && break
    test -x   /usr/sbin/ntpdate            || break
    checkproc /usr/sbin/xntpd &> /dev/null && break
    /usr/sbin/rcxntpd ntptimeset
    /sbin/hwclock -uw
    break
done

Eigenen Zeitserver aufsetzen

Mit ntpd lässt sich sehr einfach ein eigener ZeitServer aufsetzen. Dazu trägt man im bei der Installation von ntpd mitgelieferten File /etc/ntp.conf bis zu drei übergeordnete NTP-Server ein und startet den ntpd mit /etc/init.d/ntpd start.

/!\ Es ist nicht zu empfehlen, ntpd als Server aufzusetzen, wenn man eine Wählleitung hat. Da er selbständig versucht, Verbindungen zu anderen Zeitservern aufzubauen, kann das zu Ärger führen.

Mit ntpq -p kann man sich den Status anzeigen lassen.

# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*ntp1.ptb.de     .PTB.            1 u 1018 1024  377   27.052   -0.481   0.023
+ntp2.ptb.de     .PTB.            1 u  174 1024  377   24.566   -0.619   0.168
-rustime01.rus.u .DCFp.           1 u   80 1024  377   27.175    1.816   0.033

Natürlich kann man, statt sich die Zeit aus dem Internet zu holen, eine Funkuhr einsetzen. Siehe auch EigenbauFunkuhr.


Detaillierte Beschreibung

"root" kann sich mit ntpdate das Zeitsignal z. B. einer Atomuhr aus dem Internet holen und die Systemuhr damit hinreichend genau einstellen: {{{ntpdate ptbtime2.ptb.de ptbtime1.ptb.de }}}

Wenn man die Uhr allerdings auf Dauer synchron halten will, ist diese Methode nicht sehr gut, da bei einem Aufruf von ntpdate die Uhr abrupt neu gestellt wird. Wenn sie so beispielsweise zurück gestellt wird, können in den Logdateien Uhrzeiten doppelt auftauchen.

Deshalb gibt es alternativ den etwas intelligenteren ["ntpd"]. Dieser stellt die Uhr nicht neu, sondern verlangsamt bzw. beschleunigt sie solange, bis die Uhrzeit stimmt.

root# cat << "EOC" > /etc/ntp.conf
driftfile /var/run/ntpd.drift
server ptbtime1.ptb.de
server ptbtime2.ptb.de
EOC

Jetzt noch den ntpd starten: {{{ntpd -p /var/run/ntpd.pid }}}

Statt ptbtime[12].ptb.de ist es sinnvoller die NTP-Server seines Providers zu verwenden, soweit vorhanden.

NTP-Synchronisierung für den Router, rdate für die Clients

Da es suboptimal ist, wenn sich alle Clients hinter einem Router von einen Internet-NTP-Server die Zeit holen, ersetzt man auf den Clients die server-Zeile durch server routername.


ToDo: Refactoring


KategorieProtokoll KategorieServer

ntp (zuletzt geändert am 2008-08-04 09:21:38 durch 207-205-103-86)