Ich versuche also, mein aktuelles NTP-Setup zu debuggen, und habe festgestellt, dass der Versatz von meinem einzelnen konfigurierten Server mehr als 3 Sekunden beträgt und nicht angepasst wird. Das Sternchen auf LOCAL (0) in der ntpq-Ausgabe scheint darauf hinzudeuten, dass das System problemlos mit sich selbst synchronisiert und nicht mit dem Server 10.130.33.201 (einer weiteren Linux-Box auf unserem System, mit der alles synchronisiert werden soll).
ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
10.130.33.201 LOCAL(0) 9 u 49 64 377 0.242 -3742.2 1.049
*LOCAL(0) .LOCL. 10 l 2 64 377 0.000 0.000 0.001
Und das ist meine ntp.conf-Datei. Geschrieben von jemand anderem, daher bin ich mir nicht 100% sicher, ob alles korrekt ist.
server 10.130.33.201 burst iburst minpoll 4 maxpoll 11
driftfile /mnt/active/etc/ntp.drift
restrict -4 default nomodify nopeer notrap
restrict -6 default ignore
# Undisciplined Local Clock. This is a fake driver intended for backup
# and when no outside source of synchronized time is available.
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
Ich habe über Burst und Iburst und Minpoll / Maxpoll gelesen, daher ist mir klar, dass diese möglicherweise nicht benötigt werden, aber ich denke, das hat nichts mit meiner aktuellen Ausgabe zu tun.
Aufgrund der Bereitstellung dieser Konfigurationsdatei ist viel Arbeit erforderlich, um sie zu ändern. Daher hoffe ich, dass nichts wirklich geändert werden muss. Ich hoffe, dass ich nicht verstehe, wie NTP funktioniert.
BEARBEITEN -
Es sieht also so aus, als wäre dies ein Duplikat dieser Frage , aber ich glaube nicht, dass das Poster eine ausreichende Antwort erhalten hat. Daher möchte ich immer noch wissen, warum die Ortszeit dem Server vorgezogen wird. Gemäß einer der folgenden Antworten habe ich versucht, das prefer
Schlüsselwort in der Serverzeile der Konfiguration zu verwenden und neu zu starten, aber das scheint keine Auswirkungen gehabt zu haben.
Wenn ich alle "lokalen" Zeilen in der Konfiguration entferne, wie aus der Antwort auf die andere Frage hervorgeht, was passiert, wenn der Server nicht erreichbar ist? Stirbt NTP oder versucht es einfach weiter?
WICHTIGE BEARBEITUNG -
Ok, normalerweise hat 10.130.33.201 (Der "Server") keinen Zugang zum Internet und verfügt nicht über eine GPS-Zeitquelle. Der wichtige Teil ist, dass alle Geräte im System dieselbe Zeit wie der Server haben, unabhängig davon, wie korrekt diese Zeit tatsächlich ist.
Um zu sehen, was passieren würde, habe ich einen der NTP-Poolserver zur Konfigurationsdatei des Servers hinzugefügt, damit dort Zeit und nicht Zeit von lokal kommt. Es wird jetzt korrekt Zeit vom NTP-Zeitserver abgerufen.
Danach synchronisieren sich die Clients jetzt mit dem Server, anstatt LOCAL (0) zu bevorzugen.
ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*10.130.33.201 38.229.71.1 3 u 58 64 377 0.216 715621. 1.001
LOCAL(0) .LOCL. 10 l 18 64 377 0.000 0.000 0.001
NEUE FRAGE - Wenn mein Server lokal verwendet (ursprüngliches Beispiel), scheinen die Clients zu sagen: "Oh, 10.130.33.201 verwendet LOCAL (0). Hmm, ich habe auch einen LOCAL (0) -Server - - Ich werde das einfach direkt verwenden, anstatt die gleichen Informationen über 10.130.33.201 zu erhalten. "
Ist das der Fall? Versuchen sie, "direkt zur Quelle" zu gelangen, die fälschlicherweise LOCAL (0) ist? Ich brauche meinen Server, um Zeit von LOCAL (0) zu bekommen, und ich brauche die Clients, um Zeit vom Server zu bekommen. Im Moment ist das Entfernen des "lokalen" Servers aus den Client-Konfigurationsdateien die einzige Option, aber ich möchte verstehen, warum dies geschieht, und wenn möglich, vermeiden Sie es, ihre Konfigurationen zu ändern (Konfigurationsänderungen werden aufgrund dessen eine Menge Arbeit bedeuten unsere Umwelt...).
Auch dies sieht aus wie ein weiteres Duplikat ohne eine gute Antwort.
Antworten:
Da nur ein NTP-Server konfiguriert ist, ist der Algorithmus nicht ganz sicher, wem er vertrauen soll. Obwohl die Schicht mit dem Remote-Host niedriger ist, hält der Algorithmus die Ortszeit für vertrauenswürdiger.
Versuchen Sie, das
prefer
Schlüsselwort mit Ihrerserver
Anweisung zu verwenden, um dies als bevorzugte Zeitquelle festzulegen.Für eine wirklich ausreichende Antwort werden Sie sich in die Eingeweide eines sehr komplexen Algorithmus vertiefen. Die Dokumentation wird nicht einmal zu spezifisch, aber ich bin sicher, dass es da draußen ein Whitepaper oder eine Spezifikation gibt.
Der NTP-Dämon stirbt nicht oder stoppt nicht, beendet jedoch die Synchronisierungszeit, nachdem er den Remoteserver nicht erreicht hat. Aus diesem Grund empfehlen Best Practices, mindestens drei Remote-Server zu verwenden und die LCL nur dann zu verwenden, wenn Sie vom Netzwerk getrennt sind. Es werden drei Server vorgeschlagen, denn wenn es nur zwei gibt und sie nicht übereinstimmen, welchen wird es wählen? Der dritte Server sollte dem Algorithmus helfen, den gefälschten Server zu beseitigen.
Zuletzt ist mir gerade aufgefallen, dass Sie a nicht definieren
driftfile
. Das könnte helfen?quelle
Mir scheint, dass das Intervall des Versatzes (Unterschied zwischen Ihrer Systemzeit und der der NTP-Hostzeit) zu unterschiedlich ist, als dass NTP es richtig einstellen könnte.
Mein Vorschlag,
Danach sollten Sie keine Probleme mehr haben.
quelle
tinker panic 0
Option ntp festlegen , um NTP zu zwingen, Offsets zu akzeptieren. Verwenden Sie dies jedoch nur mit NTP-Servern, von denen Sie sicher sind, dass sie niemals eine schlechte Zeit zurückgeben.prefer
würde den Trick machen.Die Schicht von 10.130.33.201 als LOCAL-Server ist 9, wodurch die daraus berechnete lokale Schicht (9 + 1 = 10) mit der lokalen LOCAL-Server in Schicht 10 konkurriert. Da die lokale LOCAL-Schicht keine Netzwerkverzögerungen oder Jitter aufweist, ist dies der Fall sieht für ntpd möglicherweise etwas besser aus als für die Remote-Version.
Wenn diese Konfiguration funktionieren soll, setzen Sie den 'Master'-LOCAL-Server auf eine Schicht unter 9. Nicht zu niedrig, wenn eine auf einen Schicht 1-Server zurückführbare Zeit bevorzugt werden soll.
quelle
Ich weiß, das ist alt, aber ich denke, Sie haben Recht. Niemand zeigt eine Möglichkeit, ntpd-Probleme zu debuggen. Es stellt sich heraus, dass es machbar ist.
Ich denke, Sie waren auf dem richtigen Weg, als Sie vermuteten, dass die Verwendung von LOCAL (0) lokal und auf dem Upstream-Server ein Problem sein könnte.
Es war sicherlich auf einer Zeitinsel mit 4 Servern, mit denen ich ein ähnliches Problem hatte. Diese waren alle darauf ausgelegt, Gleichaltrige zu sein, also möglicherweise ein anderes Problem als das Ihre.
Zunächst gibt es jedoch eine bessere Möglichkeit, mit Zeitinseln umzugehen, die als Orphan-Modus bezeichnet wird und von ntpd-Versionen der letzten Jahre unterstützt wird:
Orphan-Modus auf doc.ntp.org
Anfangs hatten alle 4 Server die gleiche Schicht von 10 und bevorzugten ihre lokale Uhr. Ich habe das behoben und trotzdem bevorzugten sie ihre lokale Uhr (die Schicht scheint jedoch wichtig zu sein).
Ich habe den Befehl ntpq pe (peer), as, rv verwendet, um einen Überblick über das Geschehen zu bekommen. Sie müssen rv (readvar) für die Zuordnungsnummer verwenden, damit der Server die Informationen speichert. pe und as scheinen nach demselben Index sortiert zu sein, sodass Sie auf diese Weise die as-Nummer erhalten können. as hat ein Feld namens Bedingung, das möglicherweise den Wert "Zurückweisen" anzeigt, wenn der Server nicht gefällt.
In der RV-Ausgabe befindet sich ein Feld namens Flash. Wenn alles in Ordnung ist, ist dies Null. Wenn nicht, handelt es sich um eine Bitmaske (hexadezimal angezeigt) der Probleme. Sie können hier nachgeschlagen werden:
ntpd interne Dekodierungen
Das Problem, das ich hatte, war 0800 peer_loop. Es stellte sich heraus, dass das Refid der Uhr wichtig ist. Als LOCAL (0) sowohl auf der lokalen Uhr als auch vom Remote-Server aus angezeigt wurde, dachte ntpd, dass es eine Schleife gab. David Mills bestätigt, dass in Beiträgen auf comp.protocols.time 'So vermeiden Sie Schleifen in NTP' (Ich habe mein Limit von 2 Links erreicht, sorry!)
Die Verwendung des refid-Arguments zum Fudge zum Festlegen einer eindeutigen refid hat nicht funktioniert - es wird beim Empfänger weiterhin als LOCAL (0) angezeigt.
Was zu funktionieren schien, war die Verwendung eindeutiger Instanznummern für den lokalen Treiber. 127.127.1. [0-3]. Verwenden Sie für Server und Fudge Line dieselbe ID. Als ich dies tat, synchronisierten sich die Server im Allgemeinen mit dem Server mit der niedrigsten Schicht, der normalerweise seine lokale Uhr verwendete. Es wurde jedoch gelegentlich versucht, einen der anderen Server zu verwenden, die ihn als Quelle verwendeten. Die Zeiten wurden jedoch synchronisiert und scheinen so zu bleiben.
Wahrscheinlich viel zu spät, um zu helfen, aber ich biete es an, um zu zeigen, dass NTP für Logik und Fehlerbehebung geeignet ist. Ich habe Stunden gebraucht, um die Antwort durch Ausprobieren zu erreichen, und dann die Dokumente später gefunden.
quelle
Verwenden Sie iburst, um den Server zu zwingen, die NTP-Anforderung an das gewünschte NTS zu senden, selbst wenn eine Anforderung fehlschlägt
quelle