13 - NTP

Introduction

Pourquoi le besoin de synchronisation?

  • Pour des questions de sécurité: début et fin d’une session d’authentification, expiration d’un certificat…

  • Mise en place de processus synchrones: les machines doivent exécuter une tâche à une heure précise.

Un domaine Microsoft ne peut pas fonctionner sans que les horloges soient à l’heure.

Pour se mettre à l’heure, chaque machine doit disposer d’une référence qui lui permettra de se synchroniser.

Problème: combien de temps un message met pour aller d’une machine à une autre et comment le savoir?

Les strates

Strates = couches

Pour servir de référence absolue pour le temps il existe deux types d’horloge:

  • Les horloges atomiques

  • Les horloges GPS

Comme ces horloges sont la plus élevée des couches car ce sont les plus précises et tout le monde voudrait avoir exactement la même heure, on dit qu’elle sont de strate 0.

Plus la strate est basse, plus la précision est grande.

Ensuite, des serveurs (en nombre important mais limité) se synchronisent sur les horloges stratum 0.

Ces serveurs offrent une très grande précision et sont dit stratum 1.

D’autres serveurs viendront se synchroniser sur ceux-ci, ils seront donc stratum 2.

Puis viendront les stratum 3…

Plus le niveau de strate augmente plus la précision diminue tout en conservant un très grande précision.

Le contrôle aérien utilise des stratum 1 mais un réseau ordinaire peut utiliser des stratum 4 ou 5.

Fonctionnement du protocole

Le principal problème pour synchroniser les horloges de deux machines distantes est que l’on ne sait pas combien de temps un paquet va prendre pour faire l’aller retour.

Il faudra donc réussir à déduire ce temps à partir d’un algorithme.

HTTP

Plus le délai de transmission des messages est court, plus la précision du protocole sera grande.

En effet, si le délai de transmission est grand, il se peut que l’aller retour soit asymétrique: l’aller beaucoup plus long que le retour par exemple.

Dans ce cas la calcul de l’écart entre les horloges pourrait manquer de précision.

À noter que dans le cas où plusieurs serveurs travaillent ensemble pour fournir l’heure à des clients, ce serveurs utilisent deux sources de synchronisation:

  • Ils utilisent des serveurs de strate inférieure

  • Ils se synchronisent entre eux pour s’assurer de fournir une heure cohérente

chrony.conf

Le fichier de configuration de NTP est /etc/chrony.conf.

Le même fichier est utilisé pour le client et le serveur.

Pour le client, la configuration est très simple:

server <nom ou ip du serveur>

Il est possible et même recommandé de mettre plusieurs serveurs dans le cas où il y aurait des pannes (réseau ou serveur) et pour permettre au client de choisir le plus précis.

Il existe de nombreux serveurs NTP gratuits.

Les serveurs du pool NTP sont toujours une excellente solution gratuite et très précise.

Pour plus d’information:

https://www.pool.ntp.org/fr/

Fonctionnement de l’application

Il existe plusieurs commandes pour gérer ntp:

  • ntpdate

  • ntpq

  • ntpstat

Lorsque le service ntpd fonctionne, on peut obtenir des informations à l’aide d’autres commandes.

Pour savoir su quels serveurs la machine se synchronise et quel serveur a été élu:

[root@m1 ~]# chronyc 
chrony version 3.5
Copyright (C) 1997-2003, 2007, 2009-2019 Richard P. Curnow and others
chrony comes with ABSOLUTELY NO WARRANTY.  This is free software, and
you are welcome to redistribute it under certain conditions.  See the
GNU General Public License version 2 for details.

chronyc> sources
210 Number of sources = 4
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^- serenity.baxterit.net         2   6   377     4  -3872us[-3872us] +/-   48ms
^- ntp.nyy.ca                    1   6   377     0  -5791us[-5791us] +/-   43ms
^* mirrors.switch.ca             2   6   377     5  -1216us[  -11ms] +/-   44ms
^- muug.ca

M: ^ signifie un serveur, = signifie un pair

Name/Ip address: Le nom ou l’adresse IP

Stratum: Strate du serveur

Poll: Toutes les combien de secondes le serveur sera interrogé

Reach: 377 indique un succès les 8 dernières fois

LastRx: dernière communication reçue

Last sample: différence entre l’horloge du serveur et du client

Lorsque le service fonctionne, on peut aussi regarder les statistiques avec:

$ chronyc sourcestats
$ chronyc tracking

Permet d’avoir des informations rapides sur l’état de synchronisation du client.

Installation

$ dnf install -y chrony

Lab 1

Assurez vous que NTP est installé sur votre machine mais que le service n’est pas démarré.

Configurez NTP pour que votre client interroge des serveurs de votre choix (vous pouvez utiliser les serveur du pool NTP).

Modifiez l’heure de votre machine à l’aide de la commande timedatectl pour mettre une heure fausse.

Démarrez le service NTP.

Combien de temps faut-il pour que la machine se remette à l’heure?

Essayez de suivre l’évolution.

Serveur ntp

Un ordinateur peut bien sûr être à la fois client et serveur. En fait seuls les ordinateurs de strate 0 sont uniquement des serveur et seuls les postes étant des clients finaux sont uniquement clients.

Il suffit d’ajouter une ligne dans le fichier disant quelles machines ont le droit de se connecter:

allow 192.168.0.0/16

Lab 2

Configurez votre client comme serveur ntp. Testez avec une autre machine que vous pouvez vous synchroniser.