Toujours à l’heure grâce aux serveurs de temps

Il peut vous être nécessaire d’avoir une machine dont l’heure est réglée très précisément, par exemple sur votre serveur, ou parce que ça vous amuse d’avoir votre Debian calée sur l’horloge atomique, ou encore si la pile de votre carte mère est vide, donc que votre ordinateur perd l’heure à chaque arrêt. Pour s’assurer de cette ponctualité, il existe des serveurs de temps, sur lesquels Linux peut se caler à intervalles réguliers ou sur demande.

Réglage « manuel » de l’horloge

Par manuel, j’entends bien sûr lancer une ligne de commande qui va mettre à jour l’horloge système depuis une liste de serveurs de temps. Pour ce faire, il faut utiliser la commande ntpdate en super utilisateur :

ntpdate adresse_du_serveur

Il existe plusieurs milliers de serveurs de temps dans le monde, mais le mieux est bien sûr d’en choisir un géographiquement proche, afin de réduire le temps de latence. Une liste très exhaustive des serveurs de temps en France est disponible ici. A noter que ntpdate commence par évaluer ce temps de latence, afin de le compenser lors de la mise à l’heure.

Pour Debian, il existe un paquet spécifique (ntpdate-debian), qui fait exactement la même chose que ntpdate, avec la commodité d’aller chercher la liste des serveurs de temps dans un fichier de configuration. Ainsi, dans le fichier /etc/default/ntpdate, à la ligne NPTSERVERS, vous indiquez les serveurs sur lesquels vous voulez vous synchroniser, séparés par des espaces. Exemple pour moi, qui ai la chance d’habiter dans un pays ensoleillé :

NTPSERVERS="ntp.inria.fr ntp.cemef.mines-paristech.fr ntp.sophia.cnrs.fr"

Et ensuite, pour se mettre à l’heure (toujours en super utilisateur) :

ntpdate-debian

Synchronisation en arrière plan

ntpdate et ntpdate-debian sont très pratiques pour des utilisations ponctuelles, mais pas vraiment pour une mise à jour récurrente. Un paquet a donc été développé pour ça : ntp.

Installation

Peu probable que ce paquet soit installé par défaut sur votre distribution, donc commencez par un :

apt-get install ntp

Ce paquet est un service (un « daemon »), c’est à dire qu’il se lancera automatiquement et de façon transparente au démarrage de votre machine.

 

Configuration

Le fichier de configuration /etc/ntp.conf doit ressembler  à ça :

logfile /var/log/ntpstats/ntpd 
statsdir /var/log/ntpstats/ 
statistics loopstats peerstats clockstats 
filegen loopstats file loopstats type day enable 
filegen peerstats file peerstats type day enable 
filegen clockstats file clockstats type day enable 
 
# Addresses to listen on (ntpd does not listen by default) 
listen on * 
 
server ntp.inria.fr
server ntp.cemef.mines-paristech.fr
server ntp.sophia.cnrs.fr
 
driftfile /var/db/ntp.drift

Le driftfile sert à spécifier dans quel fichier sera enregistré le décalage de l’horloge à chaque synchronisation. De ce fichier, ntp calculera la déviation moyenne pour la corriger si la synchronisation est impossible par la suite. Ainsi, même sans internet, ntp mettra quand même votre horloge à l’heure !

Après avoir modifié le fichier de configuration, il faut penser à relancer ntp :

service ntp restart

 

Diagnostics

Pour vérifier que tout marche bien :

ntpq -p

Chez moi, la réponse est la suivante :

remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*ntp-sop.inria.f 192.93.2.20      2 u   27   64  377   49.305  -65.884  25.685
+dns.cemef.ensmp 192.93.2.20      2 u   32   64  377   50.159  -35.736  28.039
azur.sophia.cnr .INIT.          16 u    -  128    0    0.000    0.000   0.000

On comprend très bien ce que remote signifie. Déjà, on voit que le serveur azur.sophia.cnrs est down à l’heure où j’écris ces lignes…
st signifie strate, c’est à dire le niveau par rapport à l’horloge de référence (0 pour l’horloge atomique, 1 pour les serveurs connectés à cette horloge, 2 pour les serveurs connectés aux serveurs de strate 1 etc.). Les trois autres données utiles sont delay, offset et jitter.

Le delay, comme son nom l’indique, est le temps de réponse du serveur (en ms), tandis que l’offset est le retard mesuré entre l’horloge système et le serveur de temps (toujours en ms). Jitter (ou « guigue » en français, bien connu des électroniciens) indique la fluctuation du temps de réponse.

L’étoile (*) au début de la ligne indique quel serveur semble à NTP le plus pertinent, et donc auquel il préfère se référer. Le plus (+) indique quel est le second meilleur candidat, au cas ou le premier ne répondrait pas à la prochaine synchro.

Proposez votre serveur de temps

Sachez qu’en installant ntp, votre machine devient automatiquement un serveur de temps, ce qui peut vous être utile pour un réseau local. Si vous disposez d’un ip fixe, vous pouvez même proposer votre serveur de temps sur le pool pour le bien de la communauté Internet !

Pour aller plus loin

La page sur nptdate sur doc.ubuntu-fr est très complète. Il y a bien sûr son homologue à propos de ntp. Pour une documentation complète, un site (commercial au demeurant), donne une description très poussée du fonctionnement, du paramètrage et de l’utilisation de ntp.

Bonne synchronisation !