Table of Contents

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 :

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.

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 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 :

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

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