Synchronisation de l'heure à l'aide du protocole NTP/NTS
- CONTENU
Cet article décrit en quoi consiste la synchronisation horaire et comment la configurer.
- MOTIF
La synchronisation de l'heure système est cruciale lors du partage de tâches et de ressources avec d'autres membres de l'équipe sur le réseau.
- EFFORT
Comptez jusqu'à 60 minutes pour lire cet article et effectuer une configuration de base de la synchronisation horaire sur votre ordinateur.
- CONDITIONS REQUISES
Une connaissance de base de l'administration du système Linux est requise. Certaines tâches exigent des privilèges
root
.Une connexion réseau fonctionnelle au réseau interne ou à Internet pour atteindre le serveur horaire source.
1 Introduction #
Une heure système exacte et synchronisée sur l'ordinateur est essentielle pour le travail d'équipe. Les applications de planification et d'agenda comptent sur cette ponctualité pour suivre l'heure comme il se doit et informer les utilisateurs à temps de leurs rendez-vous. Pour les applications en cluster, les machines hôtes individuelles requièrent souvent une heure système synchronisée pour une communication mutuelle.
L'horloge matérielle intégrée n'est pas une source horaire fiable. Une correction manuelle de l'heure système peut entraîner un dysfonctionnement des applications essentielles en raison de sauts de temps soudains. Par conséquent, l'heure système doit être synchronisée avec une source horaire externe fiable sur le réseau.
1.1 Présentation du protocole NTP #
Le protocole NTP (Network Time Protocol) est conçu pour synchroniser l'heure système sur le réseau. Son objectif est de conserver l'heure absolue et de l'utiliser pour synchroniser l'heure système de toutes les machines d'un réseau.
1.2 Présentation du protocole NTS #
NTS (Network Time Security) est une extension de sécurité de NTP. NTS fournit des mécanismes pour authentifier les messages NTP et les chiffrer, ce qui garantit que les données horaires reçues sont à la fois sécurisées et authentiques. NTS est conçu pour permettre une rétrocompatibilité avec l'infrastructure NTP existante. Cela permet un déploiement progressif sans nécessiter de modifications sur les serveurs NTP existants qui ne prennent pas en charge NTS.
1.3 Mode de fonctionnement #
Lorsque le service NTP est correctement configuré, il interroge et ajuste en permanence l'heure système avec des serveurs horaires fiables. Généralement, les ordinateurs personnels et les autres périphériques connectés à Internet sont configurés pour interroger un serveur horaire public sur Internet.
À l'inverse, les ordinateurs de bureau et les serveurs qui résident dans un sous-réseau d'entreprise sont configurés pour interroger un serveur horaire dédié au sein du réseau local. Le serveur horaire proprement dit synchronise son heure avec un serveur horaire public.
1.3.1 Implémentation #
chrony
est l'implémentation par défaut de NTP dans SUSE Linux Micro. chrony
comprend deux parties :
chronyd
est un servicesystemd
qui peut être lancé au moment du démarrage.chronyc
est un programme d'interface de ligne de commande permettant de surveiller les performances dechronyd
et de modifier des paramètres de fonctionnement spécifiques pendant l'exécution.
1.4 Avantages #
L'utilisation de NTP pour maintenir l'heure exacte présente les avantages suivants :
Les utilisateurs peuvent se fier à leur horloge lorsqu'ils doivent respecter un calendrier planifié.
Les applications peuvent déclencher avec précision des opérations planifiées sur le bureau ou le système.
Les noeuds de grappe peuvent maintenir leurs données synchronisées et à jour.
L'utilisation d'un serveur horaire interne permet de maintenir l'heure système synchronisée dans les réseaux ayant un accès limité à Internet.
En intégrant des mesures de sécurité dans NTP via NTS, le protocole améliore sa robustesse et corrige les vulnérabilités associées à la synchronisation horaire non sécurisée.
2 Configuration de NTP en ajustant /etc/chrony.conf
#
Quand il démarre, chronyd
lit sa configuration dans le fichier /etc/chrony.conf
. Les sections suivantes répertorient les paramètres importants susceptibles d'affecter le comportement de chronyd
.
2.1 Spécification des sources horaires #
Pour que l'horloge de l'ordinateur reste synchronisée, vous devez indiquer à chronyd
les sources horaires à utiliser. Pour ce faire, utilisez les directives server
, pool
et peer
. Vous pouvez utiliser chacune d'elles plusieurs fois.
La directive server
indique à chronyd
d'utiliser un hôte spécifique comme serveur horaire par son nom ou son adresse IP.
server 0.europe.pool.ntp.org offline1 server 1.europe.pool.ntp.org offline prefer2 server 192.168.2.254
L'option | |
L'option |
La directive pool
vous permet de spécifier un nom de réseau qui se résout en plusieurs adresses IP susceptibles de changer au fil du temps.
pool pool.ntp.org iburst1 maxsources 32
L'option | |
L'option |
La directive peer
spécifie un hôte homologue NTP au lieu d'un serveur horaire. La synchronisation horaire du système entre homologues utilise une architecture symétrique au lieu du mode client/serveur invoqué par les options server
et pool
. Vous pouvez utiliser peer
plusieurs fois pour spécifier plusieurs homologues.
peer 192.168.1.116 peer ntp.example.com
2.2 Exécution de chronyd
en tant que serveur NTP #
Par défaut, chronyd
fonctionne comme un client pour les serveurs NTP spécifiés. Pour qu'il fonctionne comme serveur NTP également, ajoutez la directive allow
au fichier /etc/chrony.conf
. Elle ouvre le port du serveur NTP (123 par défaut) et répond aux requêtes des clients.
Vous pouvez spécifier une adresse IP unique pour un client NTP ou un sous-réseau pour inclure plusieurs clients. Vous pouvez utiliser la directive allow
plusieurs fois :
allow 1.2.3.4 allow 3.4.5.0/24
Si vous ne spécifiez pas d'adresse IP ou de sous-réseau, la directive allow
autonome autorise l'accès à partir de toutes les adresses IPv4 et IPv6.
Pour limiter l'accès de la directive allow
précédente, utilisez la directive deny
:
allow 1.2.3.4 deny 1.2.3.0/24 allow 1.2.0.0/16
Dans l'exemple ci-dessus, l'effet est identique quel que soit l'ordre des trois directives. Le sous-réseau 1.2.0.0/16
est autorisé à accéder mais pas le sous-réseau 1.2.3.0/24
, auquel l'accès est refusé. L'accès est toutefois autorisé à l'hôte 1.2.3.4
.
2.3 Configuration d'une horloge de référence locale #
chronyd
se base sur d'autres programmes (tels que gpsd
) pour accéder aux données de synchronisation via un pilote spécifique. Utilisez la directive refclock
dans /etc/chrony.conf
pour spécifier une horloge de référence matérielle à utiliser comme source horaire. Elle comporte deux paramètres obligatoires : un nom de pilote et un paramètre spécifique au pilote. Les deux paramètres sont suivis par zéro ou plusieurs options refclock
. chronyd
inclut les pilotes suivants :
- PPS
Pilote pour l'API Pulse Per Second du kernel. Par exemple :
refclock PPS /dev/pps0 lock NMEA refid GPS
- SHM
Pilote de mémoire partagée NTP. Par exemple :
refclock SHM 0 poll 3 refid GPS1 refclock SHM 1:perm=0644 refid GPS2
- SOCK
Pilote de socket de domaine Unix. Par exemple :
refclock SOCK /var/run/chrony.ttyS0.sock
- PHC
Pilote d'horloge matérielle PTP. Par exemple :
refclock PHC /dev/ptp0 poll 0 dpoll -2 offset -37 refclock PHC /dev/ptp1:nocrossts poll 3 pps
Pour plus d'informations sur les options des différents pilotes, reportez-vous à la commande man 8
chrony.conf
.
2.4 Activation des sources horaires hors ligne #
Même s'il se lance normalement sur un système qui démarre sans connexion réseau, chronyd
ne peut pas accéder aux serveurs horaires spécifiés dans /etc/chrony.conf
. Pour empêcher chronyd
de tenter d'interroger des serveurs horaires inaccessibles, utilisez l'option offline
derrière la directive de source horaire, par exemple :
server ntp.example.org offline
Dans ce cas, chronyd
ne tente pas d'interroger le serveur tant qu'il n'est pas activé à l'aide de la commande suivante :
#
chronyc online ntp.example.org
Lorsque l'option auto_offline
est définie à la place de offline
, chronyd
suppose que le serveur horaire est hors ligne si deux requêtes lui ont été envoyées sans réponse. Cette option évite d'avoir à exécuter la commande offline
à partir de chronyc
lors de la déconnexion de la liaison réseau.
3 Gestion de chronyd
au moment de l'exécution #
3.1 Présentation de chronyc
#
chronyc
est la partie client de l'implémentation NTP chrony
. Vous pouvez utiliser la commande chronyc
pour modifier le comportement du service chronyd
lors de l'exécution. Elle génère également des rapports d'état sur le fonctionnement de chronyd
.
Les modifications apportées à l'aide de chronyc
ne sont pas permanentes. Elles seront perdues au prochain redémarrage de chronyd
. Pour que les changements soient permanents, modifiez /etc/chrony.conf
comme décrit à la Section 2, « Configuration de NTP en ajustant /etc/chrony.conf
».
3.2 Fonctionnement de chronyc
#
Vous pouvez exécuter chronyc
en mode interactif ou non interactif. Pour exécuter chronyc
de manière interactive, entrez chronyc
sur la ligne de commande, puis appuyez sur Entrée. Une invite s'affiche et attend que vous entriez une commande. Par exemple, pour vérifier combien de sources NTP sont en ligne ou hors ligne, exécutez la commande activity
:
#
chronyc
chronyc> activity
200 OK
4 sources online
2 sources offline
1 sources doing burst (return to online)
1 sources doing burst (return to offline)
0 sources with unknown address
Pour quitter l'invite de chronyc
, entrez quit
ou exit
.
Si vous n'avez pas besoin d'utiliser l'invite interactive, entrez la commande directement, par exemple :
#
chronyc
activity
4 Le service chronyd
systemd
#
La partie principale de chrony
est le service chronyd
systemd
qui s'exécute en arrière-plan et synchronise l'heure système avec les serveurs horaires sélectionnés. Vous pouvez utiliser les commandes systemd
suivantes pour faire fonctionner le service chronyd
:
-
systemctl status chronyd.service
Imprime des informations détaillées sur l'état actuel du service
chronyd
.-
systemctl is-enabled chronyd.service
Vérifie si le démarrage automatique du service
chronyd
au démarrage du système est activé.-
systemctl enabled chronyd.service
Active le démarrage automatique du service
chronyd
au démarrage du système.-
systemctl disable chronyd.service
Désactive le démarrage automatique du service
chronyd
au démarrage du système.-
systemctl is-active chronyd.service
Vérifie si le service
chronyd
a été démarré et est en cours d'exécution.-
systemctl start chronyd.service
Démarre le service
chronyd
.-
systemctl stop chronyd.service
Arrête le service
chronyd
.-
systemctl restart chronyd.service
Redémarre le service
chronyd
et recharge/etc/chronyd.conf
.
5 Dépannage #
En cas d'erreur, vérifiez les points suivants.
Vérifiez que votre ordinateur est connecté à un réseau et que le réseau est correctement configuré :
>
sudo
systemctl status network.service ● NetworkManager.service - Network Manager Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2021-08-07 20:09:44 CEST; 4 days ago [...]Vérifiez que les serveurs horaires que vous avez entrés comme source horaire existent et sont accessibles sur le réseau. Par exemple :
>
ping pool.ntp.org PING pool.ntp.org (85.199.214.101) 56(84) bytes of data. 64 bytes from 85.199.214.101 (85.199.214.101): icmp_seq=1 ttl=37 time=29.9 ms [...]Si le service
firewalld
est actif sur votre ordinateur, vérifiez que le service NTP est autorisé.Vérifiez que le service
chronyd
est en cours d'exécution :>
sudo
systemctl status chronyd.service ● chronyd.service - NTP client/server Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2021-08-07 20:09:44 CEST; 4 days ago [...]Si l'heure système d'un invité virtualisé diffère de l'heure exacte, assurez-vous que l'heure système du serveur hôte de la machine virtuelle est synchronisée avec un serveur horaire valide et que l'invité est synchronisé avec la même source horaire que l'hôte.
Si le service NTP ne se lance pas correctement au démarrage du système, cela peut être dû à des commutateurs réseau configurés pour utiliser le
Spanning Tree Protocol
, alors que les ports ne sont pas configurés commeEdge Ports
mais commePortfast
. Dans ce cas, l'établissement de la connectivité réseau peut prendre jusqu'à une minute.Si le service NTP ne démarre pas lors du démarrage du système lorsque NetworkManager est utilisé, modifiez le fichier
/etc/sysconfig/network/config
, puis modifiez la valeur deNM_ONLINE_TIMEOUT
sur 30. Si le problème persiste, augmentez la valeur de timeout de 15, puis réessayez.Si les sources NTP ne sont pas accessibles, identifiez-les avec la commande suivante :
>
chronyc sources -v [...] MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* time.mydomain.com 3 10 377 81 -5354us[-8257us] +/- 191ms ^? ntp1.example.com 0 10 0 - +0ns[ +0ns] +/- 0ns ^? 77.177.77.177 0 10 0 - +0ns[ +0ns] +/- 0ns ^? ntp3.example.com 0 10 0 - +0ns[ +0ns] +/- 0ns ^? ntp4.example.net 0 10 0 - +0ns[ +0ns] +/- 0ns ^? 2a02:3d8:1::1:1 0 6 0 - +0ns[ +0ns] +/- 0ns ^? ntp2.example.org 0 10 0 - +0ns[ +0ns] +/- 0nsDans ce cas, le seul serveur qui fournit réellement l'heure est
time.mydomain.com
. Il est nécessaire de résoudre globalement la connexion réseau au niveau des sources horaires NTP distantes défaillantes.
6 Informations supplémentaires #
La sécurisation de votre ordinateur avec
firewalld
est décrite dans le document https://documentation.suse.com/sles/html/SLES-all/cha-security-firewall.html#sec-security-firewall-firewalld.Les commandes pour le fonctionnement de
systemd
sont répertoriées dans le document https://susedoc.github.io/doc-modular/main/html/reference-systemctl-enable-disable-services/.Pour une référence complète, reportez-vous aux pages de manuel correspondantes :
Pour obtenir la liste complète des directives de configuration, exécutez
man 1 chrony.conf
.Pour obtenir la liste complète des commandes
chronyc
, exécutezman 1 chronyc
.Pour obtenir la liste complète des options de ligne de commande
chronyd
, exécutezman 8 chronyd
.
7 Mentions légales #
Copyright © 2006–2025 SUSE LLC et contributeurs. Tous droits réservés.
Il est autorisé de copier, distribuer et/ou modifier ce document conformément aux conditions de la licence de documentation libre GNU version 1.2 ou (à votre discrétion) 1.3, avec la section permanente qu'est cette mention de copyright et la licence. Une copie de la version de licence 1.2 est incluse dans la section intitulée « Licence de documentation libre GNU ».
Pour les marques commerciales SUSE, consultez le site Web https://www.suse.com/company/legal/. Toutes les autres marques de fabricants tiers sont la propriété de leur détenteur respectif. Les symboles de marque (®, ™, etc.) désignent des marques commerciales de SUSE et de ses sociétés affiliées. Des astérisques (*) désignent des marques commerciales de fabricants tiers.
Toutes les informations de cet ouvrage ont été regroupées avec le plus grand soin. Cela ne garantit cependant pas sa complète exactitude. Ni SUSE LLC, ni les sociétés affiliées, ni les auteurs, ni les traducteurs ne peuvent être tenus responsables des erreurs possibles ou des conséquences qu'elles peuvent entraîner.