Frage Einrichten eines lokalen Stratum 2 NTP-Servers


Ich versuche, NTP in einem lokalen Netzwerk einzurichten, das keine (und niemals) Internetverbindung hat. Die Hauptpriorität besteht darin, dass die Maschinen im Netzwerk miteinander synchronisiert werden, selbst wenn die Synchronisierungszeit nicht 100% genau ist.

Wir müssen auch eine NTP-Hierarchie verwenden, um das Setup eines implementierten Systems zu replizieren. Ich möchte eine Hierarchie von Maschinen wie folgt haben:

Moon  (Main Server running Windows) (10.1.3.10)
|____Earth   (Linux x64 client) (10.1.3.1)
|____Mars    (Linux x64 client) (10.1.3.2)
|____Saturn  (Linux x64 client) (10.1.3.3)
|____RackCard23   (Linux x64 client and server to the two machines below)  (10.1.3.23)
     |___RackCard21   (Linux x64 client) (10.1.4.21)
     |___RackCard22   (Linux x64 client) (10.1.4.22)

Beachten Sie, dass die RackCards über zwei Ethernet-Ports verfügen, von denen einer mit dem 10.1.3.x-Netzwerk und der andere mit dem 10.1.4.x-Netzwerk verbunden ist. RackCard23, die den Masterserver Moon synchronisiert, tut dies im Netzwerk 10.1.3.x und die RackCard22 / 23 wird mit RackCard23 im Netzwerk 10.1.4.x verbunden. Dies liegt daran, dass die RackCards22 / 23 das Netzwerk nicht zur Synchronisierung der Uhrzeit und zur Replizierung eines endgültigen bereitgestellten Systems verlassen soll.

Bis jetzt habe ich es geschafft, alles, was durch die Synchronisation von Moon synchronisiert werden sollte, korrekt zu synchronisieren (einschließlich RackCard23).

Aber ich habe Schwierigkeiten, RackCard22 und 23 von RackCard23 zu synchronisieren.

[root@RackCard23]# cat /etc/ntp.conf
# NTP Deamon Configuration File "ntp.conf"
# Created on 27/04/2010
# Original backed-up as "ntp.conf.backup"

server 10.1.3.10 iburst minpoll 4 maxpoll 4 prefer #This is what we want to happen
fudge   127.127.1.0 stratum 2   #Not sure about these two lines, was trying to force it to be a stratum 2 server
fudge   127.127.0.1 stratum 2

# Drift file.  Put this in a directory which the daemon can write to.
# No symbolic links allowed, either, since the daemon updates the file
# by creating a temporary in the same directory and then rename()'ing
# it to the file.
driftfile /var/lib/ntp/drift
restrict 10.1.3.10 mask 255.255.255.255 nomodify notrap noquery

#Attempt to get to act as an NTP Server
broadcast 10.1.4.255

restrict 10.1.3.21 mask 255.255.255.255 nomodify notrap
restrict 10.1.4.21 mask 255.255.255.255 nomodify notrap

Dies ist die Ausgabe von ntptrace:

[rootRackCard23]# /usr/sbin/ntptrace
localhost.localdomain: stratum 16, offset 0.000000, synch distance 0.000030

Wie Sie sehen können, meldet sich die Maschine selbst als Stratum 16-Server, obwohl sie mit einem "Stratum 1" -Server (Moon) synchronisiert wurde:

[root@RackCard23 awd]# /usr/sbin/ntpdate -d 10.1.3.10
21 Jun 13:55:09 ntpdate[19410]: ntpdate 4.2.2p1@1.1570-o Tue May 19 13:57:56 UTC 2009 (1)
Looking for host 10.1.3.10 and service ntp
host found : 10.1.3.10
transmit(10.1.3.10)
receive(10.1.3.10)
transmit(10.1.3.10)
receive(10.1.3.10)
transmit(10.1.3.10)
receive(10.1.3.10)
transmit(10.1.3.10)
receive(10.1.3.10)
transmit(10.1.3.10)
server 10.1.3.10, port 123
stratum 1, precision -6, leap 00, trust 000
refid [LOCL], delay 0.04135, dispersion 0.00383
transmitted 4, in filter 4
reference time:    cfc99402.e010624d  Mon, Jun 21 2010  8:32:18.875
originate timestamp: cfc9dfad.48000000  Mon, Jun 21 2010 13:55:09.281
transmit timestamp:  cfc9dfad.47e27179  Mon, Jun 21 2010 13:55:09.280
filter delay:  0.04155  0.04155  0.04137  0.04135
         0.00000  0.00000  0.00000  0.00000
filter offset: -0.01448 0.000781 0.000537 0.000394
         0.000000 0.000000 0.000000 0.000000
delay 0.04135, dispersion 0.00383
offset 0.000394

21 Jun 13:55:09 ntpdate[19410]: adjust time server 10.1.3.10 offset 0.000394 sec

Die Konfiguration der Clients (RackCard21 / 22) sieht folgendermaßen aus:

[root@RackCard21]# cat /etc/ntp.conf
# NTP Deamon Configuration File "ntp.conf"
# Created on 27/04/2010
# Original backed-up as "ntp.conf.backup"

server 10.1.4.23 iburst minpoll 4 maxpoll 4 prefer

server 127.127.1.0
fudge   127.127.1.0 stratum 10

# Drift file.  Put this in a directory which the daemon can write to.
# No symbolic links allowed, either, since the daemon updates the file
# by creating a temporary in the same directory and then rename()'ing
# it to the file.
driftfile /var/lib/ntp/drift

# restrict 127.0.0.1

restrict None mask 255.255.255.255 nomodify notrap noquery

Und ntptrace gibt folgendes:

[root@RackCard21]# /usr/sbin/ntpdate -d 10.1.4.23
21 Jun 14:04:34 ntpdate[14381]: ntpdate 4.2.2p1@1.1570-o Tue May 19 13:57:56 UTC 2009 (1)
Looking for host 10.1.4.23 and service ntp
host found : 10.1.4.23
transmit(10.1.4.23)
receive(10.1.4.23)
transmit(10.1.4.23)
receive(10.1.4.23)
transmit(10.1.4.23)
receive(10.1.4.23)
transmit(10.1.4.23)
receive(10.1.4.23)
transmit(10.1.4.23)
10.1.4.23: Server dropped: strata too high
server 10.1.4.23, port 123
stratum 16, precision -20, leap 11, trust 000
refid [10.1.4.23], delay 0.02568, dispersion 0.00000
transmitted 4, in filter 4
reference time:    00000000.00000000  Thu, Feb  7 2036  6:28:16.000
originate timestamp: cfc9dfef.12b79516  Mon, Jun 21 2010 13:56:15.073
transmit timestamp:  cfc9e1e2.aeae7d56  Mon, Jun 21 2010 14:04:34.682
filter delay:  0.02573  0.02571  0.02568  0.02568
         0.00000  0.00000  0.00000  0.00000
filter offset: -499.609 -499.609 -499.609 -499.609
         0.000000 0.000000 0.000000 0.000000
delay 0.02568, dispersion 0.00000
offset -499.609286

21 Jun 14:04:34 ntpdate[14381]: no server suitable for synchronization found

Es kann also keinen geeigneten Server finden, weil der Server, den ich benutze, meldet, dass es sich um einen Stratum 16-Server handelt (was meiner Meinung nach nichtsynchronisiert ist). Dies ist trotz der Tatsache, dass es synchronisiert ist.

Also muss ich RackCard23 irgendwie zu einer höheren Schicht machen (Idealerweise Schicht 2). Wie gehe ich vor?

Jede Hilfe wird sehr geschätzt, da ich seit Tagen versuche, dies zur Arbeit zu bringen!

BEARBEITEN:

Hallo Christopher,

Ich habe den ntpd neu gestartet, ja;)

Auf allen Linux-Rechnern läuft CentOS 5.4.

Dies ist die Ausgabe der von Ihnen vorgeschlagenen Befehle. Erstens vom Server:

[root@RackCard23]# /usr/sbin/ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 10.1.3.10       .INIT.          16 u    -   16    0    0.000    0.000   0.000
 10.1.4.255      .BCST.          16 u    -   64    0    0.000    0.000   0.001

[root@RackCard23]# /usr/sbin/ntpdc -c monlist
remote address          port local address      count m ver code avgint  lstint
===============================================================================
localhost.localdomain  34566 127.0.0.1              1 7 2      0      0       0
10.1.4.21                123 10.1.4.23              5 3 4    180      5       1
10.1.4.22                123 10.1.4.23              7 3 4      0      2       2

Und dann vom Kunden:

[root@RackCard21]# /usr/sbin/ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 10.1.4.23       .INIT.          16 u   10   16    0    0.000    0.000   0.000
 LOCAL(0)        .LOCL.          10 l   44   64    1    0.000    0.000   0.001

8
2018-06-21 13:56


Ursprung


Wenn Sie keine Internetverbindung haben, was ist Ihre Zeitquelle, habe ich sie irgendwo vermisst? - dbasnett
Die Zeitquelle ist nicht wirklich wichtig, wir sind nicht nach 100% genauer Zeit. Was wir wollen, ist, dass alle Maschinen miteinander synchronisiert sind, selbst wenn das bedeutet, dass ihre Zeiten mehr als 10 Minuten von der tatsächlichen Zeit abweichen. Wir verwenden also eine Zufallsmaschine im Netzwerk als Master-Zeitquelle - also nur die interne Uhr. Was wir wissen und akzeptieren, ist unzuverlässig, aber solange Dinge synchronisiert werden, ist es in Ordnung für uns. In dem tatsächlich implementierten System werden wir eine Zeitquelle auf einem anderen System synchronisieren, auf das wir keine Kontrolle haben, was möglicherweise genauer ist oder nicht. - fwgx


Antworten:


Wie von Chris erwähnt, gibt die Schicht 16 an, dass ein Server nicht wirklich mit einem Server synchronisiert wurde. Nur um sicher zu sein, haben Sie die NTP-Dienste neu gestartet, oder? (service ntpd restartIch versuche nicht zu unterstellen, dass du die einfachen Sachen vermisst, aber ich tue es immer!

Können Sie die Ausgabe einiger weiterer Befehle zur Diagnose bereitstellen?

ntpq -p auf dem Client & Server. Sollte zeigen, welche Server es konfiguriert hat, sowie Statistiken für diese Server.
ntpdc -c monlist auf dem Server. Sollte zeigen, dass die Clients verbunden sind.

Da Sie kein Betriebssystem erwähnt haben, verwende ich auch RHEL-Stilbefehle. Lass es mich wissen, wenn du etwas anderes hast.

EDIT nach weiteren Informationen
OK, sehen Sie Ihre Ausgabe, hier ist Ihr Problem: Sie haben keinen Stratum 1 Server. Tatsächlich benutzt der "Mond" seine lokale Uhr. Es meldet sich selbst als Stratum 16 Server. Zu Ihrer Information würde ein Stratum1-Server eine lokale GPS- oder Atomuhr haben. Hast du eine davon? Andernfalls muss Moon seine Uhr mit einem anderen ntp-Server synchronisieren. Wenn es keinen Netzwerkzugriff hat, müssen Sie seine Schicht täuschen. (Dies erfordert, dass Sie sich nicht zu sehr um "wahre" Zeit kümmern. Was Sie nicht tun, aber jeder, der dies liest, sollte dies beachten.)

Fügen Sie in Moon die folgende Zeile in Ihre ntp.conf-Datei ein: fudge 127.127.1.0 stratum 10. Dadurch wird es seine lokale Uhr als Stratum 10 melden. Damit werden alle anderen Server es über ihre lokale Stratum 16 Uhr nutzen.

- Christopher Karel


5
2018-06-21 14:19



Ergebnisse zu Hauptfragen hinzugefügt. - fwgx
einverstanden mit Christopher. viele Missverständnisse über Strata ntp.org/ntpfaq/NTP-s-algo.htm - dbasnett


Möglicherweise ist ein lokaler Stratum 2-Server nicht mit einem Stratum 1-Server verbunden, und in Ihrem isolierten Netzwerk haben Sie keinen.

Sie können ein billiges GPS-Modul und einen Raspberry Pi, einen Single-Board-Computer mit minimalem Stromverbrauch und reichlich Schnittstellen erhalten. Haken Sie Ihr GPS-Modul an den Raspberry Pi und verbinden Sie den Pi in Ihr Netzwerk, mit der richtigen Software, kann es Ihr Stratum 1 NTP-Server sein, dass Ihr Stratum 2 Server, oder seit Sie es in Ihrem Netzwerk haben, synchronisieren Sie die Zeit mit.


3
2017-12-01 09:36





NTPd wird seine eigene Schicht setzen nach:

  1. Wenn die Drift der lokalen Uhr nicht bewertet wurde, setzen Sie stratum auf 16. Dieser Vorgang dauert ungefähr 15 Minuten auf einem normalen Server, danach wird mit dem nächsten Schritt fortgefahren.
  2. Verbinde dich mit allen konfigurierten Zeitservern, bewerte, welche vertrauenswürdig sind (und daher bevorzugt), setze die lokale Schicht auf die Schicht des niedrigsten zuverlässigen Servers plus eins. Wenn der niedrigste zuverlässige gefundene Server also 1 ist, dann ist local 2.

(Dies ist nicht unbedingt die Reihenfolge der Ereignisse, sondern die Reihenfolge, in der sie zum Festlegen der lokalen Schicht verarbeitet werden.)
(Stratum 16 bedeutet auch nicht unbedingt, dass es nicht synchronisiert ist).


2
2018-06-21 14:03



Könnte es sein, dass, weil Moon ein Windows XP Pro x64-Computer ist, der den Standard-NTP-Dienst W32Time verwendet, der eigentlich Simple NTP (SNTP) ist, dass RackCard23 es nicht als einen richtigen NTP-Server ansieht, also niemals seine Schicht auf etwas anderes setzt als 16? - fwgx
Oh, ich habe das nicht gesehen, bevor ich meinen Post bearbeitet habe. Das ist ziemlich wahrscheinlich. Gibt es einen Grund, keinen geeigneten ntp-Client an der Spitze Ihrer Hierarchie zu verwenden? (Entweder Windows oder Unix basiert) - Christopher Karel


Als eine Art Nebenbemerkung werde ich eine Analyse Ihrer ntpq-Ausgabe hinzufügen. Nur zur allgemeinen Fehlersuche in der Zukunft, für Sie und andere.

Zuerst von Ihrem Server:

[root@RackCard23]# /usr/sbin/ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 10.1.3.10       .INIT.          16 u    -   16    0    0.000    0.000   0.000
 10.1.4.255      .BCST.          16 u    -   64    0    0.000    0.000   0.001

Die erste Spalte zeigt die zwei Server an, für die der Computer konfiguriert ist. Bemerkenswert ist das Fehlen von * oder + das würde einen synchronisierten Peer oder sekundäre Kandidaten anzeigen. Dies bedeutet, dass Ihr Server die Einträge hier nicht verwendet, aber zumindest mit ihnen eincheckt.

Spalte drei, "st", zeigt die Schicht dieser Server an. In diesem Fall zeigt dies an, dass beide Maschinen ihre lokale Uhr verwenden. (Standardschicht von 16) Die letzten drei Spalten zeigen an, wie weit die beiden Uhren entfernt sind. Entweder in einem "Sekundenunterschied in den Takten" -Wert oder in der Latenz zwischen den beiden Maschinen, zu dem Unterschied in dieser Latenz. Hier sind höhere Zahlen schlechter.

Der Grund für nicht synchrone Einträge wie dieser kann von einigen Faktoren abhängen: Wenn der Offset in Takten zu groß ist, dann versucht ntp nicht einmal, da dies einen zu großen Sprung in der lokalen Zeit verursachen würde. Wenn der Jitter zu schlecht wird, wird der Client desynchronisiert, bis sich die Dinge stabilisieren. (Dies ist normalerweise temporär und noch einmal aktiv.) Wenn die konfigurierten Server in Ihrem Fall gleiche oder höhere Stratum-Werte haben, was darauf hindeutet, dass sie als Zeitquellen weniger zuverlässig sind, verwendet der Client sie nicht.

- Christopher Karel


2
2018-06-21 16:21