L'essentiel
- Une horloge juste n'est pas un confort : les logs ne se corrèlent plus entre machines si elles dérivent, les certificats TLS ont une période de validité, Kerberos est très sensible aux écarts de temps, et les tâches
cronpartent au mauvais moment. - Trois clients possibles :
systemd-timesyncd, intégré à systemd et présent par défaut sur les distributions modernes, très léger mais client uniquement ;chrony, plus performant sur les machines pas toujours en ligne ou à réseau instable, et capable de servir le temps ;ntpd, l'implémentation historique, robuste mais plus lourde. - Avec timesyncd, tout tient en deux commandes :
timedatectl statuspour chercher la ligneNTP service: active, etsudo timedatectl set-ntp truepour l'activer. Les serveurs se changent dans/etc/systemd/timesyncd.conf, section[Time], directiveNTP=, suivi d'unsudo systemctl restart systemd-timesyncd. - Avec chrony, désactivez d'abord timesyncd via
sudo timedatectl set-ntp false, puis installez le paquet, déclarez vos serveurs (pool 2.fr.pool.ntp.org iburst) dans/etc/chrony/chrony.confet activez le service avecsystemctl start chronydpuissystemctl enable chronyd. - Vérification et réseau :
chronyc sources -vliste les sources avec leur état et leur décalage,chronyc trackingrésume la synchronisation de l'horloge système. Côté pare-feu, NTP passe en UDP sur le port 123 — le trafic sortant doit être autorisé.
Une heure système précise est cruciale pour de nombreuses raisons : - Les logs doivent être horodatés correctement pour le dépannage et la corrélation d'événements. - Les certificats de sécurité (SSL/TLS) ont une période de validité. - Les protocoles d'authentification comme Kerberos sont très sensibles aux écarts de temps. - Les tâches planifiées (cron) doivent s'exécuter au bon moment. - La cohérence des données dans les systèmes distribués et les bases de données.
Quel client NTP utiliser ?
Sur les systèmes Linux modernes, vous avez principalement trois choix :
systemd-timesyncd: Intégré à systemd. C'est le client par défaut sur de nombreuses distributions modernes (comme Ubuntu 20.04+). Il est très léger et simple, parfait pour un client. Il ne peut pas servir de serveur NTP.chrony: L'alternative moderne àntpd. Il est plus performant pour les systèmes qui ne sont pas toujours en ligne (ordinateurs portables) ou qui ont une connexion réseau instable. Il peut aussi servir de serveur NTP.ntpd: L'implémentation de référence historique. Toujours très robuste, mais souvent considéré comme plus lourd et complexe que ses alternatives pour un simple client.
Recommandation : Utilisez systemd-timesyncd si disponible. Si vous avez besoin de plus de fonctionnalités ou de servir le temps, utilisez chrony.
Configuration de systemd-timesyncd (le plus simple)
C'est souvent déjà activé par défaut.
Étape 1 : Vérifier le statut
timedatectl status
Cherchez la ligne `NTP service: active`. Si c'est le cas, vous n'avez rien à faire !
Étape 2 : Activer si nécessaire
sudo timedatectl set-ntp true
Étape 3 : (Optionnel) Changer les serveurs NTP
Les serveurs sont configurés dans /etc/systemd/timesyncd.conf.
sudo nano /etc/systemd/timesyncd.conf
Décommentez et modifiez la ligne `NTP=` pour y mettre vos serveurs, séparés par des espaces.
[Time]
NTP=0.fr.pool.ntp.org 1.fr.pool.ntp.org
Redémarrez le service pour appliquer les changements :
sudo systemctl restart systemd-timesyncd
Configuration de chrony
Si vous préférez chrony ou si timesyncd n'est pas disponible.
Étape 1 : Installation
# D'abord, désactiver timesyncd s'il est actif
sudo timedatectl set-ntp false
# Sur Debian / Ubuntu
sudo apt-get install -y chrony
# Sur CentOS / RHEL
sudo yum install -y chrony
Étape 2 : Configuration
Le fichier de configuration est /etc/chrony/chrony.conf (ou /etc/chrony.conf).
sudo nano /etc/chrony/chrony.conf
La configuration par défaut utilise souvent des pools de serveurs. Vous pouvez les remplacer par des serveurs plus proches de votre localisation (ex: `fr.pool.ntp.org` pour la France).
# Utiliser des serveurs du pool NTP français.
pool 2.fr.pool.ntp.org iburst
# ... autres options
Étape 3 : Démarrer et activer le service
sudo systemctl start chronyd
sudo systemctl enable chronyd
Étape 4 : Vérifier la synchronisation
La commande chronyc est l'outil pour interagir avec le démon chronyd.
chronyc sources -v
Cette commande liste les sources de temps, leur état et le décalage.
chronyc tracking
Cette commande donne un résumé de la synchronisation de l'horloge système.
L'option
iburst, présente dans les configurations par défaut, est très utile. Elle indique au client d'envoyer une rafale de paquets au démarrage pour accélérer la première synchronisation.
NTP utilise le port 123 en UDP. Si vous avez un pare-feu restrictif, assurez-vous que le trafic sortant sur ce port est autorisé.
Conclusion
Maintenir une heure système précise est une tâche de fond simple mais fondamentale pour tout administrateur système. Avec les outils modernes comme systemd-timesyncd et chrony, la configuration d'un client NTP est devenue extrêmement simple. Il n'y a aucune raison de ne pas l'activer sur tous vos serveurs Linux.