--- categories: system title: Howto NTP ... Le protocole [NTP (Network Time Protocol)](https://fr.wikipedia.org/wiki/Network_Time_Protocol) permet de maintenir à l'heure un système d'exploitation. Il s'agit d'éviter les déviations d'heure, et **pas** de gérer les changements de fuseaux horaires ou les décalages d'heure été/hiver. On utilise en général le protocole NTP version 4 (NTPv4) publié en juin 2010. Sur des petits équipements, on utilise parfois une version simplifiée de NTP appelée [SNTP (Simple Network Time Protocol)](https://tools.ietf.org/html/rfc4330). Sur un serveur, nous recommandons d'être synchronisé avec les serveurs de temps de référence [pool.ntp.org](http://www.pool.ntp.org/). ## Installation Il existe des clients NTP en ligne de commande comme _ntpdate_ mais sur un serveur nous conseillons d'utiliser un démon NTP qui maintiendra le système synchronisé en permanence avec un temps de référence : ~~~ # apt install ntp # ntpd --help | head -1 ntpd - NTP daemon program - Ver. 4.2.6p5 ~~~ ## Configuration en tant que client NTP L'objectif est de maintenir le serveur synchronisé en permanence avec des serveurs NTP de référence. La configuration se fait via le fichier `/etc/ntp.conf` : ~~~ # Le ou les serveurs sur lesquels on veut se synchroniser server ntp.evolix.net server pool.ntp.org # Cette ligne sert à autoriser le contrôle TOTAL de l'horloge pour la machine locale # ce qui est le but recherché. # On autorise toute requête de synchronisation DEPUIS notre serveur restrict 127.0.0.1 restrict ::1 # On interdit toute requête de synchronisation VERS notre serveur restrict -4 ignore restrict -6 ignore ~~~ On peut vérifier le bon fonctionnement via la commande : ~~~ # ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== ntp.example.com 213.251.153.35 3 u 50 64 3 19.404 -10.832 8.768 ~~~ ## Configuration en tant que serveur NTP Pour un serveur sur lequel viendrait se synchroniser d'autres machines, on se synchronise avec plusieurs serveurs de strate 2 et on autorise l'accès en lecture depuis d'autres machines via le fichier `/etc/ntp.conf` : On le configure via le fichier _/etc/ntp.conf_. ~~~ # Plusieurs serveurs (de strate 2 a priori) # Voir http://support.ntp.org/bin/view/Servers/StratumTwoTimeServers server ntp1.example.com server ntp2.example.com server ntp3.example.com server ntp4.example.com # Autoriser l'accès en lecture uniquement depuis partout restrict -4 default kod notrap nomodify nopeer noquery restrict -6 default kod notrap nomodify nopeer noquery # On autorise toujours notre propre machine à modifier son horloge restrict 127.0.0.1 restrict ::1 ~~~ On peut voir la liste des clients qui se connectent au serveur via : ~~~ # ntpdc -c monlist remote address port local address count m ver rstr avgint lstint ================================================================================ server1.example.com 41342 192.0.43.123 6404 3 4 1d0 27 2 server2.example.com 34764 192.0.43.123 6412 3 4 1d0 27 2 server3.example.com 44168 192.0.43.123 6970 3 4 1d0 25 10 server4.example.com 58051 192.0.43.123 2495 3 4 1d0 70 16 server5.example.com 123 192.0.43.123 2640 3 4 1d0 66 30 ~~~ ## NTP sous OpenBSD Sous OpenBSD on a le démon très léger [OpenNTPD](http://www.openntpd.org/). Il est installé et lancé par défaut avec une configuration minimale via le fichier `/etc/ntpd.conf` : ~~~ servers pool.ntp.org ~~~ À noter que par défaut, la synchronisation NTP est lente, il faudra plusieurs minutes voire heures si votre horloge a un fort décalage. Pour forcer une synchronisation immédiate : ~~~ # ntpd -s ~~~ On conseille de l'activer au démarrage : ~~~ # rcctl set ntpd flags "-s" ~~~ ## Munin Pour les serveurs utilisant un serveur NTP uniquement pour leurs besoins, Munin intègre par défaut des scripts pour surveiller le décalage par rapport à un/des serveur(s) de temps. Il ne reste qu'à les activer. Pour les serveurs NTP, des plugins non officiels existent : _ntp_queries_ etc.