informatique:applications:ntp_synchronisation_de_l_heure

NTP : Protocole de Synchronisation de l'heure

Le protocole NTP (Network Time Protocol) est un protocole de réseau utilisé pour synchroniser les horloges des systèmes informatiques à travers un réseau. Il est utilisé pour s'assurer que l'horloge de chaque ordinateur dans un réseau est synchronisée avec une horloge de référence de haute précision, généralement une horloge atomique ou GPS. Ce protocole utilise un système de hiérarchie de serveurs pour synchroniser les horloges, où les serveurs NTP de niveau supérieur sont synchronisés avec une source d'horloge de référence, et les serveurs de niveau inférieur se synchronisent avec les serveurs de niveau supérieur, et ainsi de suite jusqu'aux clients finaux. Il utilise également des algorithmes de filtrage et de correction pour minimiser les erreurs de synchronisation causées par les délais de transmission et les perturbations réseau. Le protocole NTP est largement utilisé sur Internet et dans les réseaux privés pour maintenir une synchronisation précise de l'heure entre les ordinateurs, ce qui est important pour de nombreuses applications, telles que la surveillance réseau, la facturation en ligne, la sécurité, la gestion de réseau, et les applications temps réel.

Un ordinateur de bureau peut utiliser le protocole NTP pour synchroniser son horloge avec une source d'horloge de référence. Il peut utiliser un logiciel NTP comme chronyd ou ntpd pour se connecter à un serveur NTP et obtenir l'heure exacte. Les ordinateurs de bureau peuvent également utiliser leur horloge interne pour synchroniser l'horloge, mais cela peut causer une divergence de temps car les horloges internes sont généralement moins précises que les horloges atomiques ou GPS.

Un serveur NTP (Network Time Protocol) est un ordinateur qui utilise le protocole NTP pour synchroniser l'horloge de son système avec une source d'horloge de référence, généralement un horloge atomique ou GPS. Les clients NTP se connectent au serveur NTP pour obtenir l'heure exacte et synchroniser leur propre horloge. Les serveurs NTP peuvent également être utilisés pour fournir une synchronisation de temps pour d'autres serveurs dans un réseau, formant une hiérarchie de serveurs NTP. Les serveurs NTP peuvent être configurés pour fonctionner en mode actif ou passif, les serveurs actifs étant responsables de l'émission de temps, les serveurs passifs ne fournissant que des informations de temps.

Il existe de nombreux serveurs NTP publics disponibles sur Internet que vous pouvez utiliser pour synchroniser l'horloge de votre ordinateur de bureau. Quelques exemples de serveurs NTP publics fiables :

  • pool.ntp.org : un groupe de serveurs NTP gérés par des bénévoles qui sont disponibles pour une utilisation publique.
  • time.google.com : Serveur NTP géré par Google.
  • time.nist.gov : Serveur NTP géré par l'Institut national des normes et de la technologie des États-Unis (NIST).
  • time.windows.com : Serveur NTP géré par Microsoft.

Vous devriez utiliser des serveurs NTP de confiance et les utiliser de manière responsable, en respectant les politiques d'utilisation des serveurs choisis. Il est également bon de choisir des serveurs NTP proches géographiquement pour réduire les délais de transmission et améliorer la précision de la synchronisation.

Avec le réseau de serveurs pool.ntp.org vous pouvez utiliser un serveur NTP proche géographiquement.

type de zone eplication exemple
région géographique spécifique pool.ntp.org est divisé en régions géographiques, vous pouvez donc utiliser un serveur NTP de la région géographique spécifique où vous vous trouvez. Si vous êtes en France, vous pouvez utiliser un serveur fr.ntp.pool.org
zone géographique spécifique pool.ntp.org est divisé en zones géographiques, vous pouvez donc utiliser un serveur NTP de la zone géographique spécifique où vous vous trouvez. Si vous êtes en Europe, vous pouvez utiliser un serveur europe.ntp.pool.org
serveur NTP au hasard Vous pouvez utiliser un serveur NTP au hasard à partir de la liste des serveurs NTP de pool.ntp.org. Cela choisira un serveur au hasard pour vous, mais cela n'est pas garanti pour être proche géographiquement. pool.ntp.org

Voir la répartition des zones sur le site https://www.pool.ntp.org/zone/@

Le résumé pour Fedora :

~/.profile

Définir le fuseau horaire pour un profil

TZ='Europe/Paris'; export TZ

timedatectl

Définir un fuseau horaire pour la machine

timedatectl set-timezone Europe/Paris

/etc/chrony.conf utilisé avec chronyd

Modifier la liste des serveurs NTP pour chrony

pool 0.fr.pool.ntp.org iburst
pool 1.fr.pool.ntp.org iburst
pool 2.fr.pool.ntp.org iburst
pool 3.fr.pool.ntp.org iburst

hwclock

Utilisation du fuseau UTC avec la RTC

sudo hwclock --systohc --utc

Place aux explications afin de mieux appréhender le paramétrage de votre machine.

Définir le fuseau horaire pour un profil

Vous pouvez utiliser votre fuseau horaire avec la commande tzselect sous Fedora. Pour définir un fuseau horaire de votre profil, compléter le fichier .profile en ajoutant la ligne suivante :

TZ='Europe/Paris'; export TZ

La variable d'environnement TZ contient la définition du fuseau horaire. En spécifiant TZ='Europe/Paris' dans le fichier .profile, vous définissez le fuseau horaire de l'utilisateur à celui de Paris, France.

Définir un fuseau horaire pour la machine

Utilisez la commande timedatectl. Cette commande permet de configurer les paramètres de date et d'heure, y compris le fuseau horaire. Pour définir le fuseau horaire à Paris, utilisez la commande suivante :

timedatectl set-timezone Europe/Paris

La commande timedatectl permet d'afficher les paramètres de date et d'heure du système :

❯ timedatectl
               Local time: sam. 2023-01-28 17:54:43 CET
           Universal time: sam. 2023-01-28 16:54:43 UTC
                 RTC time: sam. 2023-01-28 16:54:43
                Time zone: Europe/Paris (CET, +0100)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

Chronyd est un démon NTP (Network Time Protocol) pour les systèmes Linux. Il est utilisé pour synchroniser l'horloge du système avec un serveur NTP en utilisant le protocole NTP. Il est conçu pour être plus rapide et plus efficace que d'autres implémentations NTP telles que ntpd, et peut être utilisé pour synchroniser les systèmes distribués avec une précision de l'ordre de la microseconde. Chronyd est également capable de s'adapter automatiquement aux conditions de réseau changeantes et peut fonctionner avec des périphériques GPS pour fournir une synchronisation GPS haute précision. Il est également souvent utilisé pour fournir une synchronisation de temps pour les réseaux locaux et les systèmes embarqués.

Comme NTP est entièrement en UTC (Universal Time, Coordinated), les fuseaux horaires et DST (Daylight Saving Time) sont appliqués localement par le système. /etc/localtime est un fichier de configuration sur les systèmes Linux et Unix qui contient les informations de fuseau horaire pour la zone géographique où se trouve l'ordinateur. Ce fichier est utilisé pour configurer la date et l'heure locale de l'ordinateur. Il est généralement lié symboliquement au fichier de données de fuseau horaire approprié dans /usr/share/zoneinfo. Le fichier /etc/localtime est utilisé par les programmes système tels que les fonctions de date et d'heure de glibc, ainsi que par les applications utilisateur, pour afficher la date et l'heure dans le fuseau horaire local. Lorsque vous modifiez la configuration de fuseau horaire de votre ordinateur, vous devriez également mettre à jour ce fichier pour refléter les modifications. Sous Fedora, le programme qui configure le fichier /etc/localtime est généralement timedatectl.

Vérifier le fonctionnement du service chronyd

sudo systemctl status chronyd

Cette commande vous permet de voir le statut actuel du démon chronyd (chronyd est un démon NTP pour systèmes Linux qui est utilisé pour synchroniser l'heure du système avec un serveur NTP).

Si chronyd est en cours d'exécution, la commande affichera des informations telles que l'état actuel du démon (actif, en cours d'exécution), l'heure de démarrage, la version utilisée, etc. Si chronyd ne fonctionne pas, la commande affichera des informations sur les raisons de l'échec et les erreurs éventuelles.

❯ sudo systemctl status chronyd
● chronyd.service - NTP client/server
     Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; preset: enabled)
     Active: active (running) since Sat 2023-01-28 17:19:03 CET; 1h 0min ago
       Docs: man:chronyd(8)
             man:chrony.conf(5)
    Process: 161575 ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=0/SUCCESS)
   Main PID: 161577 (chronyd)
      Tasks: 1 (limit: 19029)
     Memory: 1.0M
        CPU: 49ms
     CGroup: /system.slice/chronyd.service
             └─161577 /usr/sbin/chronyd -F 2

janv. 28 17:19:03 cdcdsk001 systemd[1]: Starting chronyd.service - NTP client/server...
janv. 28 17:19:03 cdcdsk001 chronyd[161577]: chronyd version 4.3 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCF>
janv. 28 17:19:03 cdcdsk001 chronyd[161577]: Frequency 3.866 +/- 0.157 ppm read from /var/lib/chrony/drift
janv. 28 17:19:03 cdcdsk001 chronyd[161577]: Using right/UTC timezone to obtain leap second data
janv. 28 17:19:03 cdcdsk001 chronyd[161577]: Loaded seccomp filter (level 2)
janv. 28 17:19:03 cdcdsk001 systemd[1]: Started chronyd.service - NTP client/server.
janv. 28 17:21:14 cdcdsk001 chronyd[161577]: Selected source 5.196.8.113 (1.fr.pool.ntp.org)
janv. 28 17:21:14 cdcdsk001 chronyd[161577]: System clock TAI offset set to 37 seconds

Surveiller l'état de synchronisation

La commande chronyc tracking permet de surveiller l'état de synchronisation de l'horloge du système avec les serveurs NTP spécifiés dans la configuration de chronyd. Elle affiche des informations telles que l'heure actuelle, l'offset (différence) entre l'heure du système et l'heure du serveur NTP, la jitter (variabilité de la latence de réseau) et la qualité de l'horloge du serveur NTP.

❯ chronyc tracking
Reference ID    : 05C40871 (vps-3f94841e.vps.ovh.net)
Stratum         : 3
Ref time (UTC)  : Sat Jan 28 17:24:53 2023
System time     : 0.000200679 seconds fast of NTP time
Last offset     : +0.000098416 seconds
RMS offset      : 0.000396241 seconds
Frequency       : 3.828 ppm fast
Residual freq   : +0.006 ppm
Skew            : 0.169 ppm
Root delay      : 0.045918304 seconds
Root dispersion : 0.017629473 seconds
Update interval : 515.0 seconds
Leap status     : Normal

Serveurs NTP utilisés

La commande chronyc sources permet d'afficher les informations sur les serveurs NTP utilisés par chronyd pour synchroniser l'horloge du système. Cela inclut l'adresse IP, le statut de la synchronisation, l'offset, la jitter, la qualité de l'horloge et d'autres informations. Elle peut aider à identifier les serveurs NTP qui fonctionnent bien et ceux qui ont des problèmes de synchronisation.

❯ chronyc sources
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^? ntp.tuxfamily.net             0   6     0     -     +0ns[   +0ns] +/-    0ns
^? ip139.ip-5-196-160.eu         2   6     1     0   +806us[ +806us] +/-   21ms
^? 51-158-147-92.rev.poneyt>     2   6     1     0  -1081us[-1081us] +/-   61ms
^? flightplandatabase.com        2   6     1     0    -17ms[  -17ms] +/-   72ms
^? ntp.univ-angers.fr            0   6     0     -     +0ns[   +0ns] +/-    0ns
^? vps-3f94841e.vps.ovh.net      0   6     0     -     +0ns[   +0ns] +/-    0ns
^? time.cloudflare.com           0   6     0     -     +0ns[   +0ns] +/-    0ns
^? vps-7d02b399.vps.ovh.net      2   6     1     2  -9569us[-9569us] +/-   78ms
^? ns2.euskill.com               0   6     0     -     +0ns[   +0ns] +/-    0ns
^? vps-4fbcd565.vps.ovh.net      2   6     1     1  +4160us[+4160us] +/-   28ms
^? herbrand.noumicek.cz          2   6     1     2  -1527us[-1527us] +/-   61ms
^? 82-64-84-116.subs.proxad>     0   6     0     -     +0ns[   +0ns] +/-    0ns
^? y.ns.gin.ntt.net              0   6     0     -     +0ns[   +0ns] +/-    0ns

Modifier la liste des serveurs pour chrony

Pour modifier la liste des serveurs NTP utilisés par chronyc, vous pouvez éditer le fichier de configuration /etc/chrony.conf et y ajouter ou supprimer des lignes de serveurs NTP. Il est recommandé de sauvegarder le fichier de configuration avant de l'éditer.

Pour ajouter un serveur NTP, ajoutez une ligne commençant par server suivi de l'adresse IP ou le nom d'hôte du serveur NTP ou l'adresse d'un pool NTP. Par exemple, pour ajouter les pool de serveurs NTP France de pool.ntp.org, ajoutez les lignes suivantes :

pool 0.fr.pool.ntp.org iburst
pool 1.fr.pool.ntp.org iburst
pool 2.fr.pool.ntp.org iburst
pool 3.fr.pool.ntp.org iburst

“pool” est une commande qui indique au démon NTP de se synchroniser avec un groupe de serveurs NTP plutôt qu'avec un serveur NTP particulier.

“iburst” est une option qui indique au démon NTP de faire des demandes de temps plus fréquentes et plus rapides au démarrage pour synchroniser rapidement l'horloge de l'ordinateur.

L'horloge système fonctionne grâce à un composant matériel qui se trouve dans la plupart des ordinateurs et des appareils électroniques. Il se nomme RTC, ce qui signifie “Real-time Clock” ou “horloge temps réel” en français.
La RTC est souvent utilisée pour maintenir l'heure et la date dans les ordinateurs, les serveurs, les routeurs, les téléphones mobiles, etc. Elle est également utilisée pour générer des événements périodiques pour les tâches de planification et pour enregistrer la date et l'heure des événements dans les journaux système. Il est important de maintenir l'heure et la date de la RTC à jour, car de nombreux systèmes et applications dépendent de l'exactitude de cette horloge pour fonctionner correctement. Il est conseillé de configurer la RTC en UTC.

Le fichier /etc/adjtime est utilisé pour configurer la synchronisation de l'horloge système avec la RTC (Real-time Clock) sur les systèmes basés sur Linux.

Les lignes indiquent respectivement :

1 · 3 valeurs successives : a) La correction de décalage de l'horloge en secondes. b) Le signe de la correction de décalage de l'horloge. c)La vitesse de correction de décalage de l'horloge en secondes par jour.

2 · Le statut de synchronisation. 0 (ou “no” ou “false”) : l'horloge système n'est pas synchronisée avec la RTC. 1 (ou “yes” ou “true”) : l'horloge système est synchronisée avec la RTC. 2 : l'horloge système est en train d'être synchronisée avec la RTC.

3 · Le fuseau horaire utilisé pour l'horloge système, ici “UTC” qui signifie Temps Universel Coordonné, Il est utilisé comme référence pour l'heure légale dans la plupart des pays. Il est conseillé de configurer la RTC en UTC.

Exemple :

0.0 0 0.0
0
UTC

Consulter la RTC

La commande hwclock permet de configurer les paramètres liés à l'horloge matérielle (RTC). Utilisation pour consulter l'horloge RTC par exemple :

❯ sudo hwclock
2023-01-28 18:05:15.187034+01:00

Utilisation du fuseau UTC

Pour configurer l'horloge matérielle (RTC) pour utiliser le fuseau horaire UTC au lieu de LOCAL, vous pouvez utiliser la commande suivante en tant qu'utilisateur administrateur :

sudo hwclock --systohc --utc

Cela configurera l'horloge matérielle pour utiliser UTC et synchronisera l'heure de l'horloge matérielle avec l'heure système actuelle, en utilisant UTC.

Cela ne va pas changer le fuseau horaire de l'heure système, pour cela vous devrez utiliser la commande timedatectl pour changer le fuseau horaire de votre système.

  • informatique/applications/ntp_synchronisation_de_l_heure.txt
  • Dernière modification : 2023/02/10 23:48
  • de Cédric ABONNEL