<html><head><META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>5. Synchronisation précise de l'heure</title><link href="style.css" rel="stylesheet" type="text/css"><meta content="DocBook XSL Stylesheets V1.69.1" name="generator"><link rel="start" href="index.html" title=" Gestion précise de l'heure et de la date "><link rel="up" href="index.html" title=" Gestion précise de l'heure et de la date "><link rel="prev" href="ar01s04.html" title="4. Les paramètres corrects pour votre machine Linux"><link rel="next" href="ar01s06.html" title="6. Une horloge précise avec le programme chrony"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">5. Synchronisation précise de l'heure</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="ar01s04.html">Précédent</a> </td><th align="center" width="60%"> </th><td align="right" width="20%"> <a accesskey="n" href="ar01s06.html">Suivant</a></td></tr></table><hr></div><div class="section" lang="fr"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ntp"></a>5. Synchronisation précise de l'heure</h2></div></div><div></div></div><p>Avoir l'heure exacte sur tous vos systèmes est aussi important que d'avoir une stratégie solide de la sécurité du réseau (ce qui est bien plus qu'utiliser des pare-feu). C'est un des éléments essentiels d'une administration système basée sur de bonnes pratiques qui mène à des systèmes bien organisés et sûrs. Une heure précise est particulièrement nécessaire lorsqu'on travaille avec des applications distribuées, des services web ou des outils distribués de surveillance réseau.</p><div class="section" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="ntp.ntp"></a>5.1. <span class="acronym">NTP</span> : protocole de diffusion du temps en réseau (Network Time Protocol)</h3></div></div><div></div></div><p>Nous ne décrirons pas ici le protocole, mais comment cette magnifique invention, ajoutée à la présence envahissante d'internet, peut nous être utile. Vous pouvez en apprendre plus sur <a href="http://www.ntp.org/" target="_top">www.ntp.org</a>.</p><p>Une fois le système configuré, <span class="acronym">NTP</span> arrivera à garder l'heure exacte en ne faisant que de très petits ajustements pour ne pas perturber les applications en cours d'exécution.</p><p>L'heure exacte peut être obtenue en utilisant des appareils basés sur la fréquence électronique des atomes. Il existe aussi une méthode basée sur le système de satellites <span class="acronym">GPS</span>. La première est plus fiable, mais la seconde n'est pas si mauvaise. Les deux nécessitent un matériel très spécifique et très cher, mais leurs propriétaires (en général des universités ou des laboratoires de recherche) les connectent à des ordinateurs qui font tourner un serveur <span class="acronym">NTP</span> qui sont connectés à internet et qui vous laissent y accéder gratuitement. Et c'est grâce à eux que nous synchroniserons nos systèmes.</p></div><div class="section" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="ntp.arch"></a>5.2. Construire une architecture simple de synchronisation de l'heure</h3></div></div><div></div></div><p>Vous aurez besoin de :</p><div class="orderedlist"><ol type="1"><li><p>Une connexion directe ou indirecte (à travers un pare-feu) à internet.</p></li><li><p>Choisir des serveurs <span class="acronym">NTP</span>. Vous pouvez utiliser le serveur public <a href="http://www.fortytwo.ch/time/" target="_top">pool.ntp.org</a> ou en choisir dans la <a href="http://www.eecis.udel.edu/~mills/ntp/clock2a.html" target="_top">deuxième strate de serveurs de temps publics</a> sur le site web de <span class="acronym">NTP</span>. Si vous n'avez pas d'accès à internet, votre administrateur <span class="acronym">WAN</span> (ce doit être un type intelligent) peut probablement vous donner des adresses internes.</p></li><li><p>Avoir le logiciel <span class="acronym">NTP</span> installé sur tous les systèmes que vous voulez synchroniser. Vous pouvez trouver les RPM sur les cédéroms de votre distribution Linux favorite ou <a href="http://rpmfind.net/linux/rpm2html/search.php?query=ntp" target="_top">faire une recherche</a> sur <a href="http://rpmfind.net/" target="_top">http://rpmfind.net/</a>.</p></li></ol></div><p>Voici un exemple d'une bonne architecture :</p><div class="figure"><a name="N10416"></a><p class="title"><b>Figure 1. Serveurs relais locaux pour NTP</b></p><div class="mediaobject" align="center"><img src="images/TimePrecision-HOWTO/ntp.png" align="middle" alt="Architecture NTP"></div></div><p> Si vous avez plusieurs machines à synchroniser, <span class="emphasis"><em>ne les faites pas</em></span> toutes accéder aux serveurs <span class="acronym">NTP</span> externes que vous avez choisis. Seuls deux de vos serveurs doivent accéder aux serveurs <span class="acronym">NTP</span> externes. Les autres machines se synchroniseront sur ces deux dernières. Nous les appellerons <span class="emphasis"><em>serveurs relais</em></span>. </p><p> Vos serveurs relais peuvent être n'importe lesquelles de vos machines déjà disponibles sur votre réseau. <span class="acronym">NTP</span> consomme très peu de mémoire et de processeur. Vous n'avez pas besoin d'une machine dédiée à cette fonction. </p><div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Tip"><tr><td valign="top" align="center" rowspan="2" width="25"><img alt="[Astuce]" src="images/tip.png"></td><th align="left">Astuce</th></tr><tr><td valign="top" align="left"><p> Créer des alias pour les noms d'hôtes de vos serveurs relais locaux est une bonne idée. Vous pouvez définir par exemple ntp1.mon-domaine.fr et ntp2.mon-domaine.fr. Puis n'utilisez que ces noms en configurant les machines clientes. De cette façon, vous pouvez déplacer la fonctionnalité <span class="acronym">NTP</span> vers un nouveau serveur relais (avec un adresse IP et un nom d'hôte différents) sans avoir à reconfigurer les clients. Demandez à votre administrateur <span class="acronym">DNS</span> de créer ces alias. </p></td></tr></table></div></div><div class="section" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="ntp.configs"></a>5.3. Configuration <span class="acronym">NTP</span></h3></div></div><div></div></div><div class="variablelist"><dl><dt><span class="term"><span class="emphasis"><em>Pour vos serveurs relais</em></span></span></dt><dd><p>Éditez <code class="filename">/etc/ntp.conf</code> et ajoutez les serveurs distants que vous avez choisis :</p><div class="example"><a name="N10451"></a><p class="title"><b>Exemple 5. Fichier <code class="filename">/etc/ntp.conf</code>des machines relais</b></p><pre class="programlisting"> server ntp.cnrs.fr # Un serveur de strate 1 de cnrs.fr server autre-ntp.gouv.fr # Un serveur de strate 2 de gouv.fr </pre></div><p> De nouveau, vous pouvez utiliser le serveur public <a href="http://www.fortytwo.ch/time/" target="_top">pool.ntp.org</a> ou obtenir une liste de <a href="http://www.eecis.udel.edu/~mills/ntp/clock2a.html" target="_top">serveurs de temps publics</a> sur le site web de <span class="acronym">NTP</span>. </p></dd><dt><span class="term"><span class="emphasis"><em>Pour vos clients</em></span></span></dt><dd><p>Éditez <code class="filename">/etc/ntp.conf</code> et ajoutez vos serveurs relais avec un nom standard :</p><div class="example"><a name="N10473"></a><p class="title"><b>Exemple 6. Fichier <code class="filename">/etc/ntp.conf</code> des machines clientes</b></p><pre class="programlisting"> server ntp1.mon-domaine.fr # Mon premier serveur relais local server ntp2.mon-domaine.fr # Mon deuxième serveur relais local </pre></div></dd></dl></div><p>Si votre machine a une heure UTC différente de plusieurs minutes par rapport aux serveurs <span class="acronym">NTP</span>, <span class="acronym">NTP</span> ne fonctionnera pas. Dans ce cas, vous devez d'abord faire un synchronisation complète. Je vous recommande de le faire en dehors des heures de production. Vous n'avez besoin de le faire que lors de l'initialisation de votre configuration <span class="acronym">NTP</span>, jamais plus après :</p><div class="example"><a name="N10488"></a><p class="title"><b>Exemple 7. Première synchronisation</b></p><pre class="screen"> <code class="prompt">bash# </code><span><strong class="command">ntpdate autre-ntp.gouv.fr</strong></span> <a name="sync1"></a><img border="0" alt="1" src="images/callouts/1.png"> 24 Mar 18:16:36 ntpdate[10254]: step time server 200.100.20.10 offset -15.266188 sec <code class="prompt">bash# </code><span><strong class="command">ntpdate autre-ntp.gouv.fr</strong></span> <a name="sync2"></a><img border="0" alt="2" src="images/callouts/2.png"> 24 Mar 18:16:43 ntpdate[10255]: adjust time server 200.100.20.10 offset -0.000267 sec </pre><div class="calloutlist"><table summary="Callout list" border="0"><tr><td align="left" valign="top" width="5%"><a href="#sync1"><img border="0" alt="1" src="images/callouts/1.png"></a> </td><td align="left" valign="top"><p>Première synchronisation complète. L'horloge retardait de 15 secondes.</p></td></tr><tr><td align="left" valign="top" width="5%"><a href="#sync2"><img border="0" alt="2" src="images/callouts/2.png"></a> </td><td align="left" valign="top"><p>Deuxième synchronisation complète, juste pour être sûr. Maintenant, nous ne retardons pratiquement plus, ce qui est une bonne chose.</p></td></tr></table></div></div><p>La dernière étape consiste à démarrer ou à redémarrer le démon <span class="acronym">NTP</span> sur chaque machine :</p><pre class="screen"><code class="prompt">bash# </code><span><strong class="command">service ntpd restart</strong></span></pre></div><div class="section" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="ntp.watch"></a>5.4. Observer votre machine se synchroniser</h3></div></div><div></div></div><p>Maintenant que tout est configuré, <span class="acronym">NTP</span> va garder l'heure de votre machine synchronisée. Vous pouvez observer ce processus en utilisant la commande d'interrogation NTP (<span><strong class="command">ntpq</strong></span>) :</p><div class="example"><a name="N104C5"></a><p class="title"><b>Exemple 8. Un exemple d'interrogation de l'état de la synchronisation temporelle</b></p><pre class="screen"> <code class="prompt">bash# </code><span><strong class="command">ntpq -p</strong></span> remote refid st t when poll reach delay offset jitter ============================================================================== -jj.cs.umb.edu gandalf.sigmaso 3 u 95 1024 377 31.681 -18.549 1.572 milo.mcs.anl.go ntp0.mcs.anl.go 2 u 818 1024 125 41.993 -15.264 1.392 -mailer1.psc.edu ntp1.usno.navy. 2 u 972 1024 377 38.206 19.589 28.028 -dr-zaius.cs.wis ben.cs.wisc.edu 2 u 502 1024 357 55.098 3.979 0.333 +taylor.cs.wisc. ben.cs.wisc.edu 2 u 454 1024 347 54.127 3.379 0.047 -ntp0.cis.strath harris.cc.strat 3 u 507 1024 377 115.274 -5.025 1.642 *clock.via.net .GPS. 1 u 426 1024 377 107.424 -3.018 2.534 ntp1.conectiv.c 0.0.0.0 16 u - 1024 0 0.000 0.000 4000.00 +bonehed.lcs.mit .GPS. 1 u 984 1024 377 25.126 0.131 30.939 -world.std.com 204.34.198.40 2 u 119 1024 377 24.229 -6.884 0.421 </pre></div><div class="variablelist"><p class="title"><b>La signification de chaque colonne</b></p><dl><dt><span class="term"><span class="emphasis"><em>remote</em></span></span></dt><dd><p>Est le nom du serveur <span class="acronym">NTP</span> distant. Si vous utilisez l'option <code class="option">-n</code>, vous verrez les adresses IP de ces serveurs à la place de leurs noms.</p></dd><dt><span class="term"><span class="emphasis"><em>refid</em></span></span></dt><dd><p>Indique d'où chaque serveur obtient son heure. Il peut s'agir d'un nom d'hôte ou de quelque chose comme <span class="acronym">.GPS.</span>, indiquant une source <span class="acronym">GPS</span> (Global Positioning System).</p></dd><dt><span class="term"><span class="emphasis"><em>st</em></span></span></dt><dd><p>La <span class="emphasis"><em>strate</em></span> est un nombre allant de 1 à 16 qui indique la précision du serveur distant. 1 est le plus fiable, 16 signifie que le serveur n'est pas disponible. Votre strate sera égale à celle du serveur distant le plus fiable plus 1. Ne vous connectez jamais à un serveur de la strate 1, utilisez ceux de niveau 2 ! Ces serveurs sont largement suffisants pour nos besoins, et cette politique permet de réduire le trafic vers les serveurs de la première strate.</p></dd><dt><span class="term"><span class="emphasis"><em>poll</em></span></span></dt><dd><p>L'intervalle (en secondes) entre deux requêtes de temps. La valeur sera comprise entre les valeurs minimales et maximales autorisées. Initialement la valeur sera petite pour permettre une synchronisation rapide. Une fois que les horloges sont synchrones, le temps entre deux requêtes augmentera pour diminuer le trafic réseau et la charge sur les serveurs de temps populaires.</p></dd><dt><span class="term"><span class="emphasis"><em>reach</em></span></span></dt><dd><p>C'est une représentation en base 8 d'un tableau de 8 bits représentant les 8 dernières fois que la machine a essayé d'atteindre le serveur. Le bit est mis à 1 si le serveur distant a pu être atteint.</p></dd><dt><span class="term"><span class="emphasis"><em>delay</em></span></span></dt><dd><p>Le délai (en secondes) nécessaire pour recevoir une réponse à une demande de "quelle heure est-il ?".</p></dd><dt><span class="term"><span class="emphasis"><em>offset</em></span></span></dt><dd><p>La valeur la plus importante. Le décalage de temps entre le serveur local et le serveur distant. Pendant la synchronisation, le décalage diminue, indiquant que l'horloge locale devient plus précise.</p></dd><dt><span class="term"><span class="emphasis"><em>jitter</em></span></span></dt><dd><p>Cette colonne indique la dispersion, qui est une mesure de la variance statistique du décalage pendant plusieurs paires de requête/réponse successives. Des valeurs faibles de la dispersion sont meilleures que des valeurs élevées. Plus elles sont faibles, plus la synchronisation temporelle sera précise.</p></dd></dl></div><div class="variablelist"><p class="title"><b>Signification des signes devant les noms de serveur</b></p><dl><dt><span class="term"><span class="emphasis"><em>-</em></span></span></dt><dd><p>Signifie que le service NTP local n'aime pas beaucoup ce serveur</p></dd><dt><span class="term"><span class="emphasis"><em>+</em></span></span></dt><dd><p>Signifie que le service NTP local aime ce serveur</p></dd><dt><span class="term"><span class="emphasis"><em>x</em></span></span></dt><dd><p>Marque un mauvais serveur</p></dd><dt><span class="term"><span class="emphasis"><em>*</em></span></span></dt><dd><p>Indique le serveur préféré actuel</p></dd></dl></div></div><div class="section" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="ntp.boot"></a>5.5. Lancer automatiquement <span class="acronym">NTP</span> au démarrage</h3></div></div><div></div></div><p>Si vous voulez toujours avoir le service <span class="acronym">NTP</span> sur votre machine même si vous la redémarrez, faites ceci sur chaque machine :</p><pre class="screen"><code class="prompt">bash# </code><span><strong class="command">chkconfig --level 2345 ntpd on</strong></span></pre><p>Cela garantira un démarrage automatique.</p><p>Si votre machine fonctionne longtemps sans redémarrage (des mois ou des années), vous remarquerez une importante différence entre la très imprécise horloge matérielle et l'heure système (maintenant très précise). Les distributions Linux modernes copient l'heure système dans l'horloge matérielle chaque fois que le système est arrêté en utilisant un <a href="ar01s04.html#set.hwclock" title="4.2. Régler l'horloge matérielle">mécanisme similaire à la commande <span><strong class="command">setclock</strong></span></a>. De cette façon, au démarrage suivant, vous obtiendrez une date et une heure presque aussi précises que ce qu'elles étaient lors de l'arrêt de votre ordinateur.</p></div></div><div class="navfooter"><hr><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ar01s04.html">Précédent</a> </td><td align="center" width="20%"> </td><td align="right" width="40%"> <a accesskey="n" href="ar01s06.html">Suivant</a></td></tr><tr><td valign="top" align="left" width="40%">4. Les paramètres corrects pour votre machine Linux </td><td align="center" width="20%"><a accesskey="h" href="index.html">Sommaire</a></td><td valign="top" align="right" width="40%"> 6. Une horloge précise avec le programme <span><strong class="command">chrony</strong></span></td></tr></table></div></body></html>