Synchronisation NTP
En direct du travail Alexandre 06 janvier 2016

Le Network Time Protocol permet de synchroniser l'horloge locale d'un système via un réseau informatique. Concrètement, si l'ordinateur sur lequel vous lisez ces lignes est à l'heure, c'est grâce au protocol NTP.

En quoi est-ce important d'être à l'heure ?
Imaginons que nous arrivons à une boulangerie fermée où un panneau nous indique l'horaire de fermeture à 18h, mais sur notre montre il est indiqué 15h. La boulangère soutiendra qu'il était 18h passé et nous qu'il était 15h. N'étant que deux et n'ayant pas de référence externe, il est impossible de déterminer qui a raison ; les systèmes "boulangère" et "nous" conviendront d'un "tant pis".

Transposons ça à une application un peu plus informatique en prenant l'exemple d'un annuaire d'entreprises de type LDAP.
L'annuaire est sur un serveur disposant d'une heure, elle est considérée quoiqu'il arrive comme celle faisant foi. Nous nous connectons via notre compte détenu par cet annuaire à un ordinateur qui lui-même est enregistré dans cet annuaire. Lors d'une action de compte (connexion, changement de mot de passe, etc), une requête est envoyée à l'annuaire pour, par exemple, vérifier que notre utilisateur et mot de passe sont bien dans l'annuaire et valides. La requête contient l'heure et l'annuaire va vérifier qu'il n'y pas de décalage entre son envoi et sa réception ; si un décalage existe, alors la requête est refusée.
Heureusement, le truc est plutôt bien ficelé : lors de l'ajout d'un ordinateur à l'annuaire, celui-ci prend comme serveur NTP le serveur d'annuaire sur lequel il est ajouté. Mais si ce serveur n'est pas à l'heure, que se passe-t-il ? C'est simple, aucun client n'est à l'heure et certaines applications, qui se synchroniseraient de leur coté, ne fonctionneraient tout simplement plus.

Bref, tout ça pour dire qu'il faut surtout pas décaler l'heure de la pilule sous peine d'avoir un gosse par erreur.

Windows

Commencez par ouvrir une fenêtre Powershell en administrateur local, puis renseignez les serveurs NTP français :

Powershell en administrateur local

w32tm.exe /config /manualpeerlist:"0.fr.pool.ntp.org 1.fr.pool.ntp.org 2.fr.pool.ntp.org 3.fr.pool.ntp.org"

Maintenant, il faut dire au service de temps Windows que sa configuration a été changée :

Powershell en administrateur local

w32tm.exe /config /update

La commande qui va suivre permet de redémarrer le service de temps pour qu'il se synchronise immédiatement ; je déconseille fortement de le faire pendant les heures ouvrées, car si pour une raison X ou Y votre serveur doit rattraper plus que quelques secondes, vous risqueriez de mettre en péril certaines connexions client-serveur.
Bon allez, il est 4h du matin, un dimanche en rentrant de soirée, j'y vais :

Powershell en administrateur local

Restart-Service w32time

On notera qu'encore une fois, la sortie pour ce genre de commande manque un peu de détails... Direction le journal d'événements Windows pour essayer d'en savoir un peu plus.

  1. Créer un vue personnalisée avec tous les messages pour la source Time-Service
  2. Ouvrir la vue personnalisée créée
  3. Vérifier qu'au moins un serveur NTP a été joint correctement

Les avertissements présents sont souvent dû à un problème de synchronisation sur un des serveurs, mais c'est pour ça qu'on en ajoute quatre.

Linux

Comme d'habitude, je donne la méthode pour Debian/Ubuntu.
Dans un premier temps, nous allons vérifier le fuseau horaire en le changeant :

Shell en root

dpkg-reconfigure tzdata

Maintenant, il ne reste plus qu'à installer le démon qui s'occupera de synchroniser automatiquement l'heure locale avec un serveur NTP :

Shell en root

apt install ntp

Normalement, la configuration de base fait l'affaire, donc je ne détaille pas plus longuement.
Pour ceux qui voudraient un système "propre", il est possible de supprimer le paquet ntpdate qui, lui, met à jour l'heure que lors du démarrage de l'interface réseau du serveur (à son redémarrage quoi) :

Shell en root

apt remove --purge --auto-remove ntpdate

Références :

Écrire un commentaire

Quelle est la deuxième lettre du mot plraiq ?