Comment configurer ntpd sur Ubuntu : synchronisation temporelle fiable pour des systèmes stables

.## 1. Introduction : Pourquoi la synchronisation du temps est importante

目次

Problèmes causés par la dérive de l’horloge système

Sur les systèmes Linux tels qu’Ubuntu, maintenir une heure système précise est d’une importance cruciale. À première vue, un petit écart d’horloge peut sembler anodin, mais dans les opérations serveur et les environnements d’applications, même une dérive mineure peut entraîner des problèmes graves.

Par exemple, les problèmes suivants peuvent survenir :

  • Perte de cohérence des journaux : si les horodatages des journaux système ou d’application sont désynchronisés, il devient difficile d’identifier la cause première des incidents.
  • Mauvais fonctionnement des tâches cron : les tâches planifiées comme les sauvegardes ou les jobs batch peuvent ne pas s’exécuter au bon moment, provoquant un comportement inattendu.
  • Échecs de certificats SSL et d’authentification : les communications HTTPS et l’authentification SSH reposent sur une heure système exacte. Si l’horloge est incorrecte, les certificats peuvent être jugés « expirés » ou « pas encore valides », entraînant des erreurs de connexion.

Ces enjeux deviennent particulièrement sérieux lorsque plusieurs serveurs doivent être synchronisés à travers un réseau.

Le rôle et l’importance du NTP

Pour prévenir ces problèmes, NTP (Network Time Protocol) est utilisé. NTP communique avec des serveurs de temps via Internet ou un réseau local et corrige automatiquement l’horloge du système.

Sur Ubuntu, plusieurs outils liés à NTP sont disponibles, dont ntpd, chrony et systemd‑timesyncd. Dans cet article, nous nous concentrons sur ntpd (daemon du Network Time Protocol) et expliquons en détail comment l’installer et l’utiliser sur Ubuntu.

Pour les serveurs qui fonctionnent en continu sur de longues périodes ou les systèmes où la cohérence des journaux est essentielle, ntpd est très apprécié pour sa stabilité.

Dans la section suivante, nous commencerons par expliquer ce qu’est ntpd, son rôle principal et les options disponibles sur Ubuntu.

2. Qu’est‑ce que ntpd ? Son rôle et ses alternatives sur Ubuntu

Vue d’ensemble et fonctionnalités de ntpd

ntpd (Network Time Protocol Daemon) est un service d’arrière‑plan qui maintient l’heure du système précise en utilisant NTP. Il communique périodiquement avec des serveurs NTP sur Internet ou le réseau local et ajuste automatiquement l’horloge du système.

Une caractéristique clé de ntpd est sa capacité à réaliser une « synchronisation douce », corrigeant progressivement la dérive plutôt que d’effectuer des changements brusques. Cette conception évite les impacts négatifs sur les systèmes et applications en cours d’exécution.

ntpd prend également en charge des fonctionnalités avancées de NTP telles que la communication symétrique et l’authentification, le rendant adapté aux environnements d’entreprise.

Outils de synchronisation du temps disponibles sur Ubuntu

Ubuntu propose plusieurs options pour la synchronisation du temps :

  • ntpd (paquet ntp) : largement utilisé dans les opérations à long terme et les environnements nécessitant une configuration détaillée. Il offre une grande flexibilité et stabilité, et peut se synchroniser avec précision sur des serveurs NTP publics.
  • chrony : une alternative moderne à ntpd, très précise et dotée d’une synchronisation initiale très rapide. Elle fonctionne bien sur des systèmes à faibles ressources et des machines virtuelles, et de nombreuses distributions l’utilisent désormais par défaut.
  • systemd‑timesyncd : un service de synchronisation léger activé par défaut sur Ubuntu 20.04 et versions ultérieures. Il est simple et pratique, mais limité en fonctionnalités et peu adapté aux configurations avancées ou à l’exploitation d’un serveur NTP local.

Pourquoi choisir ntpd ?

La raison principale de choisir ntpd sur Ubuntu est sa fiabilité et stabilité. Il est particulièrement adapté aux scénarios suivants :

  • Serveurs fonctionnant en continu sur de longues périodes où la précision de l’heure est critique
  • Environnements nécessitant la mise en place d’un serveur NTP local au sein d’un réseau
  • Cas d’usage en entreprise requérant authentification et contrôle granulaire

Étant donné que ntpd possède une longue histoire opérationnelle et une large compatibilité, il offre une tranquillité d’esprit lors du déploiement.

3. Installation et configuration initiale de ntpd sur Ubuntu

Installation de ntpd

Pour utiliser ntpd sur Ubuntu, vous devez d’abord installer le paquet ntp. Cela peut être fait facilement avec les commandes suivantes :

sudo apt update
sudo apt install ntp

Cela installe ntpd et ses fichiers associés. Selon votre version d’Ubuntu, chrony ou systemd-timesyncd peut être activé par défaut. Dans ces cas, il est recommandé de les désactiver ou de les supprimer à l’avance.

sudo systemctl stop systemd-timesyncd
sudo systemctl disable systemd-timesyncd

Activation du service et vérification du démarrage

Après l’installation, activez le service ntpd et vérifiez qu’il fonctionne :

sudo systemctl enable ntp
sudo systemctl start ntp
sudo systemctl status ntp

Si le statut affiche active (running), ntpd fonctionne correctement.

Vérification et modification du fichier de configuration initial

La configuration de ntpd est définie dans /etc/ntp.conf. Par défaut, plusieurs serveurs NTP (généralement du réseau pool.ntp.org) sont configurés.

D’abord, examinez le fichier de configuration :

cat /etc/ntp.conf

Si vous souhaitez spécifier des serveurs situés au Japon, vous pouvez modifier la configuration comme suit :

server ntp.nict.jp iburst

L’option iburst améliore la vitesse de synchronisation lors de la connexion initiale et est recommandée.

Après avoir apporté des modifications, redémarrez ntpd pour les appliquer :

sudo systemctl restart ntp

Vérification de la synchronisation automatique de l’heure

ntpd synchronise automatiquement l’heure après le démarrage. Pour vérifier le bon fonctionnement, utilisez la commande suivante :

ntpq -p

Cette commande affiche une liste des serveurs NTP connectés avec le délai, le décalage et d’autres informations détaillées.

4. Configuration et personnalisation des serveurs NTP

Sélection des serveurs NTP recommandés

L’un des aspects les plus importants de la configuration de ntpd est la sélection des serveurs NTP avec lesquels synchroniser. Lors de la connexion via Internet, spécifier des serveurs NTP fiables situés géographiquement proches — comme des serveurs nationaux — peut fournir une synchronisation de l’heure plus stable et précise.

Des serveurs NTP représentatifs au Japon incluent :

  • ntp.nict.jp (Institut national des technologies de l’information et des communications)
  • ntp.jst.mfeed.ad.jp (JST / Mfeed)
  • ntp.ring.gr.jp (Internet Multi Feed)

Ces serveurs sont exploités sur la base d’horloges atomiques de haute précision et peuvent être utilisés à des fins personnelles sans enregistrement spécial.

Vous pouvez configurer la synchronisation avec ces serveurs en ajoutant les entrées suivantes à /etc/ntp.conf :

server ntp.nict.jp iburst
server ntp.jst.mfeed.ad.jp iburst
server ntp.ring.gr.jp iburst

Options de configuration détaillées dans ntp.conf

Le fichier /etc/ntp.conf permet un contrôle fin au-delà de la simple spécification des serveurs NTP. Ci-dessous figurent quelques directives couramment utilisées.

  • directive restrict Contrôle quels clients sont autorisés ou restreints pour accéder au service NTP. Pour des raisons de sécurité, l’accès inutile doit être limité. Exemple : autoriser l’accès depuis un réseau local.
    restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
    
  • driftfile Spécifie le fichier utilisé pour enregistrer la dérive de l’horloge système. Dans la plupart des cas, le paramètre par défaut est suffisant.
    driftfile /var/lib/ntp/ntp.drift
    

Construction d’un serveur NTP local au sein d’un réseau

En utilisant ntpd sur Ubuntu, vous pouvez également exploiter le système en tant que serveur NTP local qui distribue l’heure à d’autres appareils sur un réseau interne. Cette configuration est utile dans les environnements sans accès Internet ou où une gestion cohérente de l’heure sur plusieurs systèmes est requise.

Une procédure de configuration exemple est la suivante :

  1. Ajoutez une règle restrict à /etc/ntp.conf pour autoriser l’accès local : restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
  2. Configurez les PC clients pour référencer le serveur NTP local : server 192.168.0.10 iburst # IP local du serveur NTP
  3. Autorisez le port NTP sur le serveur (permettez le port UDP 123 dans le pare-feu) : sudo ufw allow 123/udp

Si la communication est bloquée, la synchronisation de l’heure échouera, et la commande ntpq n’affichera pas de connexion au serveur.

5. Vérification du fonctionnement et dépannage de ntpd

Vérification du statut du service

Pour confirmer si ntpd fonctionne correctement, utilisez la commande suivante :

sudo systemctl status ntp

Si active (running) est affiché, ntpd fonctionne normalement. Si le statut est inactive ou failed, une erreur de configuration ou un problème de dépendance peut empêcher le démarrage.

Pour les journaux détaillés, la commande suivante est utile :

journalctl -u ntp

Cela vous permet d’examiner l’historique de démarrage et les messages d’erreur du service ntpd dans l’ordre chronologique.

Vérification du statut de synchronisation (ntpq -p)

La commande ntpq -p est le plus couramment utilisée pour vérifier si ntpd se synchronise correctement avec les serveurs NTP.

ntpq -p

Exemple de sortie :

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*ntp.nict.jp     .NICT.           1 u   25   64  377    1.123   -0.345   0.024

La signification de chaque colonne est la suivante :

  • remote : Nom du serveur NTP connecté
  • st : Stratum du serveur (plus bas est plus précis ; 1 indique une référence d’horloge atomique)
  • reach : Registre d’atteignabilité (historique sur 8 bits)
  • delay : Délai réseau (ms)
  • offset : Décalage horaire (ms)
  • jitter : Variation du décalage

Un serveur marqué avec * est actuellement sélectionné comme source de synchronisation.

Erreurs courantes et comment les corriger

Voici ci-dessous les problèmes courants rencontrés lors du déploiement de ntpd et leurs solutions correspondantes.

1. Aucune sortie de ntpq -p / reach reste à 0

  • Cause : Le port UDP 123 peut être bloqué par un pare-feu ou un routeur
  • Solution : Vérifiez les paramètres du pare-feu sur le serveur et le client pour vous assurer que le trafic NTP est autorisé.
    sudo ufw allow 123/udp
    

2. System clock not synchronized est affiché

  • Cause : ntpd n’est pas en cours d’exécution, ou un autre service de synchronisation (comme systemd-timesyncd) entre en conflit
  • Solution : Désactivez les services de synchronisation temporelle inutiles et redémarrez ntpd.
    sudo systemctl disable systemd-timesyncd
    sudo systemctl restart ntp
    

3. Échec de résolution des noms de serveurs NTP

  • Cause : Problèmes de configuration DNS ou problèmes réseau
  • Solution : Vérifiez la résolution de noms à l’aide de commandes comme ping ntp.nict.jp et ajustez les paramètres DNS si nécessaire.

4. L’heure est significativement décalée et ne se synchronise pas

  • Cause : Pour des raisons de sécurité, ntpd ne corrige pas automatiquement les décalages horaires très importants
  • Solution : Corrigez manuellement l’heure initiale, puis redémarrez ntpd.
    sudo ntpd -gq  # Perform a one-time immediate synchronization
    sudo systemctl restart ntp
    

Pour une surveillance continue

Dans les environnements de production, il est recommandé de journaliser périodiquement la sortie de ntpq -p et de configurer des alertes pour les anomalies. La détection de signes tels que des journaux manquants ou une valeur reach constamment bloquée à 0 permet une identification précoce des défaillances.

6. Comparaison de ntpd avec d’autres outils de synchronisation temporelle

Principaux outils de synchronisation temporelle sur Ubuntu

Ubuntu propose plusieurs outils pour la synchronisation temporelle, chacun avec des caractéristiques distinctes. Le choix du bon outil dépend de vos exigences système et de votre cas d’utilisation.

  • ntpd (paquet ntp)
  • chrony
  • systemd-timesyncd

Caractéristiques de ntpd

  • Avantages
  • Stabilité et fiabilité prouvées, soutenues par une longue histoire opérationnelle
  • Ensemble de fonctionnalités riche avec des options de configuration fines (serveurs NTP locaux, authentification, mode symétrique)
  • Haute compatibilité avec les serveurs NTP publics et ressources étendues de dépannage
  • Inconvénients
  • La synchronisation initiale après le démarrage peut être lente
  • Moins adaptable aux environnements modernes tels que la virtualisation et les réseaux hautement variables

Caractéristiques de chrony

  • Avantages
  • Synchronisation initiale très rapide, même immédiatement après le démarrage
  • Haute précision dans les environnements virtualisés ou à réseau variable (ordinateurs portables, VPN)
  • Apprentissage adaptatif qui améliore la précision au fil du temps, surpassant parfois ntpd
  • Inconvénients
  • Configuration légèrement plus complexe lorsqu’utilisé comme serveur NTP local
  • Moins de documentation et moins d’exemples du monde réel comparé à ntpd

Caractéristiques de systemd-timesyncd

  • Avantages
  • Activé par défaut sur Ubuntu 20.04 et versions ultérieures, extrêmement facile à gérer
  • Consommation minimale de ressources avec une fonctionnalité de synchronisation basique
  • Bien intégré avec systemd et adapté aux configurations Ubuntu standard
  • Inconvénients
  • Fonctionnalités limitées ; configuration avancée et opération de serveur NTP local non supportés
  • Précision et capacités de journalisation basiques, le rendant inadapté aux systèmes à grande échelle

Tableau de Comparaison

Featurentpdchronysystemd-timesyncd
AccuracyHighVery HighModerate
Initial Sync SpeedSometimes SlowVery FastModerate
Local NTP ServerExcellentGood (More Complex)Not Supported
Configuration FlexibilityHighMediumLow
Virtual Environment SupportLimitedExcellentGood
Operational History & ResourcesExcellentGoodLimited
Recommended Use CasesServers, Organization-wide SyncVirtual Environments, LaptopsSingle PCs, Beginners

Outils Recommandés par Cas d’Utilisation

  • Environnements serveurs (surtout systèmes toujours actifs)ntpd ou chrony pour la stabilité et la précision.
  • Environnements cloud, machines virtuelles, ordinateurs portableschrony offre la plus grande flexibilité et précision.
  • PCs uniques avec besoins de synchronisation basiquessystemd-timesyncd est suffisant.

7. Questions Fréquemment Posées (FAQ)

Q1. ntpd est-il installé par défaut sur Ubuntu 22.04 ?

A1.
Non. Sur Ubuntu 22.04, ntpd n’est pas installé par défaut. Au lieu de cela, systemd-timesyncd est activé pour une synchronisation horaire basique. Pour utiliser ntpd, vous devez installer explicitement le paquet ntp.

sudo apt install ntp

Après l’installation, désactiver systemd-timesyncd aide à éviter les conflits.

Q2. Pourquoi ntpq -p n’affiche-t-il aucun résultat ?

A2.
Plusieurs causes sont possibles :

  • Le service ne fonctionne pas : Vérifiez avec sudo systemctl status ntp et démarrez-le si nécessaire
  • Aucune communication avec les serveurs NTP : Assurez-vous que le port UDP 123 n’est pas bloqué par un pare-feu
  • Erreurs de configuration : Vérifiez que /etc/ntp.conf ne contient pas d’erreurs

Commencez par exécuter la commande suivante pour vérifier le fonctionnement de base :

ntpq -p

Si la sortie est vide ou si reach reste 0, la communication avec le serveur externe échoue probablement.

Q3. Dois-je choisir ntpd ou chrony ?

A3.
Le choix optimal dépend de votre environnement :

  • Serveurs physiques à longue durée de vie ou configurations de serveur NTP localntpd est recommandé pour la stabilité
  • Environnements virtuels, ordinateurs portables, ou réseaux variables (Wi-Fi)chrony fournit une meilleure précision et une synchronisation plus rapide
  • Synchronisation horaire simple uniquementsystemd-timesyncd est suffisant

Q4. Que fait la commande ntpd -gq ?

A4.
ntpd -gq effectue une synchronisation unique avec un serveur NTP puis quitte.

  • -g : Permet la correction même si le décalage horaire est important
  • -q : Synchronise une fois et quitte (ne fonctionne pas en tant que démon)

Cette commande est utile lorsque l’heure du système est significativement incorrecte et que l’opération normale de ntpd ne l’ajustera pas automatiquement.

Q5. Y a-t-il un avantage à spécifier plusieurs serveurs NTP ?

A5.
Oui. Spécifier plusieurs serveurs NTP améliore la redondance et la fiabilité. Si un serveur devient indisponible, le système peut continuer à se synchroniser avec les autres.

Exemple de configuration dans /etc/ntp.conf :

server ntp.nict.jp iburst
server ntp.jst.mfeed.ad.jp iburst
server ntp.ring.gr.jp iburst

8. Conclusion : Améliorer la Fiabilité du Système Grâce à une Synchronisation Horaire Stable

Réexamen de la Valeur de ntpd

Sur les systèmes Ubuntu, une synchronisation horaire précise n’est pas seulement un confort—elle impacte directement la sécurité, le dépannage, la gestion des logs, et la correction des processus automatisés.

Cet article a fourni un aperçu complet des fondamentaux de NTP, de la façon dont la synchronisation de l’heure fonctionne avec ntpd, des étapes d’installation et de configuration, des options de personnalisation, des méthodes de vérification et de dépannage, et des comparaisons avec des outils alternatifs.

Conseils pour les Lecteurs

Le choix de l’outil de synchronisation de l’heure sur Ubuntu dépend du but du système, de l’architecture et des exigences de disponibilité.
Cependant, le principe reste universel : sans une heure précise, un fonctionnement stable du système est impossible.

  • Environnements serveurs et systèmes intensifs en logs → Configurez soigneusement ntpd ou chrony
  • Systèmes uniques avec des exigences simples → Utilisez systemd-timesyncd pour une configuration rapide

Bien que les problèmes de synchronisation de l’heure passent souvent inaperçus dans les opérations quotidiennes, ils deviennent un différenciateur critique lors du dépannage d’incidents.

Utilisez ce guide pour construire une configuration de synchronisation de l’heure qui convient le mieux à votre environnement Ubuntu.