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 et OpenSUSE Leap 15.0.
Chrony est composé de :
chronyd
– un démon exécuté dans l’espace utilisateurchronyc
– un outil en ligne de commande pour gérerchronyd
Installation
Supprimer ntp
et ntpdate
s’ils sont installés.
$ sudo yum remove ntp ntpdate
Chrony est fourni par les dépôts de paquets officiels de Red Hat Enterprise Linux et CentOS.
$ sudo yum install 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.
$ sudo date +%Y%m%d -s "20190101" 20190101 $ date Tue Jan 1 00:00:08 CET 2019 $ sudo chronyd -q 'pool pool.ntp.org iburst' 2018-12-31T23:00:16Z chronyd version 3.4 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASYNCDNS +SECHASH +IPV6 +DEBUG) 2018-12-31T23:00:16Z Initial frequency 21.836 ppm 2018-12-31T23:00:21Z System clock wrong by 36582389.206088 seconds (step) 2020-02-28T08:46:50Z chronyd exiting $ date Fri Feb 28 09:46:51 CET 2020
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
Sur les serveurs CentOS 7, Chrony est immédiatement utilisable dans la configuration fournie par défaut.
# /etc/chrony.conf
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.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.
$ sudo systemctl enable chronyd --now
Vérifier si le service fonctionne correctement.
$ systemctl status chronyd
Afficher le suivi de la synchronisation.
$ chronyc tracking Reference ID : 5362C986 (ntp1.mediamatic.nl) Stratum : 3 Ref time (UTC) : Sat Feb 29 08:28:52 2020 System time : 0.000001028 seconds slow of NTP time Last offset : +0.001116573 seconds RMS offset : 0.010313899 seconds Frequency : 21.756 ppm fast Residual freq : +0.000 ppm Skew : 0.143 ppm Root delay : 0.014591943 seconds Root dispersion : 0.018667171 seconds Update interval : 516.2 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 210 Number of sources = 4 MS Name/IP address Stratum Poll Reach LastRx Last sample =========================================================================== ^- ntp2k.versadns.com 2 6 17 23 -1162us[ +85us] +/- 127ms ^- reinhardt.pointpro.nl 2 6 17 24 +4042us[+5290us] +/- 33ms ^* 46-243-26-34.tangos.nl 1 6 17 23 -2618us[-1371us] +/- 8551us ^+ debmirror.tuxis.net 2 6 17 24 +3501us[+4749us] +/- 20ms
- 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 dédié
Sur un serveur dédié, on pourra utiliser la configuration proposée par défaut, en indiquant des serveurs NTP en France.
# /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
Chrony sur un serveur LAN
Dans un réseau local, Chrony peut à son tour être configuré comme serveur de temps pour les machines locales.
# /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.
Ouvrir le port 123 en UDP pour autoriser les requêtes des postes clients.
$ sudo firewall-cmd --permanent --add-service=ntp $ sudo 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
Connecter un poste client OpenSUSE Leap
Pour faire pointer un poste client sous OpenSUSE Leap vers un serveur NTP local, on pourrait très bien éditer /etc/chrony.conf
. Au lieu de cela, on va utiliser l’outil de configuration YaST.
- Ouvrir Système > YaST.
- Services réseau > Configuration NTP.
- Saisir le nom d’hôte ou l’adresse IP du serveur et cliquer sur Tester.
Documentation
- Red Hat Enterprise Linux 7 – System Administrator’s Guide (en anglais)
- Red Hat Enterprise Linux 7 – Guide de l’Administrateur Système (en français)
- La documentation officielle du projet (en anglais)
- Linux 2019 – Michael Kofler, pp. 559 – 561 (en allemand)
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.
2 commentaires
Cascador · 2 mars 2020 à 11 h 29 min
Salute,
Tu peux aussi fournir le lien en Français pour le System Administrator’s Guide : https://access.redhat.com/documentation/fr-fr/red_hat_enterprise_linux/7/html/system_administrators_guide/ch-configuring_ntp_using_the_chrony_suite
Tcho !
kikinovak · 2 mars 2020 à 11 h 35 min
Ajouté, merci !