
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.conf
Datei
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 iburst
durch ersetzt pool pool.ntp.org iburst
und 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 server
durch ersetzt habe pool
?
Sollte ich immer pool
das Schlüsselwort statt verwenden server
?
Wann sollte ich verwenden pool
und 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 iburst
pool pool.ntp.org iburst
Aktualisieren
Wie vorgeschlagen habe ich pool
anstelle von verwendet server
, aber meine Uhr kann beim Booten trotzdem nicht synchronisiert werden. Zuvor no association id's found
kam 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 „ 1400
Ich konnte den Flash-Status nicht 1400
in der NTP-Dokumentation finden?“?
Aktualisieren
Es funktionierte. Ich habe es iburst
durch ersetzt minpoll 3 maxpoll 4
und 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 server
Leitung 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.