HorlogeUn des prérequis fondamentaux d’un ordinateur, c’est qu’il soit à l’heure. Malheureusement, l’horloge intégrée dans notre machine n’est pas suffisamment exacte. Le protocole NTP (Network Time Protocol) permet à notre machine de mettre ses pendules à l’heure. Dans un réseau local, il permet la synchronisation des machines entre elles.

La suite Chrony est utilisée comme outil de gestion NTP par défaut depuis Red Hat Enterprise Linux 7.0, en remplacement de NTPD (Network Time Protocol Daemon).

Chrony est composé de :

  • chronyd : un démon exécuté dans l’espace utilisateur
  • chronyc : un outil en ligne de commande pour gérer chronyd

Installation

Chrony est fourni par les dépôts officiels de Red Hat Enterprise Linux et Rocky Linux :

# dnf install -y chrony

Synchronisation initiale

Chrony peut être invoqué manuellement pour une première synchronisation au cas où l’horloge de la machine est complètement déréglée. Voici une petite démonstration pour vous donner une idée :

# date +%Y%m%d -s "20200101"
20200101
# date
Wed Jan  1 00:00:04 CET 2020
# chronyd -q 'pool pool.ntp.org iburst'
2019-12-31T23:01:03Z chronyd version 4.2 starting (+CMDMON +NTP +REFCLOCK 
+RTC +PRIVDROP +SCFILTER +SIGND +ASYNCDNS +NTS +SECHASH +IPV6 +DEBUG)
2019-12-31T23:01:03Z Initial frequency -9.846 ppm
2019-12-31T23:01:08Z System clock wrong by 92656566.187080 seconds (step)
2022-12-08T08:57:14Z chronyd exiting
# date
Thu Dec  8 09:57:20 CET 2022

ImportantCertaines applications digèrent très mal les modifications abruptes de l’horloge système. Ce n’est pas une mauvaise idée de redémarrer la machine après une telle opération.

Configuration initiale

Sauvegarder la configuration existante :

# cd /etc/
# cp chrony.conf chrony.conf.orig

Configurer Chrony :

# /etc/chrony.conf
server 0.fr.pool.ntp.org iburst
server 1.fr.pool.ntp.org iburst
server 2.fr.pool.ntp.org iburst
server 3.fr.pool.ntp.org iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
logdir /var/log/chrony

Cette configuration mérite quelques remarques :

  • Le paramètre iburst réduit l’intervalle entre les quatre premières requêtes envoyées au serveur spécifié à moins de deux secondes, ce qui permet à Chrony de synchroniser l’horloge immédiatement après le lancement.
  • Le fichier spécifié par la directive driftfile enregistre les dérives de l’horloge.
  • En temps normal, Chrony corrige peu à peu tout décalage horaire, en ralentissant ou en accélérant l’horloge selon les besoins. Dans certaines situations, l’horloge système peut avoir dérivé au point où le processus de correction risque de prendre un long moment avant de corriger l’horloge système. Ici, la directive makestep 1.0 3 force Chrony à modifier l’horloge système si l’ajustement était plus important qu’une seconde (1.0), mais seulement lors des trois (3) premières mises à jour horaires. Une valeur négative peut être utilisée pour désactiver cette limite.
  • La directive rtcsync active la synchronisation de l’horloge système avec l’horloge RTC (Real-Time Clock).
  • Quant à la directive logdir, elle spécifie le répertoire où les fichiers journaux sont écrits.

Mise en service

Activer et démarrer Chrony :

# systemctl enable chronyd --now

Vérifier si le service fonctionne correctement :

# systemctl status chronyd

Afficher le suivi de la synchronisation :

# chronyc tracking
Reference ID    : A29FC801 (time.cloudflare.com)
Stratum         : 4
Ref time (UTC)  : Thu Dec 08 09:10:30 2022
System time     : 0.000018561 seconds slow of NTP time
Last offset     : -0.000022385 seconds
RMS offset      : 0.000022385 seconds
Frequency       : 9.857 ppm slow
Residual freq   : -27.539 ppm
Skew            : 3.100 ppm
Root delay      : 0.035417829 seconds
Root dispersion : 0.001041066 seconds
Update interval : 2.1 seconds
Leap status     : Normal
  • Reference ID, c’est la référence hexadécimale ainsi que le nom ou l’adresse IP du serveur avec lequel l’ordinateur est actuellement synchronisé.
  • Stratum indique à combien de sauts d’un ordinateur avec une horloge de référence attachée nous nous trouvons.
  • Toute erreur dans l’horloge système (System time) est corrigée en l’accélérant ou en la ralentissant légèrement jusqu’à ce que l’erreur soit résolue, puis celle-ci retourne à la vitesse normale.

Afficher la liste des serveurs auxquels on est connecté :

# chronyc sources
MS Name/IP address   Stratum Poll Reach LastRx Last sample               
=========================================================================
^- ntp3.omdc.pl            2   6    37    26    +36us[  +36us] +/-   46ms
^* 27.ip-51-68-44.eu       3   6    37    27    +15us[+3289ns] +/-   17ms
^- blade2.rack1.senis.org  3   6    37    27   -163us[ -163us] +/-   28ms
^- time.cloudflare.com     3   6    37    26   -524us[ -524us] +/-   19ms
  • Le petit astérisque * en début de ligne signifie que la machine est correctement synchronisée avec le serveur distant.

Chrony sur un serveur local

Dans un réseau local, Chrony peut à son tour être configuré comme serveur de temps pour les machines locales en ajoutant les deux directives suivantes :

# /etc/chrony.conf
server 0.fr.pool.ntp.org iburst
server 1.fr.pool.ntp.org iburst
server 2.fr.pool.ntp.org iburst
server 3.fr.pool.ntp.org iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
allow 192.168.2.0/24
local stratum 10
logdir /var/log/chrony
  • La directive allow spécifie l’autorisation d’accès pour un hôte ou un réseau particulier.
  • La directive local stratum 10 est utilisée pour que Chrony puisse apparaître comme synchronisé avec le temps réel du point de vue des interrogations des clients, même s’il ne possède pas de source de synchronisation actuellement.

Il faudra songer à ouvrir le port 123 en UDP pour autoriser les requêtes des postes clients :

# firewall-cmd --permanent --add-service=ntp
# firewall-cmd --reload

Synchronisation avec une source locale

Dans l’exemple qui suit, on connecte un serveur du réseau local à une source NTP du même réseau :

# /etc/chrony.conf
server proxy.microlinux.lan iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
logdir /var/log/chrony

La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.

 

Catégories : Serveur

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *