|
Der NTP-Daemon liest seine Konfigurationsparameter aus einer
Datei namens ntp.conf. Auf Unix-ähnlichen Systemen liegt diese
Datei meist im Verzeichis /etc.
Wenn unter Windows eine aktuelle NTP-Version mit Hilfe des GUI-Installers von der
Meinberg NTP-Download-Seite
installiert wurde, liegt die Datei ntp.conf normalerweise in einem Verzeichnis etc\
im Installationsverzeichnis, z.B. in c:\Programme\NTP\etc.
Bei älteren Versionen von NTP für Windows wurde die Datei entweder im Verzeichnis %systemroot%
oder im Verzeichnis %systemroot%\system32\drivers\etc abgelegt, wobei %systemroot%
je nach Windows-Version dem Verzeichnis c:\winnt oder c:\Windows entspricht.
Normalerweise enthält die Datei ntp.conf mindestens eine oder
mehrere Zeilen mit dem Keyword server.
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, der durch einen DNS Nameserver aufgelöst werden kann.
Wenn es sich bei einer IP-Adresse um ein real existierendes Gerät im Netzwerk
handelt, geht der NTP-Daemon davon aus, dass auf dem Gerät mit der IP-Adresse ein
weiterer NTP-Daemon läuft, den er kontaktieren kann.
Außerdem verwendet NTP einige Pseudo-IP-Adressen, die normalerweise im Netzwerk
nicht verwendet werden, um spezielle Zeitquellen wie Funkuhren zu adressieren.
Zum Beispiel benutzt NTP die Pseudo-IP-Adresse 127.127.8.n, um
eine Funkuhr von Meinberg anzusprechen, die direkt an den Computer angeschlossen
ist.
Um seine eigene Systemuhr anzusprechen, bei NTP local clock genannt,
verwendet NTP die Pseudo-IP-Adresse 127.127.1.0. Diese Adresse darf nicht mit
der IP-Adresse 127.0.0.1 verwechselt werden, die auch als localhost oder
Loopback-Interface bezeichnet wird.
Achtung:
Einige Versionen von NTP haben Probleme mit der DNS-Namensauflösung unter Windows,
wenn das Programmpaket mit MD5-Authentifizierung compiliert wurden.
In diesem Fall müssen alle IP-Adressen in der Datei ntp.conf als
numerische Werte eingegeben werden (z.B. 172.16.1.1).
DNS-Hostnamen wie host.domain.com können nicht verwendet werden.
Konfiguration mit Meinberg Funkuhr (Unix)
Unter Unix-ähnlichen Systemen wird der Parse-Treiber verwendet, um
Funkuhren von Meinberg mit serieller Schnittstelle als Referenzzeitquelle
zu verwenden. Der Parse-Treiber ist Bestandteil des NTP-Pakets, muss aber
beim Compilieren des NTP-Paketes explizit aktiviert werden. Bei den gängigen
Linux-Distributionen ist der Parse-Treiber in den vorcompilierten Paketen aktiviert,
bei einigen älteren Solaris-Versionen jedoch nicht.
Auf der
Meinberg Software Download-Seite
ist ein Treiberpaket für Meinberg Einsteckkarten unter Linux verfügbar,
welches es erlaubt, die Einsteckkarten zu konfigurieren sowie deren
Statusinformationen anzuzeigen. Zusätzlich ermöglicht der Treiber dem
NTP-Daemon unter Linux, die Referenzzeit von der Einsteckkarte anstatt
über die serielle Schnittstelle zu lesen.
Dieser Treiber wird nur für die Einsteckkarten benötigt, nicht jedoch
für Funkuhren, die direkt über eine serielle Schnittstelle angebunden sind.
Die unten aufgeführten Konfigurationsschritte müssen von einem Benutzer
mit genügend Rechten auf dem System durchgeführt werden, z. B. dem Benutzer root.
Der Parse-Treiber spricht Funkuhren als Devices mit Namen
/dev/refclock-n an, wobei n ein Index von 0 bis 3
sein kann, da der Parse-Treiber bis zu 4 Funkuhren gleichzeitig verwenden kann.
Jedes der verwendeten Devices wird als symbolischer Link zu einem einem realen
Device angelegt, hinter dem sich eine Funkuhr verbirgt. Meist handelt es sich
bei dem realen Device um eine serielle Schnittstelle, an die eine Funkuhr
angeschlossen ist, unter Linux kann der Link jedoch auch auf ein Device zeigen,
hinter dem sich eine Einsteckkarte verbirgt.
Jede der Funkuhren muß in der Datei ntp.conf durch eine Zeile
mit dem Keyword server und einer Pseudo-IP-Adresse
127.127.8.n angegeben werden. Dabei muß der Wert für
n jeweils der Index-Nummer entsprechen, die für das
oben erwähnte symbolische Device /dev/refclock-n
verwendet wurde.
Auf die Pseudo-IP-Adresse folgt noch ein Parameter mode m,
der den Typ der Funkuhr angibt, die unter dieser Adresse angesprochen wird.
Die Tabelle unten gibt die für Funkuhren von Meinberg verwendeten Werte für
den mode-Parameter und die zugehörigen Funkuhr-Typen an:
| Mode-Nummer |
Funkuhr |
Trust Time |
| mode 0 |
Meinberg PZF-Funkuhr mit TCXO |
12 Stunden |
| mode 1 |
Meinberg PZF-Funkuhr mit OCXO |
4 Tage |
| mode 2 |
Meinberg Standard Time String mit 9600, 7E2 |
30 Minuten |
| mode 7 |
Meinberg GPS mit OCXO, 19200, 8N1 |
4 Tage |
Wenn beispielsweise eine einzelne Funkuhr an der ersten seriellen Schnittstelle
des Computers angeschlossen ist, wird zunächst ein symbolischer Link angelegt,
der auf die erste serielle Schnittstelle verweist.
Unter Linux hat diese Schnittstelle oft den Namen /dev/ttyS0, kann aber je nach
Unix-System auch anders heißen:
ln -s /dev/ttyS0 /dev/refclock-0
Wenn eine Einsteckkarte mit dem
Meinberg Linux-Treiber
als Referenzzeitquelle für NTP verwendet werden soll, muß der symbolische Link auf
die Gerätedatei zeigen, hinter der sich die Einstekkarte verbirgt:
ln -s /dev/mbgclock0 /dev/refclock-0
Achtung: Aktuelle Versionen des Linux-Treibers erzeugen symbolische
Links /dev/refclock-* automatisch durch das Linux udev-System.
Bei älteren Versionen des Treibers (vor v3.0.0) dagegen mußte der Link
manuell angelegt werden und die Gerätedatei für die Einsteckkarte
hieß /dev/mbgntp. Im Zweifelsfall gibt die README- oder LIESMICH-Datei
des Treiberpaketes Auskunft.
Im nächsten Schritt wird die Datei ntp.conf angepaßt, um dem
NTP-Daemon mitzuteilen, welche Funkuhr er verwenden soll.
Die Datei muß eine server-Zeile für das Gerät refclock-0
enthalten, das oben angelegt wurde. Wenn die Funkuhr das Meinberg
Standard-Zeittelegramm mit 9600 Baud und Datenformat 7E2 ausgibt,
muß der Mode-Parameter laut der Tabelle oben mit 2 angegeben werden.
Wenn der Linux-Treiber für eine Einsteckkarte verwendet wird, muss
immer mode 2 verwendet werden:
server 127.127.8.0 mode 2
Zusätzlich sollte ein server-Eintrag für die Local Clock angelegt
werden, die als Fallback-Reserve genutzt werden kann, wenn keine andere
Referenzzeitquelle mehr verfügbar sein sollte.
Da die Local Clock nicht sehr genau ist, sollte ihr Stratum auf einen
niedrigen Wert gesetzt werden, z.B. Stratum 12:
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 12
Um die Änderungen wirksam werden zu lassen, muß der NTP-Daemon neu
gestartet werden.
Wenn nach dem Start des NTP-Daemons die
Ausgabe des Befehls ntpq -p
eine Referenzzeitquelle mit der Bezeichnung generic
auflistet, unterstützt der NTP-Daemon die Funkuhr.
Wenn keine Referenzzeitquelle mit der Bezeichnung generic
angezeigt wird, wurde das NTP-Paket eventuell ohne Unterstützung für die
Parse-Uhren compiliert, oder dem NTP-Daemon wird der Zugriff auf die
Gerätedatei verwehrt ("Permission denied").
Die Syslog-Meldungen des NTP-Daemon nach dem Start geben Aufschluß
über den tatsächlichen Grund für das Problem.
Der Grund für Meldungen "Permission denied" kann bei aktuellen Linux-Distributionen
eins der Programme AppArmor oder SELinux sein, die den Zugriff auf Dateien und Geräte
kontrollieren und beschränken. Einzelheiten dazu und wie man das Problem beseitigt
finden sich den Dateien README und LIESMICH aus dem Linux-Treiberpaket.
Wenn der NTP-Daemon ohne Unterstützung für die Parse-Uhren compiliert wurde,
muß das NTP-Paket auf dem Zielsystem neu compiliert werden.
Dazu muß ein Compiler auf dem System installiert sein, außerdem müssen die
Programmquellen vorliegen, die in der Standard-NTP-Distribution enthalten sind.
In dem Beispiel unten ist name der Hauptname einer NTP-Distribution.
NTP-Distributionen stehen als Archive mit Namen name.tar.gz zum Download
im Internet bereit und müssen auf dem Zielsystem entpackt werden:
tar xvzf name.tar.gz
Durch diesen Befehl wird ein neues Verzeichnis name angelegt, das noch
weitere Unterverzeichnisse enthält .
Um das Paket zu compilieren, wechselt man in das neu angelegte Verzeichnis,
wo man die Befehle configure und make aufruft, um das Programmpaket zu
compilieren:
cd name
./configure --enable-MEINBERG
make
Nachdem die Compilierung erfolgreich beendet wurde, liegt jedes der
erzeugten Programme in einem Unterverzeichnis mit dem gleichen Namen
wie das Programm selbst. Wenn sichergestellt ist, dass nicht bereits ein
anderer NTP-Daemon läuft , kann der neu erzeugte Daemon gestartet werden.
Wenn es sich um ein NTP-Paket mit der Version 4.x handelt, lautet der
Befehl
ntpd/ntpd
Im Fall einer NTP-Version 3.x dagegen lautet der Befehl
xntpd/xntpd
Der Befehl ntpq -p kann verwendet werden, um die
korrekte Funktionsweise zu überprüfen. Wenn alles wunschgemäß
arbeitet, können die neuen ausführbaren Dateien in das Zielverzeichnis kopiert
werden, wo sie beim Start des Systems gefunden werden.
Die Installation der Programme kann normalerweise geschehen durch Eingabe des
Befehls
make install
Falls vorher bereits ein NTP-Paket installiert war, muß sichergestellt sein,
dass die alten NTP-Programme gelöscht oder von den neuen Programmen überschrieben
werden, so dass beim Systemstart nicht versehentlich der alte NTP-Daemon gestartet
wird. Der neue Daemon muß in dem Verzeichnis liegen, wo die Strartup-Scripts ihn
erwarten.
Besonders bei einem Versionssprung von NTP v3.x auf NTP v4.x sollte die geänderte
Namensgebung berücksichtigt werden, etwa von xntpd nach ntpd.
Konfiguration mit Meinberg Funkuhr (Windows)
Auf Windows-Systemen werden die meisten Funkuhren von NTP
noch nicht direkt unterstützt. Stattdessen kann der
Treiber von Meinberg
eingesetzt werden, um die Windows-Systemzeit zu synchronisieren.
Der NTP-Service stellt dann lediglich die synchronisierte Windows-Systemzeit
im Netzwerk bereit.
Wenn NTP für Windows mit Hilfe des GUI-Installers von der
Meinberg NTP-Download-Seite
installiert wird und das Setup-Programm das bereits installierte Treiberpaket
findet, schlägt der Installer eine entsprechende NTP-Konfiguration
mit dem Titel "Follow Meinberg Time Service" vor.
Für diese Konfiguration muß die Datei ntp.conf die folgenden
Zeilen enthalten:
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 0 # disciplined by radio clock
Da die Windows-Systemzeit von einer Funkuhr synchronisiert wird,
kann in diesem Fall der Stratum-Wert der Local Clock hoch auf 0 gesetzt
werden. Der NTP-Server ist dann als Stratum-1-Server im Netzwerk sichtbar.
Anders als vormals auf dieser Seite beschrieben, sollte die Konfigurationsdatei
nicht die Zeile disable ntp enthalten. Wenn diese Zeile enthalten
ist, wird der NTP-Server eventuell nicht von seinen Clients akzeptiert.
Ebenso sollte kein driftfile angegeben werden. Wenn bereits eine Datei
mit dem Namen ntp.drift auf dem Rechner existiert, sollte diese Datei
gelöscht werden. Andernfalls könnte der NTP-Service versuchen,
basierend auf dem Wert aus dem Driftfile die Drift der Systemzeit zu kompensieren.
Damit würde der NTP-Service gegen den Funkuhr-Treiber arbeiten, wodurch nur
eine schlechte Zeitsynchronisation erzielt würde.
Konfiguration ohne Funkuhr
Die Konfiguration der Computer ohne eigene Funkuhr ist sehr
einfach. Für jeden Timeserver im Netzwerk, der als Referenzzeitquelle
genutzt werden soll, muß die Datei ntp.conf eine
server-Zeile mit der IP-Adresse oder dem Hostname
des Gerätes enthalten. Dabei sollten Timeserver mit gutem Stratum-Wert
angegeben werden, die auf kurzen Netzwerk-Wegen erreichbar sind.
Zusätzlich kann auch hier die Local Clock des Computers angegeben
werden, die als Fallback-Reserve genutzt werden kann, wenn keine
andere Referenzzeitquelle erreichbar sein sollte.
Da die Local Clock hier nicht durch ein anderes Programm synchronisiert
wird, sollte sie auf einen relativ schlechten Stratum gesetzt werden,
z.B. 12. Dadurch ist sichergestellt, dass Timeserver im Netz mit besserem
Stratum bevorzugt werden:
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 12 # not disciplined
server ntp_server_1
server ntp_server_2
server ...
Im Beispiel oben stehen ntp_server_1, ntp_server_2, usw, für den
Hostname oder die IP-Adresse existierender Timeserver.
Zusätzliche Konfigurationsparameter
Im laufenden Betrieb ermittelt der NTP-Daemon, wie sehr
die Systemzeit des Computers von der Referenzzeit wegdriftet.
Der Daemon kann diesen ermittelten Wert in einer Datei speichern,
von wo er ihn beim nächsten Start wieder lesen kann.
Hierdurch wird die Dauer der Zeitsynchronisierung beim erneuten
Start des Daemons verkürzt. Um diese Möglichkeit zu nutzen, muß
der Name des Driftfiles in einer Zeile der Datei ntp.conf
angegeben werden, z.B.:
driftfile /etc/ntp.drift
Achtung: Wenn das NTP-Programm unter Windows zusammen mit der
Meinberg-Treibersoftware arbeitet, sollte kein Driftfile
angegeben werden. Siehe Abschnitt
Konfiguration mit Meinberg Funkuhr (Windows).
Es gibt eine Anzahl weitere Optionen, die in der Konfigurationsdatei
eingestellt werden können.
Nähere Informationen dazu findet man in der NTP-Dokumentation.
|