NTP Client : Heure locale synchronisée
La synchronisation de l’heure locale sous OpenBSD n’est pas bien difficile. Elle s’effectue au-travers du projet OpenNTPD, intégré nativement dans OpenBSD, et fonctionnel au démarrage de votre ordinateur sous OpenBSD.
Serveurs NTP
Les adresses de serveurs NTP sont visibles depuis la page pour trouver un serveur.
Les serveurs de pool NTP sont par zones mondiales comportant plusieurs pays.
- La zone Europe se gère à partir des serveurs europe.pool.ntp.org.
- La zone relative à la France est : fr.pool.ntp.org
- etc…
Configuration
Le fichier de configuration est /etc/ntpd.conf.
Pour qu’il corresponde à l’heure française, il faut modifier la ligne
correspondante à l’option servers, telle que :
servers fr.pool.ntp.org
Pour en serveur NTP en local, utilisez plutôt - à mettre en premier - :
server adr_ip_srvr
adr_ip_srvr est bien sûr l’adresse ip de votre serveur NTPD local ;
si vous avez une résolution DNS de celui-ci, vous pouvez spécifier le
nom d’hôte !
Contraintes
À-propos des options de contraintes :
ntpd(8) peut être configuré pour interroger la ‘Date’ des serveurs HTTPS
de confiance via TLS. Cette information de temps n’est pas utilisée pour
la précision mais agit comme une contrainte authentifiée, réduisant ainsi
l’impact des attaques NTP non authentifiées de l’homme au milieu.
Les paquets NTP reçus dont les informations temporelles se situent en
dehors d’une plage proche de la contrainte seront rejetés et ces serveurs
NTP seront marqués comme invalides.
Dans ce mail,
Theo de Raadt explique pourquoi il n’est pas désirable de personnaliser
les paramètres de contraintes autrement que ceux que l’équipe fixe.
Où l’on apprend aussi que le domaine www.openbsd.org ne doit pas être
invoqué, non plus…
Exemple
Exemple de configuration du fichier /etc/examples/ntpd.conf:
# $OpenBSD: ntpd.conf,v 1.5 2019/11/11 16:44:37 deraadt Exp $
# sample ntpd configuration file, see ntpd.conf(5)
# Addresses to listen on (ntpd does not listen by default)
#listen on *
# sync to a single server
#server ntp.example.org
# use a random selection of NTP Pool Time Servers
# see http://support.ntp.org/bin/view/Servers/NTPPoolServers
servers pool.ntp.org
# time server with excellent global adjacency
server time.cloudflare.com
# use a specific local timedelta sensor (radio clock, etc)
sensor nmea0 trusted
# use all detected timedelta sensors
#sensor *
# get the time constraint from a well-known HTTPS site
constraint from "9.9.9.9"		# quad9 v4 without DNS
constraint from "2620:fe::fe"		# quad9 v6 without DNS
constraints from "www.google.com"	# intentionally not 8.8.8.8
Serveur NTPD
⇒ OpenBSD ≥ 6.9 : Il n’est plus recommandé d’activer le drapeau -s
pour gérer correctement les contraintes !
⇒ OpenBSD < 6.9 : Ensuite, il faut activer le drapeau -s pour que
le serveur ntpd essaye de modifier l’heure locale, immédiatement au
moment du (re)démarrage du serveur.
# rcctl set ntpd flags -s
L’heure, svp !
Maintenant que la configuration est correctement faite, il nous faut (re)démarrer le service ntpd(8) :
# rcctl restart ntpd 
ntpd(ok)
ntpd(ok)
Toute modification du fichier de configuration nécessite le redémarrage du service NTP !
Attendre quelques secondes, et ensuite, vérifiez le status de ntpd, avec l’outil de contrôle ntpctl(8) :
$ doas ntpctl -sa 
5/5 peers valid, 0/1 sensors valid, constraint offset -2s, clock unsynced
peer
   wt tl st  next  poll          offset       delay      jitter
162.159.200.1 time.cloudflare.com
    1  7  3    5s    9s         0.848ms    52.534ms     1.445ms
195.154.226.102 from pool fr.pool.ntp.org
    1  8  2   28s   32s         5.421ms    48.736ms     1.627ms
93.113.207.65 from pool fr.pool.ntp.org
    1  8  2   33s   34s         6.263ms    51.508ms     2.299ms
51.15.175.180 from pool fr.pool.ntp.org
    1  8  2   31s   32s         5.530ms    49.960ms     2.917ms
5.39.80.51 from pool fr.pool.ntp.org
    1  7  2    4s    9s         9.524ms    52.748ms     3.335ms
sensor
   wt gd st  next  poll          offset  correction
upd0  
    1  0  0   12s   15s         - sensor not valid -
Un coup d’œil pour vérifier l’horloge, en mode graphique, ou en mode console :
$ date
Thu Apr 27 12:29:51 CEST 2023
Documentation
- le manpage (en anglais) : http://man.openbsd.org/ntpd.conf
- un exemple en local : /etc/examples/ntpd.conf
Historique
J’ai écrit historiquement cette documentation sur le wiki de la communauté “OpenBSD Pour Tous”.