Projet time

Projet time

Mise en service : 15/06/2025 Mise à jour de l'article : 11/07/2025 Production

🗓️ Historique

Infrastructure de synchronisation horaire lancée en juin 2025 pour fournir une référence temporelle précise et souveraine, sans dépendre des serveurs NTP externes.

🤔 Qu'est-ce qu'un serveur NTP ?

⏰ Le problème du temps

Imaginez que vous ayez plusieurs horloges dans votre maison. Au fil du temps, elles se désynchronisent et affichent des heures différentes. C'est exactement ce qui se passe avec les ordinateurs, smartphones et autres appareils connectés à Internet.

🎯 La solution : NTP (Network Time Protocol)

NTP est un protocole qui permet à tous les appareils de se synchroniser sur la même heure précise, comme si tous les ordinateurs du monde regardaient la même horloge atomique.

📊 Les "strata" (niveaux de précision)

  • Stratum 0 : Horloge de référence (GPS, atomique)
  • Stratum 1 : Serveurs directement connectés à l'horloge de référence (dans mon cas : 2 serveurs avec GPS)
  • Stratum 2 : Serveurs qui se synchronisent sur les Stratum 1 (dans mon cas : 1 serveur relais)
  • Stratum 3+ : Le reste du monde (mes serveurs publics reçoivent 2200 requêtes/seconde, soit ~6 milliards par semaine via pool.ntp.org)
  • 🌍 Pourquoi c'est important ?

  • Sécurité : Les certificats SSL ont besoin d'une heure précise
  • Logs : Pour tracer les événements dans le bon ordre
  • Synchronisation : Entre différents services et bases de données
  • Précision : Pour les applications scientifiques et financières
  • Impact global : Votre box, routeur, switch ou autres équipements se synchronisent peut-être déjà sur mes serveurs via pool.ntp.org !
  • 🚀 Ma démarche dans le fait d'en crée plusieurs chez moi sur mon infrastructure

    🎯 L'objectif initial

    J'ai voulu construire une infrastructure de temps qui ne dépende pas des services externes. L'idée était de créer quelque chose d'utile pour la communauté tout en apprenant les technologies de synchronisation temporelle.

    🔬 L'approche expérimentale

    "La création d'un sevreur ntp" m'a permis d'adopter une approche pas à pas :

    1. Recherche et documentation : Étude des protocoles NTP et des meilleures pratiques

    2. Prototypage : Tests avec des Raspberry Pi et modules GPS

    3. Optimisation : Amélioration de la précision avec des oscillateurs TCXO

    4. Déploiement : Mise en production progressive avec monitoring

    🛠️ Les défis techniques

  • Précision : Atteindre une dérive de moins d'1ms (réussi 300 nanosecondes soit 0.3 millisecondes)
  • Fiabilité : Assurer un service 24/7 sans interruption
  • Sécurité : Protéger les serveurs tout en les rendant accessibles
  • Intégration : Participer au pool NTP global
  • 🤝 Contribution à la communauté

    En créant cette infrastructure, j'ai pu :

  • Contribuer au pool NTP global
  • 🌐 Serveurs NTP sur NTP Pool

    time1.freewebworld.fr (Stratum 1)

  • IP : 109.190.177.203
  • Monitoring : NTP Pool
  • time2.freewebworld.fr (Stratum 1-2)

  • IP : 109.190.177.205
  • Monitoring : NTP Pool
  • time.freewebworld.fr (Stratum 2)

  • IP : 109.190.177.200
  • Monitoring : NTP Pool
  • 🔄 Comment fonctionne NTP Pool ?

    NTP Pool est un système intelligent qui distribue automatiquement les requêtes NTP entre tous les serveurs participants. Quand quelqu'un configure son appareil pour utiliser `pool.ntp.org`, le système :

    1. Sélectionne aléatoirement un serveur de la zone géographique appropriée

    2. Répartit la charge entre tous les serveurs disponibles

    3. Assure la redondance : si un serveur tombe en panne, les autres prennent le relais

    4. Mesure la qualité de chaque serveur (score 0-20)

    🖥️ Matériel et configuration

    Stratum 1 (time1 & time2)

  • Matériel : Raspberry Pi 4 avec GPS NEO-8M + PPS
  • RTC : DS3231 avec TCXO intégré (Temperature-Compensated Crystal Oscillator)
  • Système : Raspberry Pi OS + chronyd
  • Réseau : VLAN isolé, accès Internet interdit
  • Exposition : UDP/123 + HTTPS/443 (monitoring)
  • Stratum 2 (time)

  • Hébergement : VM Debian 12 sous Proxmox VE
  • Service : chronyd synchronisé aux Stratum 1
  • Usage : Serveur relais public
  • Exposition : UDP/123 + HTTPS/443 (monitoring)
  • 🔐 Sécurité

  • Aucun accès Internet depuis les serveurs NTP
  • Réception uniquement : UDP/123 (NTP) + HTTPS/443 (monitoring)
  • Cloisonnement réseau par VLAN via pfsense
  • Filtrage pare-feu strict
  • 📊 Monitoring

  • Interface de supervision hébergée côté proxy
  • Monitoring en temps réel via HTTPS
  • Intégration avec l'infrastructure globale
  • Logs et alertes centralisés
  • 🔗 Liens utiles

  • Pool NTP France : pool.ntp.org/zone/fr
  • Documentation NTP : ntp.org
  • Monitoring global : ntppool.org
  • 🎯 Bénéfices

  • Synchronisation précise : < quelques nano secondes dérive
  • Fiabilité : Redondance avec 3 serveurs
  • Gratuité : Service public sans limitation
  • Contribution : Participation au pool NTP global