Bonjour, mon précédent n'a eu que peu de succès, mais pour celui là, je compte sur vous, c'est un peu plus de la configuration et moins de l'explication. Alors voila ce que je veux:
Je veux qu'une machine de mon réseau local (appelons le serveur) fasse serveur NTP pour mon réseau local. Par défaut, ce PC n'est pas connecté à Internet, j'utilise donc l'horloge de référence de celui-ci. Bon pas de problème, ça marche bien, mes clients NTP de mon réseau local se synchronise bien avec lui. Maintenant, le problème, c'est que mon serveur peut se connecter à Internet de temps en temps (histoire de prendre une heure de référence un peu plus stable que son horloge au passage), donc pas de souci, je rajoute un pool de serveur NTP public de strate 2 par exemple, et hop, ça marche. Quand je me connecte à Internet, l'algo choisit comme un grand les meilleurs serveurs NTP et tout se passe pour le mieux dans le meilleur des mondes. Quel est mon problème alors?
Et bien cela vient des contraintes qu'on me fournit... en gros, mon PC serveur sera à terme une carte embarquée (dans un avion par exemple) et pi ben les avions, c pas forcemment souvent connecté à internet mais ça peut arriver. Donc on se trouve bien dans mon scénario d'avant, je pense que vous suivez. Maintenant, mon problème, c'est que l'horloge de ma carte peut dévier toute seule de façon assez grande, tout en gardant ses clients bien synchronisé, mais le jour ou on va la connecter sur le Net, badaboume, l'horloge de ma carte a trop dévié et hop, le protocole NTP considère que l'écart et trop grand et il n'applique rien. Alors ma question est la suivante, comment faire??? On pourrait me dire que je pourrais utiliser un ntpdate avant, oui d'accord, mais alors il faut d'abord stopper le démon, lancer ntpdate en connaisssant l'adresse d'un serveur NTP correct, puis relancer le démon. Le genre de truc que le mec qui va brancher l'avion au net a vachement le temps de faire et surtout pas forcement l'occasion de le faire (bon mon exemple sur l'avion est un peu exagéré mais en gros c'est ça quand on utilise une carte embarquée)... alors je vous le demande, comment faire avec NTP? ou plus généralement, si je pouvais intercepter une modification de la topologie réseau, genre attention, tu viens de te connecter sur internet par l'interface eth0, ça m'arrangerait... quelqu'un sait comment voir ça?
PS: si je poste pas au bon endroit merci de me le dire, et si quelqu'un a une idée de forum qui pourrait me répondre, ça serait sympa de me le dire.
Merci d'avance
PPS: Et oui je suis d'accord, la philosophie de NTP n'est pas forcement celle pour laquelle je veux l'utiliser mais c'est ce qu'on me demande, moi j'exécute!
# Peut-être une piste....
Posté par Gyro Gearllose . Évalué à 3.
En gros, ça détecte si le câble réseau est branché, ou non, et ça déclenche une ou plusieurs actions grâce à des scripts selon l'évènement constaté....
J'espère ne pas être à côté de la plaque et que ce soft t'aidera dans ta démarche.
# Openntpd
Posté par TuxPierre . Évalué à 3.
Pour faire une mise à jour de l'horloge de manière "brutale", tu as l'option -s de ntpd du projet openntpd. S'il y a une différence de plus de 180 secondes, hop il force une mise à jour (évite le rdate).
Pour ce qui est de détecter le branchement de la carte réseau, tu en as une trace dans les logs (genre eth0 up, down) donc il y a bien un process permettant de faire ca..
Deuxième solution (du moins sur Debian), tu mets un script dans /etc/network/if-up.d et la dès que ton interface est montée (n'importe laquelle), ton script est executé (idem mais a l'inverse dans if-down.d).
Liens : http://www.openbsd.org/cgi-bin/man.cgi?query=ntpd
# Une piste ?
Posté par ChickenKiller . Évalué à 1.
La plupart des client ntp on la possiblité de désativer le comportement par défaut qui empèche le mise à l'heure en cas de trop gros écart.
En espérant répondre à la question...
[^] # Re: Une piste ?
Posté par the_ionic . Évalué à 0.
Si je mets q'un seul serveur dans mon fichier ntp.conf, ça marche bien, même si y'a un gros écart, pas de problème, il met à jour. Par contre dans le scénario que je veux tester, je dois donc mettre comme serveur NTP un serveur distant, et aussi mon horloge de référence. Donc je commence en étant uniquement sur mon réseau local, NTP synchronise alors à partir de mon horloge (que j'ai déréglé pour émuler un écart de temps important), puis je branche mon cable réseau. NTP choisit le serveur NTP distant (et me jette pas malgrè la grande différence de temps d'ou l'intéret de l'option Panic) mais par contre, il ne met pas à jour l'heure d'un seul coup comme je m'y attendais... alors toujours le même problême.
[^] # Re: Une piste ?
Posté par totof2000 . Évalué à 4.
Imagine que toutes tes machines aien disons 1 heure d'avance par rapport à ta référence de temps: si la mise à jour est brutale, les process qui tournent risquent de devenir fous, tu perd la cohérence de tes logs, et il risque d'y avoir d'autres problèmes. Le principe de base de NTP n'est pas de mettre brutalement les horloges à jour mais plutot d'accélérer ou de ralentir le décompte du temps pour se synchroniser avec une référence.
Les mises a jour brutales d'horloge, c'est pas bon en général, sauf au démarrage d'un système.
[^] # Re: Une piste ?
Posté par _seb_ . Évalué à -1.
Et à l'arrêt.
On trouve souvent une mise à jour de l'horloge hardware lors d'un reboot ou un arrêt de la machine.
# Et un module qui fournit l'heure par RS232 par exemple?
Posté par totof2000 . Évalué à 2.
[^] # Re: Et un module qui fournit l'heure par RS232 par exemple?
Posté par the_ionic . Évalué à 1.
[^] # Re: Et un module qui fournit l'heure par RS232 par exemple?
Posté par totof2000 . Évalué à 2.
par exemple. Il doit y avoir d'autres solutions. Côté encombrement, je ne sais pas combien de place ça prend.
Le but n'est pas tant que la carte soit à la vraie heure en fait, mais que toutes les machines branchés sur cette cartes soit à l'heure (en gros pour permettre de faire un système de log cohérent dans un premier temps) mais que quand même si on veut être à la vraie heure, on puisse faire que la carte aille sur un serveur NTP public...
Tu risque d'avoir des soucis si ton horloge avance par rapport à une base de temps universelle. Tu risque d'avoir des logs non cohérentes, surtout si tu fais une mise à jour brutale par rapport à la base de temps universelle.
Y a un autre truc qui m'inquiète, c'est ton "dans un premier temps". Ca veut dire que d'autres choses sont prévues? Quoi donc Parce que ça risque d'influer sur le choix de la solution à apporter. les problèmes de synchronisation sur un ensemble de systèmes ne sont pas si simple à résoudre qu'ils en ont l'air.
[^] # Re: Et un module qui fournit l'heure par RS232 par exemple?
Posté par the_ionic . Évalué à 0.
Je suis bien d'accord avec ça, mais pour le moment, c'est le fonctionnement précis de NTP, et de l'adapter pour qui fonctionne dans les contraintes citées précédement qu'on me demande, tout en étudiant l'impact de problèmes comme celui que tu soulèves là, c'est à dire en gros, que toutes mes machines de mon réseau local se retrouve à faire un saut en arrière d'où gros problème au niveau des logs mais d'autres problèmes tout aussi grave... Si quelqu'un avait une URL ou qq chose sur ce sujet, ça serait cool. Et si tu veux, pour le moment, je fonctionne en imaginant le pire, normalement, ma carte ne va pas avoir 15 heures de décallage mais je sais qu'on va me demander ce qui se passe dans ces cas là et si NTP réagit bien, c'est pour ça que je le teste;
<<Y a un autre truc qui m'inquiète, c'est ton "dans un premier temps". Ca veut dire que d'autres choses sont prévues? Quoi donc Parce que ça risque d'influer sur le choix de la solution à apporter. les problèmes de synchronisation sur un ensemble de systèmes ne sont pas si simple à résoudre qu'ils en ont l'air.>>
Pour l'instant, le premier temps est uniquement ce qu'on m'a demandé, mais pour être bref, les clients de mon employeur sont les militaires qui sont plutot secrets secrets dans le genre, donc y ont demandé à la boite, pourriez pas nous mettre le NTP? Après pourquoi ils veulent l'utiliser à part pour synchroniser, j'en sais rien. C'est sur que si c'est pour par exemple de la gestion de base de données de transactions etc, ca risquerait d'être le merdier totale si le temps revient en arrière. Donc voilà, j'aimerai bien savoir si quelqu'un si connait un peu dans ce sujet, ça m'interesse aussi de philosopher un peu la dessus ;-)... merci d'avance
[^] # Re: Et un module qui fournit l'heure par RS232 par exemple?
Posté par totof2000 . Évalué à 2.
[^] # Re: Et un module qui fournit l'heure par RS232 par exemple?
Posté par the_ionic . Évalué à 0.
[^] # Re: Et un module qui fournit l'heure par RS232 par exemple?
Posté par totof2000 . Évalué à 2.
Pas exactement: si le décalage n'est pas énorme, ntp va 'rattraper' le coup.
Sinon NTP peut fonctionner en broadcast il me semble. Ce ne sont plus les stations qui demandent l'heure mais ton serveur qui diffuse.
comprends bien que c'est un peu chiant ce que je demande mais c'est comme ça,
Nonj c'est même un problème plutot intéressant ...
je pense que ce qu'on me demande n'est tout simplement soit pas faisable, soit pas indiqué avec le protocole NTP.
C'est aussi ce que je pense. Voir http://www.hsc.fr/ressources/breves/ntp-auth.html.fr pour une description du fonctionnement de NTP. Il est bien dit que NTP est conçu pour ne jamais revenir en arrière et utilise les appels systèmes permettant d'"accélérer" ou de "ralentir" le décompte du temps.
.. mais on me demande pas à tout prix de le faire, on me demande si c'est envisageable et surtout utile mais moi, je pense dire non dans le pire des cas.
Ben le fait d'être utile ou non dépend de ce qui va derrière. Ca dépend aussi du matériel présent sur le réseau. Faut voir aussi la dérive de l'horloge de ta carte qui te sert de base de temps .
[^] # Re: Et un module qui fournit l'heure par RS232 par exemple?
Posté par the_ionic . Évalué à 0.
Pas exactement: si le décalage n'est pas énorme, ntp va 'rattraper' le coup.>>
Oui mais justement, mon célèbre scénario du pire cas fait que c'est une grande différence ;-)
<<Sinon NTP peut fonctionner en broadcast il me semble. Ce ne sont plus les stations qui demandent l'heure mais ton serveur qui diffuse>>
Ca serait bien une solution oui, je comptais m'y attaquer dès lundi au broadcast, multicast, et manycast que propose NTP
<<je pense que ce qu'on me demande n'est tout simplement soit pas faisable, soit pas indiqué avec le protocole NTP.
C'est aussi ce que je pense. Voir http://www.hsc.fr/ressources/breves/ntp-auth.html.fr pour une description du fonctionnement de NTP. Il est bien dit que NTP est conçu pour ne jamais revenir en arrière et utilise les appels systèmes permettant d'"accélérer" ou de "ralentir" le décompte du temps.>>
Moi j'ai bien lu l'article que tu dis plusieurs fois, et ce n'est pas le seul qui dit que NTP est conçu pour ne jamais revenir en arrière mais ça n'est pas vrai pour moi. En effet, NTP quand il y a une trop grande différence entre l'horloge de référence et l'horloge du serveur (> 1000 secondes par défaut) fait ce qu'il apelle un STEP ADJUSTEMENT, c'est à dire qu'il met à l'heure l'horloge d'un seul coup, pas en ralentissant ou en augmentant le décompte du temps... il est donc parfaitement possible de revenir en arrière dans ce cas là!
<<.. mais on me demande pas à tout prix de le faire, on me demande si c'est envisageable et surtout utile mais moi, je pense dire non dans le pire des cas.
Ben le fait d'être utile ou non dépend de ce qui va derrière. Ca dépend aussi du matériel présent sur le réseau. Faut voir aussi la dérive de l'horloge de ta carte qui te sert de base de temps .>>
C'est exactement ce que j'ai répondu dans un doc interne tout à l'heure décrivant mon avancement, c'est que dans ce scénario du pire cas, il contient à l'utilisateur de la carte (je rapelle qu'à terme, le serveur NTP se trouvera sur une carte embarquée) de garantir que son horloge est correct sinon, cela revient à foutre le modèle NTP en vrac. J'ai pris cette exemple, en gros, NTP est organisé en strate, chaque strate synchronisant la couche qui est en dessous et se synchronisant avec la couche qui est au dessus... et bien dans mon cas, ça revient à intercaler une strate foireuse au milieu ce qui, on le comprends naturellement est un peu abérrant!
Bon en tout cas merci pour tes réponses, là, c'est le week end, mais promis, dès lundi je donne des nouvelles de mon avancement, et notamment l'utilisation des options de broadcast et de multicast, vu que ça à l'air de t'interesser et je me dis surtout que si qq'un à le même problème par la suite, sera bien content de trouver ces quelques éléments!
[^] # Re: Et un module qui fournit l'heure par RS232 par exemple?
Posté par the_ionic . Évalué à 0.
[^] # Re: Et un module qui fournit l'heure par RS232 par exemple?
Posté par totof2000 . Évalué à 2.
Le fait qu'il ne soit pas conçu pour ne signifie pas qu'il n'est pas capable de le faire :)
un exemple: un couteau n'est pas conçu pour déserrer une vis, mais parfois, quand t'as pas de tournevis sous la main un couteau peut faire l'affaire :)
Et comme précisé la mise a jour brutale peut avoir un sens lorsque tu démarre un système qui n'a pas tourné pendant longtemps (et la dérive de son horloge est importante), ou un système dont la batterie assurant la sauvegarde de l'heure est HS (je l'ai déjà utilisé dans ce cas). Mais bon ca fait un moment que j'ai pas mis le nez dedans faudra que je rejette un oeil dans tout ça.
Sinon je suis assez d'accord avec ta conclusion.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.