====== Synchronisez les machines de votre réseau avec NTP ====== NTP (//Network Time Protocol//) permet de synchroniser les horloges systèmes entre différents ordinateurs. Le HOWTO suivant décrit comment : * configurer un server NTP avec Slackware Linux, * synchroniser des PC client avec votre serveur NTP local. ===== Introduction ===== Lorsque plusieurs personnes manipulent des données partagées sur des postes clients différents, il est essentiel que ces postes soient tous à la même heure. Ceci est particulièrement vrai lorsqu'on partage des données via NFS ou lorsqu'on utilise l'authentification centralisée avec NIS. On se retrouve alors avec une flopée d'erreurs bizarres si les postes clients ne sont pas correctement synchronisés. Malheureusement, l'horloge intégrée dans les machines n'est pas suffisamment exacte pour cela. Le protocole NTP (//Network Time Protocol//) permet aux machines d'un réseau de mettre leurs horloges à l'heure. Il permet la synchronisation des machines entre elles. Les serveurs de temps public sur Internet permettent de recevoir le temps exact. À partir de là, on a peut utiliser NTP de différentes façons. * La commande ''ntpdate'' procède à un ajustement ponctuel de l'horloge du BIOS. * L'ajustement ponctuel ne suffit pas pour un serveur qui est censé tourner sans discontinuer. L'horloge du serveur risque de dévier de plus en plus de l'heure exacte. Dans ce cas, il faudra configurer le démon ''ntpd'' contenu dans le paquet ''ntp'', qui se charge de contacter les serveurs de temps publics à intervalles réguliers pour procéder ensuite à une série de corrections de l'heure locale. * Le démon ''ntpd'' peut à son tour être configuré comme serveur de temps pour les machines locales. Au quotidien, on utilisera ''ntpdate'' pour l'ajustement initial de l'heure locale, et ''ntpd'' pour la synchronisation régulière. ===== Considérations de pare-feu ===== Le démon ''ntpd'' utilise le port 123 en UDP. Il faut donc ouvrir ce port sur le serveur pour permettre aux postes clients de se connecter. ===== Synchronisation d'un serveur local ou dédié avec un serveur NTP ===== Créer le fichier journal : # touch /var/log/ntp.log Éventuellement, aller sur [[http://www.pool.ntp.org|http://www.pool.ntp.org]] et choisir la liste des serveurs en fonction du pays. Configurer le service NTP en éditant ''/etc/ntp.conf''. On pourra éventuellement faire une copie de sauvegarde du fichier existant ''ntp.conf'' et éditer son propre fichier à partir de zéro. Dans l'exemple ci-dessous, les quatre serveurs de temps sont choisis en fonction de l'emplacement géographique de mon entreprise (France) : # /etc/ntp.conf driftfile /etc/ntp/drift logfile /var/log/ntp.log server 0.fr.pool.ntp.org server 1.fr.pool.ntp.org server 2.fr.pool.ntp.org server 3.fr.pool.ntp.org server 127.127.1.0 fudge 127.127.1.0 stratum 10 restrict default nomodify nopeer notrap restrict 127.0.0.1 mask 255.0.0.0 Voici une petite explication de quelques options : * La directive ''fudge 127.127.1.10 stratum 10'' constitue un serveur "bidon" en guise d'IP "fallback", au cas où la source de temps extérieure deviendrait momentanément indisponible. En cas d'indisponibilité du serveur distant, NTP continuera à tourner en se basant sur ce fonctionnement-là. * NTP offre une panoplie de règles pour contrôler l'accès au service, que l'on pourra utiliser en-dehors des règles de pare-feu. Ici, les directives ''restrict'' signifient qu'on empêche les machines distantes de modifier la configuration du serveur (première ligne) et qu'on fait confiance à la machine elle-même (deuxième ligne). La directive ''restrict'' sans option derrière, mais suivie du seul nom d'hôte, équivaut à un ''allow all''. ==== Gestion et utilisation ==== Avant de lancer le service, effectuer l'ajustement initial de l'horloge : # ntpdate pool.ntp.org La commande ''ntpdate'' est normalement considérée comme obsolète, mais elle sert toujours à effectuer des corrections importantes. Théoriquement, c'est la commande ''ntpd -g'' qui est censée remplacer ''ntpdate'', mais son utilisation s'avère problématique sur des systèmes déréglés de plus d'une heure. Activer le service : # chmod +x /etc/rc.d/rc.ntpd Gérer le service : # /etc/rc.d/rc.ntpd start|stop|restart|status Afficher la liste des serveurs auxquels on est connecté : # ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== *panopea.unstabl 213.251.128.249 2 u 30 64 377 56.136 -249.48 80.680 +88-190-17-126.r 145.238.203.14 2 u 29 64 377 77.571 -205.94 94.278 +62.210.255.117 192.93.2.20 2 u 29 64 377 77.097 -249.57 85.641 -ntp.univ-poitie 145.238.203.10 3 u 29 64 377 57.747 -191.58 107.002 LOCAL(0) .LOCL. 10 l 164 64 374 0.000 0.000 0.001 Le petit astérisque ''*'' en début de ligne signifie que la machine est correctement synchronisée avec le serveur distant. La première synchronisation peut nécessiter quelques minutes, parfois même une demi-heure. Pour guetter la première synchronisation, on peut invoquer ''watch ntpq -p''. ===== Synchronisation des postes clients avec le serveur local ===== Au lieu de synchroniser chaque poste avec un serveur NTP sur Internet, on va procéder de façon plus économique et préférer la synchronisation avec le serveur local. Effectuer l'ajustement initial comme on l'a fait plus haut : # ntpdate pool.ntp.org Créer le fichier journal : # touch /var/log/ntp.log Configurer le service. Dans l'exemple, le serveur NTP est la machine 192.168.2.1 du réseau local : # /etc/ntp.conf driftfile /etc/ntp/drift logfile /var/log/ntp.log server 192.168.2.1 server 127.127.1.0 fudge 127.127.1.0 stratum 10 restrict default ignore restrict 127.0.0.1 mask 255.0.0.0 restrict 192.168.2.1 mask 255.255.255.255 * Les directives ''restrict'' signifient ici qu'on bloque tout le trafic NTP, excepté pour la machine elle-même et le serveur. Activer et lancer le service : # chmod +x /etc/rc.d/rc.ntpd # /etc/rc.d/rc.ntpd start Vérifier si l'on est bien synchronisé avec le serveur local : # ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== *192.168.2.1 81.19.16.225 3 u 916 1024 377 0.367 7.897 2.552 LOCAL(0) .LOCL. 10 l 10h 64 0 0.000 0.000 0.000 Là aussi, il faudra attendre quelques minutes avant la première synchronisation. ====== Sources ====== * Texte original ainsi que la traduction française rédigés par [[wiki:user:kikinovak|Niki Kovacs]] {{tag>howtos time clock synchronization author_kikinovak}}