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”.