Aide ntp.conf

bonjour

j'ai une petite difficulté pour me synchroniser avec un serveur de temps.

j'ai un client sous Linux Redhat, j'ai tous les services NTP installés. dans le fichier etc/ntp.conf, j'indique serveur Excalibur

(Excalibur est le nom de mon serveur de temps de strate supérieur, et je veux que le client linux se synchronise son horloge sur Excalibur)

quand je fais "ntptrace Excalibur", il devrait y avoir normalement une sortie du genre:
Excalibur.highnet.fr: stratum 5, offset 1.074315, synch distance 0.01132

mais malheureusement, il me met rien. Même pas un message d'erreur. cela signifie que ça ne marche pas. Le problème c'est que je ne sais pas pourquoi s'il vous plait.

Louis

26 réponses

Résumé de la discussion

Problème de synchronisation temporelle sous Linux Red Hat avec NTP, où ntptrace Excalibur ne renvoie aucune information malgré la configuration d'Excalibur dans /etc/ntp.conf et l'installation des services NTP. Des solutions prioritaires incluent l'ouverture du port UDP 123 en entrée pour les paquets NTP et la vérification par la commande ntp -qn, qui affiche les serveurs et les décalages. D'autres explications indiquent que le protocole UDP est privilégié par NTP et que le démon ntpd ajuste l'heure progressivement plutôt que de remettre l'horloge brusquement, ce qui peut nécessiter du temps avant la synchronisation. En complément, certains préconisent d'utiliser ntpd en démon permanent ou de planifier des mises à jour horloges via cron lorsque l'activité réseau est faible, afin d'assurer une précision continue.

Bobot (l’IA à votre service)
  1. il faut que le port 123 soit ouvert pour les paquets UDP entrants.

    Ensuite, il faut tester avec ntp -qn. Ce sont les dernières colonnes qui disent si ça marche.
    1. bonjour

      j'ai "survolé" vos discussions et ça m'a pas mal aidé.
      j'ai lancé le démon ntpd et dans mon fichier log, il me dit toutes les heures:

      11 Feb 10:15:27 ntpd[956]: offset 0.000000 sec freq 0.000 ppm error 0.000015 poll 4

      11 Feb 11:15:27 ntpd[956]: offset 0.000000 sec freq 0.000 ppm error 0.000015 poll 4

      11 Feb 12:15:27 ntpd[956]: offset 0.000000 sec freq 0.000 ppm error 0.000015 poll 4

      le démon est sensé se synchroniser en se rapprochant petit à petit de l'heure de référence, mais le problème c'est que mon offset augmente de plus en plus au lieu de diminuer, et cela depuis plusieurs heures (et ça me fait un retard de 1min30sec). Qu'est ce que ça veut dire ?
      1. Désolé pour ce message inachevé que j'ai envoyé par mégarde (alors que la réponse a déjà été donnée avec beeaucoup de détails par Dal)
        1. J'utilise xntpd qui tourne en permanence donc je n'ai pas besoin de le lancer.

          Je pense que tu peux jouer avec le cron si ton ntpdate fonctionne seulement à la demande.

          Remarque : pourquoi à 15 h ? As-tu des travaux de sauvegarde nocturnes ? Je pense qu'il faut mieux opérer un décalage des horloges quand l'activité est minimum.

          1. absolument.

            dans la journée, des clients windows font des traitements TP, et les indicateurs horaires de base de données enregistrent l'heure de chaque action. La nuit, ils sont mis à jour par des batch et travaillés sur les serveurs unix. c'est pour ça que ces serveurs ne doivent pas être synchronisé la nuit. Le jour, comme ils restent allumés et ne travaillent pas à priori, le mieux serait de les synchroniser automatiquement la journée avec Cron ou autre. Ces serveurs se synchronisent sur un serveur de temps supérieur qui est Excalibur.

            Ces serveurs sont sous Redhat, et aussi sous AIX version 4.3

            ce que je remarque néanmoins avec la procédure redhat NTP que j'ai indiqué plus haut, ma redhat ne se synchronise que lorsque je lance "service ntpd start ou restart"

            Louis
        2. t'aurai pas aussi de la documentation ou un lien qui pourrait aussi m'aider pour configurer un client NTP sous AIX 4.3 ? je fouille le net, mais je trouve rien. La seule solution pour avancer c'est les forums. Heureusement qu'on peut compter sur des gens aussi bien que toi et Epinard. Merci !!!

          Louis
          1. Contributeur
            Louis,

            Je n'ai jamais travaillé sous AIX... mais je suppose qu'ils ont des applications similaires et.. des pages de manuel (voire même des manuels imprimés, pour le prix que tu payes).

            je suggèrerai de tenter sous AIX :

            man ntpd
            man ntpdate
            man ntp.conf

            crontab devrait fonctionner de façon très similaire aussi.

            A titre d'information sous Linux et sous FreeBSD, la configuration est la même.

            Dal
        3. merci Dal, je maitrise bien l'editeur vi

          donc je fais chkconfig ntpd off (pour tuer le démon)

          puis faire la manip avec cron

          PS: ma machine Redhat n'est pas configuré pour utiliser et être connecté à internet, j'ai juste les IP. je ne recevrai donc pas d'e-mail je pense.
          1. Contributeur
            Louis,

            Etant donné que la tâche cron doit être intégrée dans le crontab de "root" (qui seul peut fixer la date et l'heure, en principe), c'est root qui reçoit l'e-mail sur cette machine, ou le compte vers lequel les e-mails de root sont acheminés. Pas besoin d'Internet donc... juste un message local.

            Si tu as au moins "sendmail" installé (ou un autre MTA), les e-mails vont s'accumuler dans ce compte de messagerie. Observe les premiers pour vérifier que tout se passe bien, puis éventuellement dirige la sortie de ntpdate vers /dev/null.

            Dal
        4. Contributeur
          Salut Louis,

          Désolé, mais je suis rarement sur CCM le week-end :)

          Bon, avec le démon ntpd, tu peux préciser la fréquence maximum et minimum de mise à jour.. extrait de "man ntp.conf" :
               minpoll minpoll
          
               maxpoll maxpoll
                       These options specify the minimum and maximum poll intervals for
                       NTP messages, in seconds to the power of two.  The maximum poll
                       interval defaults to 10 (1,024 s), but can be increased by the
                       maxpoll option to an upper limit of 17 (36.4 h).  The minimum
                       poll interval defaults to 6 (64 s), but can be decreased by the
                       minpoll option to a lower limit of 4 (16 s).

          Si tu veux vraiment que ta machine RedHat se synchronise à une heure déterminée, je ne sais pas comment faire avec le démon.

          En revanche, en tuant le démon et en mettant une tâche cron, tu veux effectivement faire ta mise à jour à une heure précise en utilisant "ntpdate".

          La ligne cron ressemblerait à çà :
          0 15 * * *       /usr/sbin/ntpdate excalibur


          Mets cette ligne dans le crontab de root ("crontab -e", etc. suit la procédure indiquée dans ton lien pour l'utilisation de vi, si tu n'es pas familier avec cet éditeur).

          Tu devrais recevoir un e-mail à 15h00 indiquant le résultat de la commande.

          Quand tu es fatigué de recevoir ces e-mails, tu ajoutes "> /dev/null 2>&1" à la fin de la ligne de crontab.

          Dal
          1. merci, mais j'ai vu sur un site que la commande ntpdate ne marche que la première fois.

            donc dans la ligne Cron, pourrais-ton mettre ceci:

            0 15 * * *       service ntpd start
          2. @Louisvoila j'ai fait ça et j'ai reçu un mail qui me dit:

            Subject: Cron <root@posteRedat> service ntpd start
            X-Cron-Env: <SHELL=/bin/sh>
            X-Cron-Env: <HOME=/root>
            X-Cron-Env: <PATH=/usr/bin:/bin>
            X-Cron-Env: <LOGNAME=root>
            
            /bin/sh: service: commande not found


            et je vois qu'il s'est pas synchronisé automatiquement
          3. Contributeur
            @LouisLouis,

            Chez moi ntpdate fonctionne autant de fois que le serveur de temps que je mentionne accepte une requête NTP.

            Pour simuler ntpdate avec ntpd, il te faudra un "stop" du démon, si tu ne veux pas que celui-ci continue de solliciter le serveur de temps selon une certaine périodicité, et donc lancer le démon avec l'option "-q", qui force le démon à se terminer une fois la synchronisation effectuée.

            Il va falloir que tu appelles ntpd directement (avec les bonnes options) ou que tu modifies le script de lancement du service pour intégrer cette option supplémentaire, ou la configuration par défaut de ntpd (si tu ne vas utiliser le démon que comme çà).

            Tu pourrais aussi utiliser une combinaison de "start" et "stop" (disons après 15 minutes) avec la commande "service", mais je te le déconseille, car si ta machine RedHat retarde de plus de 15 minutes, le démon ne sera tué que le jour suivant...

            merci, mais j'ai vu sur un site que la commande ntpdate ne marche que la première fois

            Je ne sais pas pourquoi ta commande ntpdate ne semble pas fonctionner. Je suis intéressé par la lecture de ce site que tu mentionnes (si tu en as encore l'adresse) et qui ferait de cette commande une commande "jetable" ... Ce qui est vrai c'est que la commande "ntpdate" ne fonctionne qu'une seule foi par lancement de cette commande.

            Dal

            N.B. : lorsque tu définis une tâche dans le crontab, utilise toujours les chemins complets des commandes. Tu peux vérifier l'emplacement de la commande dans le path en tapant "which commande". Sinon ta tâche cron renvoie un message d'erreur du type de celui que tu mentionnes "command not found".
          4. @[Dal]merci Dal

            voici le lien qui disait que ntp date peut être lancé que la première fois :

            http://linuxfr.org/tips/123.html

            1) Donc si je comprend bien ce que t'as dis, alors il faut relancer le démon pour que ntpdate "refonctionne" avec la commande ntpdate -q Excalibur ?

            (parceque là si j'utilise ntpdate excalibur, il me dis ntp exiting...)

            2) et pour le Cron, s'il faut toujours mettre un chemin, alors serait-il possible de mettre :

            0 15 * * * /usr/sbin/ntpdate -q excalibur
          5. @Louissi ntpdate ne fonctionne qu'une fois par commande, comment on fait pour l'arrêter (afin de le relancer) ?

            Louis
        5. merci

          ce que j'ai fais:

          1) j'avais déréglé l'heure redhat de 45 minutes. J'avais lancé ntpdate et il marchait qu'un fois. Quand j'avais encore redéréglé l'heure sur rdhat et que j'ai relancé ntpdate, il ne marchait plus. Je crois que c'est normal car il faut attendre plusieurs heures pour que le ntpdate remarche.

          2) j'avais déréglé l'heure redhat de 45 minutes.j'ai essayé la solution sans passer par la commande ntpdate (que je vous ai montré), ça marchait et j'ai encore déréglé l'heure et refais la solution et il marchait. avec cette solution, je peux me synchroniser toutes les deux secondes.

          Mon client Redhat est en réalité un serveur qui tourne 24h/24 et qui etait synchronisé avec un serveur supérieur du nom d'Excalibur.

          donc comme mon redhat tourne 24h/24 et que je ne le reboot jamais ou presque jamais, comment ferais-t-on pour le synchroniser automatiquement chaque jour à 15h00 ?

          Merci

          Louis
          1. Contributeur
            Louis,

            Il semble que tu aies paramétré le démon correctement, puisque tu dis qu'il se synchronise à ton serveur de temps.

            Sauf erreur, la commande "chkconfig ntpd on" que tu as lancée fait que ton RedHat lancera le démon automatiquement au prochain redémarrage de ta machine.

            Il me semble que tu n'as pas besoin d'un cron (tu en aurais eu besoin si tu avais choisi d'utiliser ntpdate au lieu du démon ntpd pour synchroniser).

            Dal
            1. merci

              et donc c'est tout bon ce que j'ai fait ? je peux oublier ntpdate excalibur ?

              si c'est tout bon manuellement, je dois passer à une synchronisation automatique. Tu connaitrais pas une technique avec un truc genre CRON ?

              Louis
              1. Contributeur
                Salut Louis,

                Les fonctionnalités de ntpdate sont intégrées au démon ntpd. Ton démon se synchronise tout seul avec le serveur de temps que tu lui as indiqué.

                La commande ntpdate est vouée à disparaitre (d'après la page de manuel), bien que toujours fonctionnelle.

                Dal
                1. merci !

                  mais je viens enfin de réussir à me synchroniser manuellement, mais il y a encore un truc que je ne comprend toujours pas: je n'ai pas utilisé ntpdate !

                  sur la plupart des doc sur internet, il faut faire ntptrace, ensuite ntpdate -dv, puis ntpdate server... mais moi je n'ai pas du tout fait pareil mais j'y suis arrivé.

                  je vais vous dire comment j'ai procédé:

                  dans le fichier ntp.conf j'ai seulement mi server excalibur (et effacé fudge...), je n'ai mis aucune autre règle (restrictions ou autre)

                  ensuite j'ai édité le fichier etc/ntp/step-tickers (dedans je lui ai indiqué juste l'adresse IP du serveur de temps excalibur)

                  ensuite j'ai éxécuté la commande chkconfig ntpd on

                  ensuite j'ai démarré le service ntpd start

                  voila tout est synchronisé ! qu'est ce que vous en pensez ? pourquoi je n'ai pas utilisé ntpdate et ça marche ?
                  1. 2) tout pingue bien, aucun pb sur firewall, : le ping ne traverse pas le firewall de la même manière que les paquets ntp :
                    il faut ouvrir le port udp 123 en entrée.

                    le HOW-to indique la commande ntpq -p et la manière de comprendre les résultats (http://en.tldp.org/HOWTO/TimePrecision-HOWTO/ntp.html#ntp.watch)

                    Remarque : le service xntpd ne remets pas les pendules à l'heure brusquement mais progressivement. As-tu attendu quelques heures ?
                    1. et lorsque je fais "service ntpd start" sur mon client redhat,
                      je lance ntpdate excalibur et il me dit:

                      4 Feb 10:33:21 ntpdate[1249]: The NTP socket is in use, exiting

                      mon client Redhat (10h33) n'a donc pas l'air d'être synchronisé avec mon serveur excalibur (11h21).

                      Louis
                      1. le problème c'est que je lance une synchronisation d'abord manuelle: ntpdate excalibur

                        il me répond:
                        4 Feb 09:31:14 ntpdate[1663]: no server suitable for synchronization found

                        ce doit être le code erreur 1663, mais là je suis perdu
                        1. donc voila:
                          le serveur excalibur possède l'IP 10.2.20.2
                          ping excalibur (ça marche)

                          je fais un ntptrace -dv excalibur et voici la réponse:
                          DoTransmit(10.2.20.2)
                          DoTransmit to 10.2.20.2
                          ReceiveBuf(10.2.20.2, 10.2.20.2)
                          server 10.2.20.2, port 123
                          stratum 1, precision -26, leap 00
                          refid 'LOCL' delay 0.00941, dispersion 0.00000 offset 3013.575715
                          rootdelay 0.00000, rootdispersion 0.00000, synch dist 0.00000
                          reference time: c5adba0d.5ea18372 Fri, Feb 4 2005 10:08:29.369
                          originate timestamp: c5adba0d.5ea19439 Fri Feb 4 2005 10:08:29.369
                          transmit timestamp: c5adae47.ca0a73f7 Fri Feb 4 2005 9:18:15.789

                          Voila, je précise que j'ai fais exprès de régler l'heure de mon client Redhat à 9h18 pour se rendre compte de l'effet une fois synchronisé.

                          Louis
                          1. je viens enfin d'avoir des réponses qui semblent positifs...

                            je vais relever les réponses et je vous fait savoir...
                            1. bonjour et merci les amis

                              1) j'ai essayé "ntptrace -dv excalibur" (excalibur est bien le nom DNS)

                              et il me répond rien.

                              [root@posteRedat root]#ntptrace -dv excalibur (puis "Entrée")
                              [root@posteRedat root]#_

                              2) tout pingue bien, aucun pb sur firewall, services NTPD lancés...

                              j'essaie ntpq -n et là il m'ouvre un session

                              ntpq> (et là je suis perdu)

                              3) il faut voir si excalibur est bien dans /etc/hosts ?
                              sur le client ntp ou le serveur ntp ?

                              Louis
                              • 1
                              • 2