Un 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 utilisateurchronyc
: un outil en ligne de commande pour gérerchronyd
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
Certaines 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.
0 commentaire