NTP signifie "Network Time Protocol". Il s'agit d'un protocole utilisé par les appareils connectés à Internet pour synchroniser l'heure de leurs systèmes avec une référence temporelle. Il existe plusieurs points importants expliquant pourquoi il est important de maintenir une heure précise, et les principes de fonctionnement du NTP sont élémentaires mais étonnants.
Nous avons récemment publié un article sur la configuration du serveur et du client NTP sur les distributions basées sur Ubuntu. Cela nécessite une description détaillée du fonctionnement exact de NTP et de son importance.
Quelle est l'exigence d'une heure précise ?
Voyons d'abord pourquoi une infrastructure aussi profonde a été développée pour que nos machines puissent utiliser l'heure exacte.
Une dérive se produit
Chaque fois que vous utilisez un système informatique, c'est un fait bien observé que l'horloge matérielle commence à être décalée au fil du temps. Cet effet peut même s'ajouter à une imprécision élevée dans certains cas. Ce n'est évidemment pas un effet souhaitable, il est donc judicieux d'utiliser la synchronisation de l'heure.
Gestion des journaux
S'il existe un réseau de plusieurs périphériques et que, par exemple, un problème survient, cela affecte plusieurs systèmes sur le réseau. La meilleure façon de suivre le problème et de découvrir ce qui s'est passé est de vérifier les journaux système (plus d'informations sur la vérification des fichiers journaux ici). Si l'un de ces systèmes est en retard de quelques secondes, il semblera avoir été affecté avant l'autre système, qui a été affecté en premier. Cela rend difficile le dépannage et, en général, la gestion de plusieurs systèmes sur un réseau. Ce n'était qu'un exemple, mais il existe de nombreuses possibilités plus graves.
Transactions
Plusieurs types de transactions sont effectuées sur Internet. Parfois, si votre horloge système est en avance sur l'heure réelle, les journaux système du paiement peuvent indiquer que le paiement est arrivé avant que vous n'ayez réellement payé le montant. Cela rendra le paiement comme n'étant pas le vôtre et donnera lieu à plus de problèmes.
Ou dans un cas plus similaire, en raison de l'inexactitude du temps, il se peut souvent que votre destinataire envoie une réponse à votre e-mail avant même que vous ayez envoyé l'e-mail en premier lieu. Comme vous pouvez l'imaginer, la précision de l'heure sur deux systèmes différents sur Internet peut être à l'origine de plusieurs conséquences potentiellement néfastes.
Exécution de la commande
Sur un réseau, il existe souvent des scripts écrits pour exécuter des tâches orchestrées sur plusieurs systèmes. Si un tel script a des paramètres de temps, il peut être perturbé si un système a une heure inexacte. Certaines commandes seront exécutées avant qu'il ne soit nécessaire, ou après avoir saboté l'ensemble du processus. Ce n'est évidemment pas bon d'arriver.
Encore une fois, sur une note plus similaire, votre GPS ne fonctionnerait pas vraiment correctement si l'heure n'est pas correctement synchronisée entre votre système et le satellite GPS.
Comment ça marche ?
Ainsi, nous avons vu plusieurs raisons pour lesquelles il est très important de maintenir une heure précise sur un réseau pour intégrer des scénarios et notre vie quotidienne. Heureusement pour nous, ce n'est pas très difficile à réaliser. En utilisant NTP, nous pouvons rendre cela possible. Mais alors, comment NTP rend-il cela possible ? Voyons.
Sources de temps
Les sources de temps ultimes doivent être extrêmement précises, bien sûr. Ces sources de temps sont parmi les meilleures scientifiquement possibles à l'heure actuelle, dont les premières sont les horloges atomiques , qui utilisent 9192631770 cycles de rayonnement correspondant à la transition entre deux niveaux d'énergie de l'atome de césium 133 à l'état fondamental en une seconde. En dehors de cela, les récepteurs des signaux horaires diffusés par certaines agences nationales de normalisation peuvent être fiables comme heure précise.
Ces sources temporelles sont dites au Sstratum 0 niveau. Le concept de strate fonctionne comme décrit :
Concept de strate
Stratum signifie littéralement "l'un d'une série de couches, de niveaux ou de gradations dans un système ordonné", et c'est ainsi qu'il est également utilisé dans le contexte du NTP. Le niveau strate 0 est le temps le plus précis possible. Si un serveur synchronise l'heure avec une source d'heure de strate 0, il s'agit d'une source d'heure de strate 1. Et s'il fournit du temps à un autre serveur, ce serveur est une source stratum 2-time. Au fur et à mesure que les couches augmentent, le numéro de strate attribué au serveur continue également d'augmenter. Ainsi, plus le numéro de strate attribué à un serveur est faible, plus l'heure sera précise.
Les niveaux de strate sont considérés jusqu'à la strate 16, après quoi la différence de temps est trop importante. Dans de nombreux scénarios, il est recommandé d'utiliser uniquement les serveurs jusqu'à la strate 4.
Serveur Strate 1
Un serveur de niveau stratum 0 n'est pas autorisé à être utilisé par des utilisateurs réguliers comme nous. Les horloges atomiques et les sources de temps des agences nationales sont gérées directement par le gouvernement.
En remontant la ligne, un serveur de la strate 1 est un serveur qui est directement connecté à une horloge matérielle, qui se trouve aux niveaux de la strate 0. C'est le meilleur serveur source de temps possible car la strate 0 n'est pas réellement un serveur mais une horloge. Le serveur auquel il est possible de se connecter est le serveur de la strate 1, qui reçoit directement l'heure de l'horloge matérielle.
Un serveur de strate 1 se doit d'avoir un réseau précis et bien entretenu. Il doit également être hautement disponible car d'autres systèmes peuvent s'appuyer sur son service de temps.
Processus de synchronisation de l'heure
Tout d'abord, pour configurer le NTP sur votre système, vous devez choisir les serveurs que vous utiliserez pour synchroniser l'heure. Pour cela, vous pouvez choisir le serveur que vous souhaitez utiliser et configurer les paramètres sur votre logiciel système.
Comment l'heure est synchronisée
Le processus de synchronisation commence avec le système et le serveur NTP échangeant plusieurs paquets de données pendant un certain temps. Ce qui se passe réellement, c'est que le temps pris par le paquet pour effectuer un aller-retour vers le serveur NTP et retour est calculé. Le temps est envoyé dans ces paquets de données par le serveur NTP, et le temps de déplacement calculé est déduit en conséquence. Par exemple :
Le système a l'heure 17:00:05 lorsqu'il envoie le paquet. Le système reçoit maintenant la réponse du serveur NTP à 17:00:11. Le serveur NTP a envoyé l'information sur l'heure, qu'il est en fait 17:05:23 en ce moment. Mais quand on regarde le temps de trajet pris par le paquet, qui est de 6 secondes, cela signifie qu'il a fallu 3 secondes pour aller au serveur et 3 autres pour revenir. Cela signifie qu'il était 17:05:23 il y a 3 secondes, pas pour le moment. L'heure est donc ajustée en conséquence à 17:05:26.
(J'ai, bien sûr, agrandi l'échelle à un degré très élevé, mais c'est juste pour des raisons d'explication. Ces différences sont en millisecondes en réalité, mais la logique est la même).
Tout ce processus d'échange de paquets dure environ 5 minutes pour garantir l'heure correcte et s'assurer que le décalage a été corrigé. Évidemment, plus les échanges de paquets sont courts, cohérents et symétriques, plus le temps sera précis. Le protocole NTP utilise des paquets UDP et IP pour ce processus en raison de leur rapidité et de leur fiabilité. Le port utilisé est le 123. On dit que la précision de l'heure est généralement comprise entre 5 et 100 ms.
Si le décalage horaire entre le serveur NTP et le système est suffisamment petit, il le changera rapidement. Si le décalage horaire est important, l'heure est constamment modifiée avec de petites différences jusqu'à ce qu'elle soit corrigée.
Meilleures pratiques
Avoir plusieurs serveurs
Il s'agit de la pratique la plus recommandée :disposer de plusieurs serveurs NTP redondants si l'un d'entre eux fonctionne mal ou devient imprécis pour une raison quelconque. Il n'y aura pas beaucoup de perte si le réseau peut être connecté immédiatement à un autre serveur NTP. De plus, ce sera encore mieux si vous pouvez configurer des scripts qui peuvent automatiquement activer et connecter le réseau à l'un des serveurs redondants lorsque certains signaux évidents sont donnés (comme ne recevoir aucun paquet du serveur NTP, etc.).
Tenez compte de la disposition du réseau
Le réseau doit être structuré de manière à ce que les systèmes nécessitant une heure plus précise soient physiquement plus proches et directement connectés au serveur NTP. S'il existe des sous-réseaux, ils doivent être utilisés pour des tâches qui ne nécessitent relativement pas de temps précis.
Communications NTP sécurisées
Étant donné que NTP est basé sur UDP, il s'agit d'un protocole axé sur beaucoup de choses, donc selon votre système, il pourrait y avoir des vulnérabilités potentielles. C'est toujours une bonne idée de sécuriser la connexion NTP avec une authentification.
Restreindre l'accès
La protection du réseau contre les attaquants externes est certes importante, mais il en va de même pour la prévention des mauvaises manipulations. En limitant l'accès aux serveurs NTP pour le nombre minimum de personnes, vous pouvez vous assurer d'avoir le moins d'erreurs humaines possible, et plus que cela, vous pouvez être assuré qu'il ne sera pas géré par quelqu'un qui n'a pas la compréhension technique pour gérer le réseau.
Éviter les boucles temporelles
Mis à part les perspectives de science-fiction, vous devez toujours vous assurer d'éviter les boucles temporelles dans la structure du réseau. Supposons que A agisse en tant que serveur pour B et B pour C. Maintenant, si C est à nouveau désigné comme serveur pour A, les choses peuvent devenir désordonnées. Évidemment, personne de sensé ne le ferait, mais parfois, cela peut arriver accidentellement, donc vérifier la disposition du réseau NTP de temps en temps est une bonne idée.
Conclusion
NTP est un protocole excellent et efficace pour s'assurer que votre système a toujours l'heure correcte. Cela peut devenir un peu délicat dans un grand réseau ou un environnement de bureau, mais être un peu prudent et avoir de bonnes mises en page peut aller très loin. Nous espérons que vous avez trouvé cet article utile.