NTP (Network Time Protocol) est utilisé pour synchroniser l'heure du système avec une heure de référence fournie par des serveurs spéciaux. Cet article couvre la manière de configurer NTP sur différents systèmes d'exploitation et appareils, en commençant par un guide complet sur la configuration d'un serveur NTP sur Linux.
Nous allons démontrer la configuration de la synchronisation avec Ubuntu, mais ce guide s'applique également à Debian et à la plupart des systèmes basés sur Linux. Nous avons divisé les instructions en trois parties : la première couvre l'installation du serveur NTP, la deuxième explique comment synchroniser les clients NTP et la troisième couvre les paramètres avancés de synchronisation.
Pour suivre ce guide, vous aurez besoin de :
Un serveur cloud avec Ubuntu installé.
Un utilisateur root ou un utilisateur avec des privilèges sudo.
Nano ou un autre éditeur de texte installé.
Ces étapes vous guideront à travers l'installation et la préparation du serveur NTP pour la configuration.
Mettez à jour l'index des dépôts pour vous assurer que vous pouvez télécharger les versions les plus récentes des logiciels. Utilisez la commande suivante :
sudo apt-get update
Installez le serveur NTP :sudo apt-get install ntp
Confirmez l'installation en choisissant "Y" si cela vous est demandé (Y/N). Attendez que le logiciel soit téléchargé et installé.
Vérifiez l'installation :sntp --version
La sortie doit afficher le numéro de version et le temps d'installation.
Connectez-vous au serveur le plus proche.
Le serveur devrait recevoir l'heure correctement par défaut, mais il est préférable de se connecter à un serveur local pour plus de fiabilité. Pour ce faire, éditez le fichier ntp.conf situé à /etc/ntp.conf. Ouvrez-le avec nano (vous aurez besoin de privilèges sudo) en entrant:sudo nano /etc/ntp.conf
Dans le fichier ouvert, vous verrez quatre lignes que nous avons mises en surbrillance en orange pour référence : Ce sont les pools par défaut que nous allons remplacer par des pools locaux (par exemple, pour les États-Unis, nous pouvons utiliser des serveurs NTP de cette page). Après avoir remplacé les lignes, enregistrez et fermez le fichier ntp.conf en appuyant sur Ctrl+O puis Ctrl+X.
Redémarrez le serveur :sudo service ntp restart
Vérifiez l'état du serveur :sudo service ntp status
La sortie doit indiquer "Active (running)" sur l'une des premières lignes (Active) et l'heure de démarrage du serveur.
Configurez le pare-feu.
Pour permettre l'accès des clients au serveur, ouvrez le port UDP 123 à l'aide de UFW avec la commande suivante :sudo ufw allow from any to any port 123 proto udp
L'installation est terminée et le serveur est en cours d'exécution. Vous pouvez maintenant continuer avec la configuration supplémentaire.
Les étapes suivantes permettront aux systèmes clients de se synchroniser avec notre serveur NTP, qui servira de source de temps principale.
Vérifiez la connexion
Pour vérifier la configuration réseau pour NTP, entrez la commande suivante dans le terminal :
sudo apt-get install ntpdate
Spécifiez l'adresse IP et le nom d'hôte
Pour configurer l'IP et le nom d'hôte du serveur, éditez le fichier hosts situé à /etc/hosts :sudo nano /etc/hosts
Ajoutez les données pertinentes à la troisième ligne depuis le haut (l'adresse ci-dessous est juste un exemple ; remplacez-la par l'IP réelle de votre serveur NTP) :192.168.154.142 ntp-server
Appuyez sur Ctrl+X pour quitter et sauvegarder les modifications en appuyant sur Y. Alternativement, si vous avez un serveur DNS, vous pouvez effectuer cette étape là-bas.
Vérifiez la synchronisation du client avec le serveur
Pour vérifier si la synchronisation est active entre le serveur et le client, entrez :sudo ntpdate ntp-server
La sortie affichera le décalage horaire. Un écart de quelques millisecondes est normal, vous pouvez donc ignorer les petites valeurs.
Désactivez le service timesyncd
Ce service synchronise l'heure locale du système, mais nous n'en avons pas besoin, car nos clients se synchroniseront avec le serveur NTP. Désactivez-le avec :sudo timedatectl set-ntp off
Installez NTP sur le système client
Installez NTP sur le client avec cette commande :sudo apt-get install ntp
Définissez votre serveur NTP comme référence principale
Pour vous assurer que les clients se synchronisent spécifiquement avec votre serveur, ouvrez le fichier ntp.conf et ajoutez la ligne suivante :server NTP-server-host prefer iburst
La directive prefer marque le serveur comme préféré et iburst permet de faire plusieurs demandes au serveur pour une meilleure précision de synchronisation. Sauvegardez les modifications en appuyant sur Ctrl+X et confirmez avec Y.
Redémarrez le serveur
Redémarrez le serveur NTP avec cette commande simple :sudo service ntp restart
7. Vérifiez la file d'attente de synchronisation
Enfin, vérifiez l'état de la synchronisation en entrant :ntpq -ps
Cette commande affiche la liste des serveurs dans la file d'attente de synchronisation, y compris votre serveur NTP comme source désignée.
Maintenant que nous avons configuré le serveur NTP et synchronisé les machines clientes, revenons au fichier ntp.conf (qui se trouve à /etc/ntp.conf). Ce fichier contient des configurations supplémentaires pour garantir une synchronisation robuste avec des sources externes.
Marquez le serveur ou le groupe de serveurs le plus fiable avec la directive prefer que nous avons utilisée précédemment. Par exemple :
server 1.north-america.pool.ntp.org prefer
La directive server indique un serveur spécifique, tandis que pool peut être utilisée pour spécifier un groupe de serveurs. N'oubliez pas la ligne server 127.127.1.0 à la fin de la liste des pools, qui utilise l'heure du système si la connexion est perdue.
Assurez-vous que les lignes suivantes sont présentes dans ntp.conf :
restrict default kod notrap nomodify nopeer noquery
La commande default applique ces paramètres comme valeurs par défaut pour toutes les commandes restrict :
kod (Kiss-o’-Death) limite le taux des requêtes.
notrap bloque l'acceptation des commandes de contrôle.
nomodify restreint les commandes qui pourraient modifier l'état du serveur.
nopeer interdit la synchronisation avec des hôtes externes.
noquery bloque les demandes de requêtes.
Pour IPv4, utilisez -4 avant default, et pour IPv6, utilisez -6.
Voici un exemple d'utilisation de certaines de ces commandes. La ligne suivante permet la synchronisation des nœuds dans un réseau spécifique tout en restreignant ces nœuds de recevoir des commandes de contrôle ou de modification de l'état :
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
Les lignes suivantes sont nécessaires pour que le serveur puisse communiquer avec lui-même :
restrict 127.0.0.1
restrict ::1
N'oubliez pas de redémarrer le serveur après avoir effectué ces modifications.
Pour vérifier si NTP fonctionne correctement, utilisez la commande ntpq -p. Avec une configuration correcte, la sortie doit afficher un tableau avec des colonnes ressemblant à ceci : Dans la première colonne, vous verrez l'adresse du serveur de synchronisation, suivie de son serveur parent, du niveau de strates (colonne st) et de la colonne de type (t). Les trois colonnes suivantes montrent des détails sur le dernier temps de synchronisation, l'intervalle de synchronisation et la fiabilité (où 377 indique huit tentatives de synchronisation réussies avec ce serveur). Les deux dernières colonnes affichent la différence de temps entre le serveur synchronisé et le serveur de référence, ainsi que le décalage.
Faites attention aux symboles dans la première colonne avant l'adresse IP :
Un symbole "+" indique un serveur fiable pour la synchronisation.
Un "-" signifie le contraire, et
Un "*" indique le serveur actuel choisi pour la synchronisation.
De temps en temps, un "x" apparaîtra, ce qui signifie que le serveur est hors ligne.
Pour vous assurer que le serveur distribue l'heure correcte, exécutez la commande ntpdate depuis un autre système, en spécifiant l'adresse IP du serveur NTP que vous souhaitez vérifier. La sortie devrait ressembler à ceci :
adjust time server (adresse IP ici) offset 0.012319 sec
Le nombre représente le décalage horaire. Un décalage d'environ 0,01 secondes (12 millisecondes) est parfaitement acceptable.
Maintenant que nous avons terminé la configuration sous Linux, examinons la configuration du protocole NTP sous Windows.