LINUX:Date et heure
But
Le réglage de la date et de l'heure est important et pour certaines applications, il est impératif qu'elles soient synchrones entre les différentes machines. Par exemple, l'application Pacemaker que nous avons déjà rencontrée. Nous allons passer en revue quelques points importants à configurer.
Service Chrony
Historique
Anciennement on réglait la date et l'heure dans le BIOS et c'est elle qui faisait foi. Cette configuration existe toujours et permet une mise à l'heure grossière. Actuellement on utilise l'heure donnée par un ensemble de serveurs de temps mondiaux qui servent de référence. Par ce moyen, on est sûr que toutes nos machines ont la même heure et la bonne.
Anciennement on utilisait le service NTP qui travaillait comme serveur et client mais sous Fedora, le service Chrony est préféré. Il est installé d'office.
Configuration
Le fichier de configuration est "/etc/chrony.conf" et si nécessaire "/etc/chrony.key".
Normalement, il n'y a rien à faire. Il faut par contre vérifier de temps à autre s'il y a une nouvelle version de ce fichier ajoutée lors des mises à jour. Si le fichier "/etc/chrony.conf.rpmnew" est présent, après vérification, remplacez le fichier "/etc/chrony.conf" par celui-ci.
Assurez-vous que l'option "pool" en début de fichier est bien configurée surtout si vous utilisez un adressage IP fixe. Dans mon cas, elle se présente comme suit:
pool 2.fedora.pool.ntp.org iburst
Elle définit un ensemble de serveurs de temps de référence.
Activation et lancement
Pour activer et lancer ce service, on exécute les commandes suivants classiques pour les services:
systemctl enable chronyd.service systemctl start chronyd.service
et pour le relancer:
systemctl restart chronyd.service
Il est normalement activé dès l'installation.
Firewall
Cette récupération de l'heure nécessite un accès en sortie vers Internet. Il faut que cet accès soit ouvert dans notre Firewall:
-A OUTPUT -p tcp -m tcp --dport 123 -j ACCEPT -A OUTPUT -p udp -m udp --dport 123 -j ACCEPT
Vérification
La commande suivante permet de vérifier le bon fonctionnement du service:
chronyc sources -a -v
qui donne par exemple:
.-- Source mode '^' = server, '=' = peer, '#' = local clock. / .- Source state '*' = current best, '+' = combined, '-' = not combined, | / 'x' = may be in error, '~' = too variable, '?' = unusable. || .- xxxx [ yyyy ] +/- zzzz || Reachability register (octal) -. | xxxx = adjusted offset, || Log2(Polling interval) --. | | yyyy = measured offset, || \ | | zzzz = estimated error. || | | \ MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* ntp.ulyssis.student.kule> 2 6 377 48 -279us[ -338us] +/- 8158us ^- webserver.discosmash.com 3 6 377 47 +1358us[+1358us] +/- 68ms ^- dns-rec-2-brudie.belnet.> 2 6 377 48 +164us[ +105us] +/- 44ms ^- ntp.rack66.net 2 6 377 48 +147us[ +147us] +/- 37ms
Ces quatre dernières lignes nous l'assurent; quatre serveurs de temps sont comparés.
Réglages
C'est bien de récupérer l'heure mais il faut que le paramétrage du système soit adéquat pour être pleinement fonctionnel.
Statut
La commande suivante permet d'afficher quelques informations utiles:
timedatectl status
qui donne par exemple:
Local time: lun 2023-05-22 12:31:16 CEST Universal time: lun 2023-05-22 10:31:16 UTC RTC time: lun 2023-05-22 10:31:16 Time zone: Europe/Brussels (CEST, +0200) System clock synchronized: yes NTP service: active RTC in local TZ: no
Time Zone
Je suis en Belgique; j'utilise donc le fuseau horaire de Bruxelles en Europe (4ème ligne). Suivant l'heure affichée, on remarque que nous sommes en horaire d'été avec deux heures de décalage (CEST) (première ligne) (CEST, +0200) (4ème ligne) par rapport à l'heure de référence (UTC) (seconde ligne).
Si ce n'est pas le cas, il faut adapter ce fuseau horaire.
On peut lister les différentes zones de temps disponibles et leurs noms avec la commande suivante:
timedatectl list-timezones | grep "Europe/Brussels"
qui donne après filtrage:
Europe/Brussels
Il puise cette liste en consultant l'arborescence des fichiers présents sous le répertoire "/usr/share/zoneinfo".
On adapte ce fuseau horaire avec la commande:
timedatectl set-timezone Europe/Brussels
Cette opération met à jour le lien symbolique entre le fichier "/etc/localtime" et le fichier de référence de notre fuseau horaire.
On peut le vérifier par le moyen suivant:
ls -al /etc/localtime
qui donne:
lrwxrwxrwx. 1 root root 37 5 aoû 2020 /etc/localtime -> ../usr/share/zoneinfo/Europe/Brussels
Au lieu d'utiliser la commande "timedatectl", on peut adapter directement ce lien symbolique.
Synchronisation
La 5ème ligne:
System clock synchronized: yes
nous renseigne que le service Chrony permet la synchronisation des horloges. Si ce n'est pas le cas, il faut vérifier le bon fonctionnement de ce service.
NTP
A la 6ème ligne, on constate que le service Chrony est utilisé.
Si ce n'est pas le cas ("NTP service: inactive"), on exécute la commande suivante:
timedatectl set-ntp on
RTC
La dernière ligne:
RTC in local TZ: no
nous informe que nous nous référons à l'heure universelle et non matérielle. Si on se réfère à l'heure matérielle, cette situation n'est pas pleinement supportée.
Dans le cas contraire ("yes"), il faut utiliser la commande suivant pour la désactiver:
timedatectl set-local-rtc 0
A la suite de ce changement, il est conseillé d'effectuer une resynchronisation:
timedatectl --adjust-system-clock
Cette opération modifie la troisième ligne du fichier "/etc/adjtime" dont voici le contenu:
0.0 0 0.0 0 UTC