Linux als SOHO-Server

für Linux- und Windows-Clients
http://linux.eusterholz.dyndns.org

Kapitel:

Home
Debian Installation
Debian Etc.
Internet-Zugang
Telnet
FTP
r-Utilities
SSH
Printing
NTP
Nameserver
NFS/NIS/Automount
Samba (SMB-Server)
Apache (WEB-Server)
Modem / ISDN
Backup
Etc.


NTP-Server

[ NTP-Server ] Synchronisation ] NTP-Client ]


Im vorliegenden Unterkapitel wird die Konfiguration eines lokalen NTP-Servers beschrieben. Lokale im Netz befindliche NTP-Clients, können sich anhand des NTP-Servers synchronisieren. Bei der vorgestellten Konfiguration liefern externe Time-Server im Internet die Referenzzeit für den lokalen NTP-Server. In einem späteren Unterkapitel wird auf andere Möglichkeiten zur exakten Ermittelung der Referenzzeit eingegangen.

Installation

Unter Debian-Linux sollte für einen NTP-Server mit: 'apt-get install ...' folgende Pakete installiert werden:

  • ntp-server      Enthält die gemeinsamen Dateien für einen NTP-Server.
  • ntp             NTP-Hilfsprogramme.
  • ntp-simple      NTP-Dämon für einfache Zeitserver.
  • (ntp-refclock)  NTP-Dämon welcher verschiedene Zeitsignal-Empfänger unterstützt.
  • (ntp-doc)       Ausführliche HTML-Dokumentation für das ntp- und ntpdate-Paket.

Das Paket 'ntp-simple' kann sich anhand von andern Zeit-Servern im Internet synchronisieren, ist kein anderer Server vorhanden, so wird typischerweise die intern CMOS-Uhr des Servers benutzt. Möchte man einen eigenen Zeit-Empfänger, wie z.B. einen DCF77-Empfänger zur Synchronisation nutzen, so ist anstatt: 'ntp-simple' das Paket: 'ntp-refclock' zu verwenden.

Konfiguration

Der NTP-Dämon liest seine Konfigurationsparameter aus einer Datei: 'ntp.conf' die sich im Verzeichnis: '/etc' befindet. Unter Debian ist diese Datei schon vorkonfiguriert (die meisten Zeilen sind auskommentiert) und kann eigentlich fast unverändert belassen werden:

Konfigurationsdatei für NTP-Server: /etc/ntp.conf

# /etc/ntp.conf, configuration for ntpd

# ntpd will use syslog() if logfile is not defined
#logfile /var/log/ntpd

driftfile /var/lib/ntp/ntp.drift
statsdir /var/log/ntpstats/

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


# You do need to talk to an NTP server or two (or three).
#server ntp.your-provider.example
server vision.eusterholz.tld       # DCF77 Stratum-1
server barricade.eusterholz.tld
server joshua.eusterholz.tld
server ptbtime1.ptb.de             # Physikalisch-Technischen Bundesanstalt

# pool.ntp.org maps to more than 100 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> ***
server de.pool.ntp.org
#server pool.ntp.org
## uncomment for extra reliability

# ... and use the local system clock as a reference if all else fails
# NOTE: in a local network, set the local stratum of *one* stable server
# to 10; otherwise your clocks will drift apart if you lose connectivity.
server 127.127.1.0
fudge 127.127.1.0 stratum 13

# By default, exchange time with everybody, but don't allow configuration.
# See /usr/share/doc/ntp-doc/html/accopt.html for details.
restrict default kod notrap nomodify nopeer noquery

# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1 nomodify

# Clients from this (example!) subnet have unlimited access,
# but only if cryptographically authenticated
#restrict 192.168.123.0 mask 255.255.255.0 notrust

# If you want to provide time to your local subnet, change the next line.
# (Again, the address is an example only.)
#broadcast 192.168.123.255

# If you want to listen to time broadcasts on your local subnet,
# de-comment the next lines. Please do this only if you trust everybody
# on the network!
#disable auth
#broadcastclient

Normalerweise enthält die Datei: 'ntp.conf' mindestens eine oder mehrere Zeilen mit dem Schlüsselwort: 'server' (gelbe Markierung). Jede dieser Zeilen gibt eine Referenzzeitquelle an, die entweder ein anderes Gerät im Netzwerk sein kann, oder auch eine Funkuhr, die direkt an den Computer angeschlossen ist.
Referenzzeitquellen werden durch eine IP-Adresse angegeben oder auch durch einen Hostname. Wenn es sich bei einer IP-Adresse um ein real existierendes Gerät im Netzwerk handelt, geht der NTP-Dämon davon aus, dass auf dem Gerät mit der IP-Adresse ein weiterer NTP-Dämon läuft, den er kontaktieren kann. Weiterhin verwendet NTP einige Pseudo-IP-Adressen, die normalerweise im Netzwerk nicht verwendet werden, um spezielle Zeitquellen wie z.B. Funkuhren zu adressieren.
Um die eigene Systemuhr (CMOS-Uhr) anzusprechen, bei NTP wird diese 'local clock' genannt, verwendet NTP die Pseudo-IP-Adresse: '127.127.1.0'.

NTP synchronisiert nicht einfach alle beliebigen Zeitquellen untereinander, sondern bildet eine Hierarchie von Zeitservern und Clients. Eine Hierarchieebene wird als Stratum bezeichnet, wobei Stratum-0 die höchste Ebene darstellt. Da die lokale CMOS-Uhr nicht sehr genau ist, sollte ihr Stratum auf einen hohem Wert gesetzt werden (z.B. Stratum 13). Je größer der Wert ist, um so ungenauer ist die Zeit anzunehmen (grüne Markierung).

In der Datei: '/etc/driftfile' steht die Zeit, die pro Sekunde zur lokalen Zeit addiert oder subtrahiert wird, damit sich die Systemzeit langsam der Referenzzeit anpassen kann (orange Markierung).

Mit 'statdir' wird das Verzeichnis festgelegt indem Statistiken abgelegt werden. Die Einstellungen für die generierten Statistiken werden in den folgenden Zeilen festgelegt (blaue Markierung).

Wurden Änderungen in der NTP-Konfigurationsdatei gemacht so ist der Dämon mit: '/etc/init.d/ntp-server restart' erneut zu starten.

Damit der Rechner im eigenen Netzwerk als Time-Server arbeiten kann, müssen in der Konfigurationsdatei: '/etc/inetd.conf' folgende vier Zeilen aktiviert werden (Kommentarzeichen entfernen):

Auszug aus: /etc/initd.conf (ca. Zeile: 23)

#:INTERNAL: Internal services
#echo           stream  tcp     nowait  root    internal
#echo           dgram   udp     wait    root    internal
#chargen        stream  tcp     nowait  root    internal
#chargen        dgram   udp     wait    root    internal
#discard        stream  tcp     nowait  root    internal
#discard        dgram   udp     wait    root    internal
daytime         stream  tcp     nowait  root    internal
daytime         dgram   udp     wait    root    internal
time            stream  tcp     nowait  root    internal
time            dgram   udp     wait    root    internal

Nach dem Neustart des Super-Dämons: 'inetd' können Clients den Time-Server nutzen.

Anmerkungen

Um sich alle eingebunden Zeitserver anzeigen zu lassen, bzw. um die Funktionalität des Timer-Server zu prüfen, können die Kommandos: 'ntpq -p' bzw. 'ntpdc -p' auf der Konsole genutzt werden. Hier ein Beispiel mit: 'ntpq -p':

experimental:~# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*vision.eusterho .DCFa.           1 u   21   64   37    0.446  327.837 153.523
-barricade.euste LOCAL(0)        11 u   16   64   37    0.335  -44.103  14.003
joshua.eusterho  192.168.0.10     2 u   17   64   37    0.376   12.581  21.500
+ntp1.ptb.de     .PTB.            1 u   19   64   37   81.198  296.847  69.238
+81-5-136-18.dsl 152.78.128.61    3 u   19   64   37   93.685  315.367  13.559
LOCAL(0)         LOCAL(0)        13 l   20   64   37    0.000    0.000   0.004

In der Spalte: 'remote' sind die abgefragten Time-Server von der obrigen Konfiguration zu finden. In der Spalte: 'st' ist der jeweilige Stratum-Wert zu entnehmen. Die erste Zeile repräsentiert einen Time-Server mit DCF77-Empfänger mit dem Stratum-Wert '0'.

Der NTP-Dämon berichtigt die Zeit nur in kleinen Schritten, dieses geschieht durch Dehnung, bzw. Stauchung der Systemzeit. Ist die Differenz zwischen Referenzzeit und Systemzeit zu groß findet eine Korrektur nicht statt, da der Dämon von einer falschen Referenzzeit ausgeht. In diesem Fall sollte die Systemzeit ungefähr mit dem Kommando: 'hwclock' festgelegt werden, alternativ kann auch die Zeit im BIOS des Rechners eingestellt werden.

Für den Zugriff auf einen Time-Server wird der UDP-Port: '123' verwendet, hierüber erfolgt der Zeitabgleich. Es darf kein Firewall verwendet werden der diesen Port filtert.

Homepage: NTP http://www.ntp.org/
The NTP FAQ and HOWTO http://www.eecis.udel.edu/~ntp/ntpfaq/NTP-a-faq.htm
Manualseiten zu: ntp; ntpd man ntp; man ntpd
System-Dokumentation: ntp; ntp-server /usr/share/doc/ntp; /usr/share/doc/ntp-server
The Clock Mini-HOWTO http://www.tldp.org/HOWTO/Clock.html

Home ] Nach oben ] [ NTP-Server ] Synchronisation ] NTP-Client ]

letzte Änderung: 24. März 2005

 

Copyright © 2004 Norbert Eusterholz