Comment configurer NTP sur Ubuntu : synchronisation précise de l’heure avec Chrony

1. Importance du NTP sur Ubuntu

Qu’est-ce que le NTP ?

NTP (Network Time Protocol) est un protocole conçu pour synchroniser avec précision l’heure des systèmes informatiques sur un réseau. Maintenir une heure système exacte est essentiel pour la cohérence des journaux, le traitement des transactions et la fiabilité des communications réseau. Si l’horloge du système dérive, des erreurs réseau ou des incohérences de données peuvent survenir, rendant la synchronisation précise de l’heure cruciale, notamment dans les environnements serveur.

Sur Ubuntu, chrony est recommandé car il fournit une synchronisation horaire précise même dans des réseaux instables. Chrony offre également une faible latence et une synchronisation rapide, ce qui le rend adapté aux environnements serveur et client.

2. Comment configurer le NTP

Installation et configuration de Chrony

Chrony est le client NTP par défaut sur Ubuntu 18.04 et versions ultérieures. Utilisez les étapes suivantes pour installer Chrony et configurer la synchronisation horaire à l’aide de serveurs NTP.

Étapes d’installation

sudo apt update
sudo apt install chrony

Ensuite, démarrez le service Chrony et activez-le pour un démarrage automatique.

sudo systemctl start chrony
sudo systemctl enable chrony

Le fichier de configuration se trouve à /etc/chrony/chrony.conf. Si vous souhaitez utiliser des serveurs NTP situés au Japon, configurez-le comme suit :

server ntp.nict.jp iburst
server 0.jp.pool.ntp.org iburst
server 1.jp.pool.ntp.org iburst
server 2.jp.pool.ntp.org iburst

L’option iburst accélère la synchronisation initiale lors de la connexion à un serveur NTP.

3. Optimisation et sélection des serveurs NTP

Utilisation du projet NTP Pool

Le projet NTP Pool fournit des serveurs NTP optimisés par région, provenant du monde entier. En configurant plusieurs serveurs NTP, la fiabilité augmente, garantissant que si un serveur devient indisponible, d’autres peuvent poursuivre la synchronisation horaire sans interruption.

L’exemple ci-dessous montre une configuration qui utilise des serveurs situés au Japon :

server ntp.nict.jp iburst
server 0.jp.pool.ntp.org iburst
server 1.jp.pool.ntp.org iburst
server 2.jp.pool.ntp.org iburst

4. Configuration du fuseau horaire

Utilisation de la commande timedatectl

Par défaut, Ubuntu utilise UTC comme fuseau horaire du système. Vous pouvez le changer en heure normale du Japon (JST) en utilisant la commande suivante :

sudo timedatectl set-timezone Asia/Tokyo

Après avoir effectué le changement, vérifiez les paramètres du fuseau horaire actuel avec :

timedatectl

5. Dépannage

Lorsque le NTP ne se synchronise pas

Vérifier le pare-feu

NTP utilise le port UDP 123, et la synchronisation peut échouer si le pare-feu bloque ce port. Ouvrez le port 123 avec la commande suivante :

sudo ufw allow 123/udp

Vérification des faux-tickers

Utilisez la commande ntpq -p pour vérifier si les serveurs NTP fonctionnent correctement. Les serveurs fournissant une heure inexacte sont marqués d’un symbole x. Si vous en détectez, supprimez ou remplacez ces serveurs dans votre configuration.

Erreur Stratum 16

Si le serveur NTP ne peut pas se synchroniser avec un serveur en amont, une erreur Stratum 16 se produit. Cela indique un problème de connectivité ou de configuration. Vérifiez vos paramètres réseau et reconfigurez vos serveurs NTP pour assurer la synchronisation avec des sources en amont fiables.

Synchronisation manuelle de l’heure

Pour synchroniser manuellement l’heure avec Chrony, exécutez la commande suivante :

sudo ntpdate ntp.nict.jp

Vous pouvez également consulter les journaux de Chrony pour diagnostiquer les problèmes de synchronisation :

sudo journalctl -u chrony

6. Optimisation du NTP dans les environnements à forte charge

Ajustement de minpoll et maxpoll

Dans les environnements nécessitant une synchronisation temporelle de haute précision, ajuster les intervalles d’interrogation du NTP permet des mises à jour plus fréquentes et aide à minimiser la dérive temporelle. L’exemple de configuration ci-dessous augmente la fréquence de synchronisation :

server ntp.nict.jp iburst minpoll 4 maxpoll 10

Gestion du NTP avec Juju

Dans les environnements cloud à grande échelle, Juju peut automatiser les déploiements de services NTP. Juju surveille les charges des hôtes et sélectionne automatiquement l’hôte optimal en tant que serveur NTP. Déployez NTP via Juju comme suit :

juju deploy cs:ntp ntp
juju config ntp auto_peers=true

Cela permet une gestion automatisée de NTP, distribuant efficacement la charge et assurant une synchronisation temporelle efficace.

7. Amélioration de la sécurité

Contrôle d’accès pour les serveurs NTP

Pour améliorer la sécurité, vous pouvez restreindre l’accès au serveur NTP à des adresses IP spécifiques. Ajoutez des règles de contrôle d’accès à /etc/chrony/chrony.conf comme indiqué ci-dessous pour autoriser les requêtes uniquement depuis des réseaux approuvés :

allow 192.168.1.0/24

Cela empêche les requêtes NTP non autorisées provenant d’hôtes externes et renforce la sécurité du réseau interne.