Héberger un serveur NTP public pour le projet NTP Pool
Par Arnaud Ouvrier publié le 15/07/2024
Qu'est-ce que NTP et le projet NTP Pool ?
Comme vous le savez peut-être, pour fonctionner correctement, les ordinateurs et serveurs connectés à internet ont besoin d'être à l'heure. Un protocole a été inventé pour ça : le protocole NTP. Il permet à chaque équipement de se connecter sur un serveur de temps par internet et mettre à jour son horloge interne. Ces serveurs de temps "racines" utilisent différents moyens pour rester toujours à l'heure : horloge atomique, horloge GPS... Cela garanti la justesse de l'heure donnée par ces serveurs. Ces serveurs sont appelés strate 1, ils sont directement connectés à la source de l'heure.
Ces serveurs strate 1 étant relativement peu nombreux, il existe 3 autres niveau de serveurs : les strates 2, connectés directement à ces strates 1, puis les strates 3 et enfin les strates 4. Plus les strates sont basses, plus il y a de serveurs, mais moins l'heure est précise. Nous allons configurer un serveur de strate 2 dans ce tutoriel. Les serveurs de strate 1 sont généralement gérés par des universités ou des centres de recherche ayant accès à une horloge atomique.
Une fois configuré, comment rendre public son serveur pour que tout le monde puisse l'utiliser ? C'est là qu'intervient le projet NTP pool.
NTP Pool est un réseau de serveurs NTP, connectés directement derrière la même URL : pool.ntp.org. Le serveur DNS derrière ce domaine, répond aux différentes requêtes avec une adresse différente à chaque fois (round-robin). Ces adresses sont celle de la liste des serveurs participant au projet. Cela permet de distribuer les requêtes NTP sur un large réseau de serveurs. Et plus le réseau est large, plus l'heure distribuée est précise. C'est là que nous intervenons, en rajoutant des serveurs au projet.
Ce projet fonctionne entièrement sur la base du volontariat : il est compliqué de générer des revenus sur un service NTP et en même temps le service est nécessaire au bon fonctionnement d'internet. Le réseau du projet NTP Pool est entièrement composé de serveurs mis à disposition gratuitement par des entreprises et des particuliers.
Prérequis
Les prérequis sont :
- Un serveur faisant tourner Linux. Le projet conseil CentOS ou Ubuntu serveur, mais pour ce tutoriel j'utilise Debian. Au niveau des ressources, le minimum requis par la distribution de votre choix sera largement suffisant. Pour un serveur Debian sans interface graphique, il est conseillé au minimum 512 Mo de RAM avec 4 Go d'espace disque.
- Une connexion internet avec un débit suffisant. Il y a peu de chances que les requêtes dépassent les 0,5 Mb/s de bande passante. Presque n'importe quelle connexion d'aujourd'hui ne sera pas saturée par la fourniture du service.
- Une adresse IP fixe. De préférence portée par un pare-feu en amont de votre serveur. Sans adresse IP fixe, il ne sera pas possible de joindre le projet.
- Deux serveurs de strate 1 et quatre serveurs de strate 2 à configurer en serveurs source. Ces serveurs ne doivent pas faire partie de la pool NTP. Vous pouvez par exemple consulter la liste des serveurs de temps NTP français de RENATER pour en sélectionner. Je n'en inclurai pas dans la configuration d'exemple, de façon à maximiser la distribution sur les serveurs de temps.
Installation du serveur NTP
Installation du service NTP : ntpd
Commencez par installer le paquet ntpd :
sudo apt update sudo apt install ntpd
Il faudra ensuite configurer le fichier "/etc/ntp.conf". Supprimez toutes les lignes commençant par "server" puis ajoutez la liste de vos serveurs de la façon suivante :
# Serveurs de strate 1 :
server [URL serveur 1] iburst
server [URL serveur 2] iburst
# Serveurs de strate 2
server [URL serveur 3] iburst
server [URL serveur 4] iburst
server [URL serveur 5] iburst
server [URL serveur 6] iburst
Il faudra aussi ajouter "noquery" à la fin des lignes "restrict" :
restrict source notrap nomodify noquery
Enfin, redémarrez le service ntpd :
sudo service ntpd restart
Installation du serveur web : apache2
Cette étape est facultative. Elle permet d'ajouter une redirection web vers le site internet du projet. Si quelqu'un tape "pool.ntp.org" dans son navigateur et tombe sur votre serveur, il sera automatiquement redirigé vers le site du projet.
Installez apache2 comme suit :
sudo apt install apache2
Puis configurez le fichier "/etc/site-available/default.conf" comme ci-après :
<VirtualHost *.80> ServerName pool.ntp.org ServerAlias *.pool.ntp.org *.ntppool.org RedirectPermanent / https://www.ntppool.org/ </VirtualHost>
Puis redémarrez apache2 :
sudo service apache2 restart
Ouverture des ports et règles NAT : dépend de votre pare-feu
Les ports à ouvrir et rediriger sur votre serveur sont à minima les suivants :
- port 123 (UDP et TCP, port du service NTP)
- port 80 (TCP, pour la redirection HTTP avec Apache)
La configuration étant dépendante de votre pare-feu, je ne la détaillerais pas. Pensez aussi à ouvrir ces ports sur votre serveur si celui-ci possède aussi un pare-feu.
Inscription de votre serveur sur NTP Project
Les étapes pour ajouter votre serveur sur le projet NTP Pool sont :
- Créez un compte sur ntppool.org et connectez-vous.
- Rendez-vous sur la page de gestion de vos serveurs : manage.ntppool.org
- Ajoutez votre serveur en renseignant son adresse IP ou son nom de domaine si vous lui en avez assigné un.
- Confirmez que le serveur vous appartient bien.
- C'est terminé, votre serveur est ajouté.
Avant de recevoir des requêtes, un processus de validation est lancé. Ce processus, géré par le projet NTP Pool, permet de valider que votre serveur ne glisse pas dans le temps et est suffisamment disponible. Un score sera affecté à votre serveur. Quand il aura atteint 10 il sera ajouté au pool. Si votre serveur est stable, il pourra monter jusqu'à 20. Vous pouvez consulter ce score et le détails de de la variation du temps de votre serveur sur sa page de gestion de votre serveur.
La fin
Une fois toutes ces étapes suivies, votre serveur sera joignable via pool.ntp.org. Il recevra de façon aléatoire des requêtes NTP tant que son score restera au-dessus de 10.
Je ne l'ai pas précisé, mais vous pouvez bien sûr vous-même utiliser le service en configurant le serveur de temps de votre PC. Renseignez simplement l'url pool.ntp.org et votre ordinateur se mettra automatiquement à jour via les serveurs du projet !

Capture d'écran des statistiques de score de mon serveur NTP sur ntppool.org