web-dev-qa-db-fra.com

Pourquoi est NTP Synchronisation sur le serveur local plutôt que à distance?

Donc, j'essaie de déboguer mon fichier actuel NTP Configuration et constaté qu'il décale de mon serveur configuré unique est supérieur à 3 secondes et ne pas ajuster. L'astérisque sur le local (0) dans La sortie NTPQ semble indiquer que le système est heureusement synchronisé avec lui-même plutôt que le serveur 10.130.33.201 (qui est une autre boîte Linux sur notre système que nous voulons que tout se synchronise).

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

Et c'est mon fichier ntp.conf. Écrit par quelqu'un d'autre, donc je ne suis pas sûr à 100% que tout est correct.

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

J'ai lu sur la rafale et sur la balle et la Minpoll/maxpoll, donc je me rends compte que celles-ci pourraient ne pas être nécessaires, mais je ne pense pas que cela ait quelque chose à voir avec mon problème actuel.

De plus, en raison de la façon dont il est déployé, ce fichier de configuration prendra beaucoup de travail à changer, alors j'espère qu'il n'y a rien qui doit être modifié. J'espère que ceci est un cas de moi ne comprenant pas comment NTP fonctionne.


ÉDITER -

Donc, il semble que ceci est un duplicata de cette question , mais je ne pense pas que l'affiche a une réponse suffisante, alors je voudrais toujours savoir Pourquoi L'heure locale est préférée sur le serveur. De plus, selon l'une des réponses ci-dessous, j'ai essayé d'utiliser le mot-clé prefer sur la ligne de serveur de la configuration et le redémarrage, mais cela ne semble pas avoir eu un effet.

Si je supprimons toutes les lignes "locales" dans la configuration comme réponse à l'autre question suggérée, que se passera-t-il si le serveur est inaccessible? Est-ce que NTP meurt ou continue-t-il juste d'essayer?


IMPORTANT EDIT -

OK, normalement, 10.130.33.201 (le "serveur") n'a pas accès à Internet et n'a pas de source de temps GPS à utiliser. La partie importante est que tous les périphériques du système ont la même heure que le serveur, quelle que soit la correction de ce temps.

Donc, juste pour voir ce qui se passerait, j'ai ajouté l'un des serveurs de pool NTP au fichier de configuration du serveur afin qu'il aurait du temps de là plutôt que de passer du temps de local. Il est maintenant correctement correct. Obtient le temps de NTP Time Server.

Après que je l'ai fait, les clients synchronisent désormais avec le serveur plutôt que de préférer local (0)

 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

Nouvelle question - lorsque mon serveur utilise local (exemple original qui a été donné), il semble que les clients disent: "OH, 10.130.33.201 utilise local (0). Hmm, j'ai aussi un serveur local (0) - - Je vais simplement utiliser cela directement plutôt que d'obtenir les mêmes informations via 10.130.33.201 ".

Est-ce le cas? Essaient-ils d'aller "directement à la source" qui est incorrectement local (0)? J'ai besoin de mon serveur pour obtenir le temps de local (0) et j'ai besoin que les clients puissent obtenir le temps du serveur. À l'heure actuelle, supprimer le serveur "local" à partir des fichiers de configuration du client est la seule option, mais je voudrais comprendre pourquoi cela se passe et, le cas éventuellement, évitez de changer de configuration (la modification de configuration sera beaucoup de travail à cause de notre environnement...).

De plus, Ceci ressemble à un autre duplicata sans bonne réponse.

11
JPhi1618

Avec un seul NTP Server configuré, l'algorithme n'est pas tout à fait sûr qui doit faire confiance. Même si, la strate est inférieure avec l'hôte distant, je parie que l'algorithme pense que l'heure locale est plus fiable.

Essayez d'utiliser le mot-clé prefer avec votre server instruction pour définir cela comme source de temps préférentielle.


ÉDITER -

Il semble donc que ceci est un double de cette question, mais je ne pense pas que l'affiche ait une réponse suffisante, alors j'aimerais toujours savoir pourquoi l'heure locale est préférée sur le serveur.

Pour une réponse vraiment suffisante, vous allez creuser dans les entrailles d'un algorithme très complexe. La documentation ne reçoit même pas aussi spécifique mais je suis sûr qu'il y a un livre blanc ou une spécification là-bas.

Si je supprimons toutes les lignes "locales" dans la configuration comme réponse à l'autre question suggérée, que se passera-t-il si le serveur est inaccessible? Est-ce que NTP meurt ou continue-t-il juste d'essayer?

Le NTP Daemon ne meure pas ou ne s'arrête pas, mais il a quitté la synchronisation du temps après qu'il ne parvienne pas à atteindre le serveur distant. C'est pourquoi les meilleures pratiques suggèrent un minimum de trois serveurs distants et ne pas utiliser Le LCL sauf si vous êtes déconnecté du réseau. Trois serveurs sont suggérés car quand il n'y en a que deux, et ils sont en désaccord, ce qui choisira-t-il? Le troisième serveur devrait aider l'algorithme à éliminer le serveur Bogus.

Enfin, je viens de remarquer que vous ne définissez pas un driftfile. Cela pourrait aider?

9
Aaron Copley

Il me semble que l'intervalle de décalage (différence entre votre temps système et celui du NTP Hosttime) est trop différent pour NTP pour la définir correctement. .

Ma suggestion,

 1. Stop the NTP service
 2. As root ntpdate -bs 10.130.33.201 to reset your time to something close
 3. Start the NTP service

Vous ne devriez avoir aucun problème après cela.

7
mdpc

Je sais que c'est vieux, mais je pense que tu as raison. Personne ne montre aucun moyen de déboguer les problèmes de NTPD. S'avère que c'est faisable.

Je pense que vous étiez sur la bonne voie lorsque vous soupçonnez que l'utilisation de local (0) localement et sur le serveur en amont peut être un problème.

C'était certainement sur une île temporelle de 4 serveurs que j'ai eu un problème similaire avec. Celles-ci étaient toutes réglées pour être des pairs les uns des autres, donc éventuellement un problème différent pour le vôtre.

Tout d'abord, il existe une meilleure façon de gérer les îles Temps appelée mode orphelin appuyée par les versions NTPD des dernières années:

mode orphelin sur doc.ntp.org

Initialement, tous les 4 serveurs avaient la même strate de 10 et préféraient leur horloge locale. J'ai réparé cela et ils préféraient toujours leur horloge locale (la strate semble être importante cependant).

J'ai utilisé la commande NTPQ PE (peer), comme, RV pour obtenir une poignée sur ce qui se passait. Vous devez utiliser RV (Readvar) sur le numéro d'association pour le serveur pour vider les informations. PE et comme semblent être triés par le même index afin que vous puissiez obtenir le même nombre de cette façon. Comme cela a un champ appelé condition qui peut montrer la valeur rejet de la valeur s'il n'aime pas le serveur.

Dans la sortie RV est un champ appelé flash. Si tout va bien, cela sera zéro. Sinon, c'est un bitmask (affiché en hexagone) des problèmes. Ils peuvent être levés ici:

décodes internes NTPD

Le problème que j'avais était 0800 peer_loop. Il s'est avéré que le recout de l'horloge est important. Voir la section locale (0) sur l'horloge locale et du serveur distant, NTPD pensant qu'il y avait une boucle. David Mills confirme que dans les messages sur Comp.Protocols.Time'Ow à éviter de boucle dans NTP '(j'ai atteint ma limite de 2 liens, désolé!)

L'utilisation de l'argument de refidement pour fudger pour définir un record unique n'a pas fonctionné - il apparaît toujours comme local (0) au destinataire.

Ce qui semble fonctionner, utilisait des numéros d'instance uniques pour le pilote local. 127.127.1. [0-3]. Utilisez le même ID sur la ligne Server et Fudge. Lorsque je l'ai fait, ces serveurs ont généralement synchronisé le serveur de stratum le plus bas qui a généralement utilisé son horloge locale. Cependant, il a parfois essayé d'utiliser l'un des autres serveurs qui l'utilisaient comme source. Cependant, les temps ont été synchronisés et semblent rester de cette façon.

Probablement beaucoup trop tard pour aider, mais je l'offre à montrant NTP est proposé à la logique et à la dépannage. J'ai pris des heures d'atteindre la réponse par essai et error puis trouvé les documents plus tard.

2
klw14

La strate de 10.130.33.201 en tant que serveur local est de 9, ce qui rend la strate locale calculée à partir de ce (9 + 1 = 10) concurrence avec le serveur local local de Stratum 10. Étant donné que la strate locale locale n'a pas de retards de réseau ni de gigue, Peut sembler légèrement meilleur à NTPD que la télécommande.

Si vous souhaitez que cette configuration fonctionne, définissez le serveur local 'Master' sur une strate inférieure à 9. Pas trop faible si vous voulez une traçabilité de temps à un serveur Stratum 1 pour être préféré.

2
Koos van den Hout