Serveur NTP

Le serveur NTP (Network Time Protocol) est utilisé dans un réseau local pour synchroniser les horloges système, les serveurs, les postes de travail, les caméras de vidéosurveillance et d’autres appareils.
Je vais installer ce serveur sur mon Raspberry Pi Zéro où je ai installé Pi-Hole pour bloquer  la publicité sur mon réseau domestique. Le serveur NTP ne nécessite pas beaucoup de ressources, donc Raspberry Pi Zéro lui suffit.
Je vais utiliser le système d’ exploitation raspbian minimale  (debian pour les processeurs ARM) donc l’installation sera similaire pour Debian et Ubuntu.

Premièrement il faut  faire une mise à jour de votre système:

sudo apt update && sudo apt upgrade -y

 

Installation de NTP serveur:

sudo apt-get install ntp

Vérifier l’installation:

sntp --version

Configuration de serveur NTP

Tous les paramètres du serveur sont définis dans le fichier ntp.conf. Alors ouvrons-le et apportons les modifications nécessaires.

sudo nano /etc/ntp.conf

Vous devez remplacer la liste de pools par le pool de serveurs de temps le plus proche de votre emplacement. Pour choisir, visitez la page NTP Pool project. J’habite au Canada, j’utilise donc le pool suivant :

  server 0.ca.pool.ntp.org
  server 1.ca.pool.ntp.org
  server 2.ca.pool.ntp.org
  server 3.ca.pool.ntp.org

Autoriser l’accès au serveur de temps uniquement à partir de notre réseau local, avec l’option:
notrap – n’accepte pas les commandes de contrôle.
nomodify – Désactive les commandes qui peuvent apporter des changements d’état.
nopeer – ne pas synchroniser avec l’hôte.

restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap nopeer

Sauvegarder le fichier /etc/ntp.conf et redémarrer notre serveur NTP:

sudo service ntp restart

Pour configurer le démarrage automatique de demon au démarrage du système, utilisez la commande:

sudo update-rc.d ntp defaults

Vérification de serveur NTP

Vous pouvez vérifier l’état d’obtention de l’heure de référence avec la commande :

ntpq -pn

Les paramètres suivants sont indiqués dans le tableau :
remote — l’adresse du serveur de temps
refid — serveur en amont
st – niveau serveur (strate)
t – type de peer (u-unicast, m-multicast)
when — heure de la dernière synchronisation
poll – temps en secondes pendant lequel le démon NTP est synchronisé avec peer
reach — état de disponibilité du serveur
delay – temps pour retarder la réponse du serveur
offset – la différence de temps entre notre serveur et le serveur de synchronisation
jitter – décalage horaire sur le serveur distant.

Probablement il faut aussi configurer le pare-feu pour que les clients puisse accéder au serveur NTP:

sudo ufw allow from any to any port 123 proto udp

Configurer le client NTP pour qu’il soit synchronisé avec le serveur NTP

Installez NTP sur votre client (j’ai utilisé mon laptop avec ubuntu):

sudo apt-get install ntp

Configurez le fichier /etc/ntp.conf pour ajouter votre serveur NTP comme nouveau serveur de temps. Il faut laisser comme serveur NTP notre serveur NTP local (dans mon cas l’adresse ip de serveur est 192.168.0.4).

server 192.168.0.4

Redémarrez NTP :

sudo service ntp restart

Le serveur NTP est maintenant prêt !