Infrastructure13 février 202614 min de lecture

    Héberger un NTP public sur une VM Proxmox : bonne ou mauvaise idée ?

    Le temps est un pilier silencieux de toute infrastructure : TLS, logs, réplication, Kerberos — tout repose sur une horloge fiable. Chez RDEM Systems, nous opérons un pool NTP public , dont une partie tourne en VM Proxmox. Voici notre retour d'expérience.

    Le clock drift en VM : pourquoi ça dérive

    Sur un serveur bare-metal, l'OS a un accès direct à l'horloge matérielle (RTC, TSC). En VM, c'est différent : l'hyperviseur virtualise l'horloge. Le CPU est partagé entre plusieurs VM, et chacune ne reçoit ses cycles que par tranches. Résultat : l'horloge de la VM peut dériver.

    Bare-metal vs VM : accès à l'horloge

    Bare-metal

    Accès direct au TSC / HPET
    Pas de steal time
    Interruptions PPS directes
    Précision : < 1 µs (avec PPS)

    Machine virtuelle

    TSC partagé / virtualisé
    Steal time possible sous charge
    Pas d'accès PPS / GPIO
    Précision : ~0.5–2 ms (NTP)

    Les facteurs principaux de dérive en VM : steal time (CPU partagé), live migration (pause de la VM), et suspension/reprise.

    Ce clock drift est gérable pour la plupart des usages — à condition d'utiliser le bon outil de synchronisation.

    Pour comprendre les impacts concrets d'une horloge desynchronisee, consultez notre article Pourquoi la precision NTP est critique en environnement virtualise : certificats TLS invalides, echecs Kerberos, corruption de replicas — les consequences sont bien reelles.

    Chrony vs ntpd vs systemd-timesyncd

    Trois démons NTP coexistent dans l'écosystème Linux. Leur comportement en VM diffère fortement.

    CritèreChronyntpdtimesyncd
    Resync après suspensionRapideLent (minutes)Moyen
    Mode serveur NTPOuiOuiNon
    Saut de temps (makestep)Natif-g flagN/A
    Mode burstiburstiburstNon
    NTS (Network Time Security)OuiNonNon
    Adapté aux VMExcellentPassableClient seul

    Verdict : Pour un serveur NTP en VM, Chrony est le choix évident. Il a été conçu pour les environnements où l'horloge dérive (VM, laptops, conteneurs). Il se resynchronise en secondes après une live migration, là où ntpd peut mettre plusieurs minutes. De plus, Chrony est le seul à supporter NTS (Network Time Security) , la sécurisation du protocole NTP.

    Configuration Chrony optimale pour un NTP public en VM

    Voici une configuration /etc/chrony/chrony.conf adaptée à un serveur NTP public hébergé en VM Proxmox. Chaque directive est commentée.

    La directive clé pour les VM est makestep 0.1 5 : elle autorise Chrony à corriger brutalement l'horloge si l'écart dépasse 100ms pendant les premiers échanges — typiquement après un reboot, une migration ou une suspension.

    Consultez ntp.rdem-systems.com pour voir notre pool NTP public en production, alimenté par cette configuration.

    VM vs LXC vs bare-metal pour héberger du NTP

    Le choix du type d'hébergement impacte directement la qualité du service NTP. Voici un comparatif :

    CritèreVM (KVM)LXCBare-metal
    HorlogeVirtuelle (kvm-clock)Partagée avec le hostMatérielle directe
    Chrony indépendantOuiNon (horloge host)Oui
    Accès PPS / GPSNonNonOui
    Précision typique~0.5–2 ms= précision du host< 1 µs (avec PPS)
    Stratum recommandé2 ou 3Pas adapté (pas de contrôle)1 (avec GNSS)
    Live migrationCause un sautN/AN/A
    IsolationComplètePartielleComplète

    Pourquoi pas LXC ?

    Un conteneur LXC partage l'horloge du host : il ne peut pas exécuter son propre démon NTP de manière indépendante. Si le host dérive, le conteneur dérive aussi. Pour servir du NTP à des clients externes, il faut une horloge que vous contrôlez — donc une VM ou du bare-metal.

    Le verdict honnête

    VM Proxmox : parfait pour Stratum 2/3

    • Précision ~1 ms — suffisante pour 99% des usages
    • TLS, Kerberos, logs, réplication : aucun problème
    • Chrony compense le clock drift automatiquement
    • Facilement redondant (plusieurs VM sur différents hosts)

    Bare-metal : obligatoire pour Stratum 1

    • Accès direct au récepteur GNSS (GPS, Galileo)
    • Signal PPS via GPIO ou port série
    • Précision sub-microseconde requise
    • Interruptions matérielles sans virtualisation

    Notre expérience : le pool NTP RDEM Systems

    Chez RDEM Systems, nous opérons un pool NTP public qui combine les deux approches :

    Architecture du pool ntp.rdem-systems.com

    Stratum 1

    Raspberry Pi + GNSS

    Serveur bare-metal avec récepteur GNSS (GPS + Galileo) et signal PPS. Projet personnel de 2017, réintégré dans l'entreprise début 2026. Source de référence du pool.
    Synchronisation directe
    Stratum 2

    VM Proxmox + Chrony

    Relais NTP en VM Proxmox. Synchronisé sur le Stratum 1 + pool public en fallback. Sert les clients du réseau et le pool public.

    Le Stratum 1 fournit la référence temporelle absolue. Les relais Stratum 2 en VM distribuent l'heure aux clients.

    Cette architecture hybride nous permet de combiner la précision absolue du bare-metal GNSS avec la flexibilité et la redondance des VM Proxmox.

    Vous pouvez vérifier la synchronisation de votre machine directement depuis notre site. Et pour la sécurisation NTP, consultez notre page sur NTS (Network Time Security) .

    Bonnes pratiques pour NTP en VM Proxmox

    Checklist opérationnelle

    • Installer qemu-guest-agent dans la VM : permet à Proxmox de communiquer avec la VM (fsfreeze, shutdown propre)
    • Chrony sur le host aussi : l'hyperviseur Proxmox doit lui-même être synchronisé — l'horloge matérielle fiable bénéficie à toutes les VM
    • Monitorer l'offset : surveillez chronyc tracking — un offset > 10ms est un signal d'alerte
    • Sources NTP fiables : privilégiez des Stratum 1 connus (PTB, NIST, votre propre GNSS) plutôt que le pool public seul
    • Minimum 3 sources : Chrony peut détecter et exclure une source défaillante avec au moins 3 serveurs upstream
    • Polling agressif en VM : minpoll 4 maxpoll 6 (16s–64s) compense le drift plus fréquent
    • Tester après live migration : vérifiez que Chrony se resynchronise en quelques secondes après un déplacement de VM

    Tableau récapitulatif

    ScénarioRecommandation
    NTP Stratum 2/3 publicVM Proxmox + Chrony — fiable et flexible
    NTP Stratum 1 GNSSBare-metal obligatoire — accès PPS requis
    NTP interne d'entrepriseVM largement suffisante
    Trading haute fréquenceBare-metal + PTP — précision sub-µs
    Client NTP simpleVM, LXC ou bare-metal — tout convient
    Démon NTP en LXCDéconseillé — horloge partagée avec le host

    Questions fréquentes

    Documentation officielle

    Pour approfondir les concepts abordés dans cet article :

    Articles connexes

    Besoin d'une infra Proxmox synchronisée ?

    Nous déployons et supervisons des serveurs NTP, configurons Chrony sur vos clusters Proxmox, et opérons un pool NTP public que vous pouvez utiliser librement.