ntpd synchronisiert die Uhr nicht, wenn die Internetverbindung etwas spät hergestellt wird

ntpd synchronisiert die Uhr nicht, wenn die Internetverbindung etwas spät hergestellt wird

In unserer Produktionsbox habe ich ein Problem mit ntpd. Ich aktiviere die NTP-Funktion für unsere Produktionsbox und stelle ein Problem fest.

Wir starten den ntpd-Daemon im Initialisierungsprozess unserer Box. Während dieser Zeit besteht keine Internetverbindung. Unten ist meine kleine ntp.confDatei

driftfile  /etc/ntp.drift
logconfig =syncstatus
server pool.ntp.org iburst

Unsere Box bekommt etwas spät eine Internetverbindung, sobald die Schnittstelle erscheint. Zu diesem Zeitpunkt sehe ich, dass ntpd die Uhr nicht synchronisiert. Wenn ich das tue ntpq -c as, bekomme ich no association id's found. Ich habe fast 30 Minuten gewartet, aber trotzdemno association id's found

Ich muss ntpd neu starten. Nach dem Neustart synchronisiert ntpd die Uhr und alles funktioniert normal. Aber wenn ich meine Box erneut neu starte, tritt dasselbe Problem auf. Ich muss ntpd erneut neu starten, sobald die Box hochfährt und das Internet erreichbar ist.

Hatte jemand ein ähnliches Problem?

Soll ich den Start von ntpd verzögern, bis die Zeitschnittstelle erscheint?

Aktualisieren

Ich habe noch ein paar Experimente gemacht und sie server pool.ntp.org iburstdurch ersetzt pool pool.ntp.org iburstund mit dieser Änderung synchronisiert ntpd die Uhr automatisch. Ich musste ntpd nicht neu starten. Hier stellt sich mir also eine weitere Frage.

Was ist passiert, als ich serverdurch ersetzt habe pool?

Sollte ich immer pooldas Schlüsselwort statt verwenden server?

Wann sollte ich verwenden poolund wann sollte ich verwenden server?

Ich habe ein bisschen nachgeforscht und herausgefunden, warum es bei mir nicht funktioniert hat, pool is the same as server, except it resolves one name into several addresses and uses them all wenn sie das Gleiche tun .server pool.ntp.org iburstpool pool.ntp.org iburst

Aktualisieren

Wie vorgeschlagen habe ich poolanstelle von verwendet server, aber meine Uhr kann beim Booten trotzdem nicht synchronisiert werden. Zuvor no association id's foundkam es, aber nach der Verwendung von Pool wird die Liste angezeigt.

GW:/admin# ntpq -c lpeer
     remote           refid      st t when poll reach   delay    offset  jitter
===================================================================== =========
 time.google.com .POOL.          16 p    -   64    0    0.000   +0.000   0.002

GW:/admin# ntpq -np
      remote           refid      st t when poll reach   delay   offset  jitter

 time.google.com .POOL.          16 p    -   64    0    0.000   +0.000   0.002

GW:/admin# ntpq -c as
ind assid status  conf reach auth condition  last_event cnt
===========================================================
  1 34173  8811   yes  none  none    reject    mobilize  1

GW:/admin# ntpq -c "rv 34173"
associd=34173 status=8811 conf, bcast, sel_reject, 1 event, mobilize,
srcadr=0.0.0.0, srcport=0, srchost="time.google.com", dstadr=0.0.0.0,
dstport=0, leap=11, stratum=16, precision=-19, rootdelay=0.000,
rootdisp=0.000, refid=POOL, reftime=(no time), rec=(no time), reach=000,
unreach=0, hmode=3, pmode=0, hpoll=6, ppoll=10, headway=0,
flash=1400 peer_dist, peer_unreach, keyid=0, offset=+0.000, delay=0.000,
dispersion=16000.000, jitter=0.002,
filtdelay=     0.00    0.00    0.00    0.00    0.00    0.00      0.00    0.00,
filtoffset=   +0.00   +0.00   +0.00   +0.00   +0.00   +0.00   +0.00   +0.00,
filtdisp=   16000.0 16000.0 16000.0 16000.0 16000.0 16000.0 16000.0 16000.0

Ich sehe den Flash-Status als 1400. Was bedeutet „ 1400Ich konnte den Flash-Status nicht 1400in der NTP-Dokumentation finden?“?

Aktualisieren

Es funktionierte. Ich habe es iburstdurch ersetzt minpoll 3 maxpoll 4und danach funktioniert es beim Neustart. Ich habe den Pool wie folgt verwendet pool pool.ntp.org minpoll 3 maxpoll 4. Ich bin nicht sicher, welchen Unterschied diese Änderung macht.

Ich habe auch gelesen, dass wir die Verwendung von Minpoll und Maxpoll vermeiden sollten. Too frequent for a sustained period and public NTP services may block you. ntpd is already good at dynamically selecting the pool interval.

Ich danke Ihnen allen jedenfalls für Ihre Hilfe.

Antwort1

Wenn Sie ntpd einen Server angeben, löst es beim Start den Hostnamen in eine IP-Adresse auf und versucht, die IP-Adresse zum Synchronisieren der Zeit zu verwenden. Wenn dieser Hostname nicht aufgelöst werden kann, wird er gelöscht. Selbst wenn er aufgelöst wird, merkt es sich nicht den Hostnamen, sondern nur die IP-Adresse.

Wenn der Server in Ihrer serverLeitung ein lokaler Host mit einer festen IP-Adresse (und nicht einem dynamischen Pool) wäre, könnten Sie den Hostnamen durch die echte IP-Adresse ersetzen. Diese sollte dann auch dann nicht gelöscht werden, wenn das Netzwerk beim Start nicht aktiv ist.

Wenn Sie ntpd stattdessen einen Pool bereitstellen, behält es den Hostnamen bei (und markiert ihn mit .POOL.). In regelmäßigen Abständen (auch beim Start) wird dieser Hostname im DNS aufgelöst und alle IPs, die es erhält, als separate Einträge hinzugefügt und einige der ungünstigsten gelöscht.

Sie können einige davon mit dem Befehl ntpq -np oder gleichwertig sehenntpq -n -c peers

Beachten Sie, dass es bei all dem auch Probleme mit der Zeit und mit der Version von ntpd gibt. Genau dieses Problem wurde als Fehler in ntpd gemeldet und es gab mehrere Lösungsvarianten. Einige Versionen von ntpd verschieben die Hostnamenauflösung, wenn sie fehlschlägt, aber es kann trotzdem irgendwann aufgeben; wenn Sie also testen, indem Sie das Netzwerk kurz trennen und wieder verbinden, tritt das Problem möglicherweise nicht auf. Außerdem verwendet ntp einen Polling-Algorithmus, der die Host-Polling-Zeit für erreichbare und nicht erreichbare Hosts exponentiell erhöht (abhängig von Ihrer Uhrenstabilität und der Nützlichkeit des Hosts als Zeitsynchronisation) mit einer Obergrenze von 1024 Sekunden (32 Minuten). Wenn sich also die Netzwerkerreichbarkeit ändert, kann es so lange dauern, bis es dies bemerkt. (Die Polling-Zeiten und -Intervalle sind in aufgeführt. ntpq -np)

Darüber hinaus verwenden einige Startskripte ntpdate oder ähnliche Tools, um die Systemuhr auf einen Server aus ntp.conf einzustellen, sodass die Uhr teilweise synchronisiert ist, bevor ntpd startet. Dies ist ein einmaliger Versuch, und wenn er fehlschlägt, kann ntpd mit einer völlig falschen Uhr starten. Wenn die Uhr nur geringfügig falsch ist, wird ntpd sie reparieren, aber wenn sie stark falsch ist, kann ntpd die Synchronisierung der Uhr verweigern und in einigen Fällen und Versionen von ntpd abstürzen oder beendet werden. Einige Versionen von ntpd haben ihre eigenen einmaligen Optionen für große Schritte der Uhr.

verwandte Informationen