---
categories: ['OpenBSD','Réseau','Serveur']
date: 2020-01-19T16:30:48+02:00
description: "Apprendre à gérer un serveur de temps sous OpenBSD"
draft: false
include_toc: true
show_comments: false
tags: ['OpenBSD','ntp','OpenNTPD']
title: "NTPD : Serveur de temps"
translationKey: 'openbsd-ntpd'
---
## Description
[OpenNTPD](http://www.openntpd.org/) est intégré nativement dans OpenBSD.
## Serveurs NTP
Les adresses de serveurs NTP sont visibles depuis la
[page pour trouver un serveur](http://support.ntp.org/bin/view/Servers/WebHome#Finding_A_Time_Server).
Les [serveurs de pool NTP](http://support.ntp.org/bin/view/Servers/NTPPoolServers)
sont par zones mondiales comportant plusieurs pays.
* La zone Europe se gère à partir des serveurs [[http://www.pool.ntp.org/zone/europe|europe.pool.ntp.org]].
* La zone relative à la France est : [[http://www.pool.ntp.org/zone/fr|fr.pool.ntp.org]]
## Configuration
Le fichier de configuration est `/etc/ntpd.conf`.
Il est apparu dans OpenBSD 3.6.
Des différentes options :
* **listen on** *address* [**rtable** *table-id*] : spécifie l'adresse
ip locale ou le nom d'hôte que doit écouter le service ntpd(8). Si
l'option est spécifiée plusieurs fois, le service écoutera chacune
des adresses données. Si le symbole `*` est donné, ntpd écoutera toutes
les adresses locales où est spécifiée la table de routage.
Le mot-clé `rtable` indique quelle table de routage écouter.
Par défault, ntpd écoute la table de routage en cours.
* **query from** *address* : spécifie l'adresse IP locale que le démon
ntpd(8) doit utiliser pour les requêtes sortantes vers des serveurs
spécifiés ultérieurement.
* **sensor** *device* : spécifie un périphérique d'écoute de temps que
ntpd(8) doit écouter. S'ils sont spécifiés plusieurs fois, ntpd utilisera
chaque capteur donné en référence qui existe vraiment ; ceux qui sont
inexistants sont ignorés.
Si le symbole `*` est donné, ntpd essaiera d'écouter tous les capteurs
qu'il trouvera.
Par défaut, ntpd n'utilise aucun capteur.
* **server** *address* [**weight** *weight-value*] : spécifie l'adresse
IP ou le nom d'hôte d'un serveur NTP à synchroniser. ntpd essaiera de
se synchroniser sur tous les serveurs spécifiés, si cette option est
utilisée plusieurs fois. Si un nom d'hôte fonctionne sur la double
couche réseau IPv4|6, ntpd utilisera la première adresse réseau.
Si ntpd n'a pas de réponse d'une adresse, il utilisera la suivante
jusqu'à ce qu'une réponde.
Il est recommandé de configurer plusieurs serveurs, de préférence des
serveurs à faible latence, afin d'obtenir une meilleure précision.
* **servers** *address* [**weight** *weight-value*] : identique à
l'option `server`, à la différence que si les serveurs ont plusieurs
adresses IP, ntpd essaiera de se synchroniser sur toutes ces adresses.
* **constraint from** *url* : spécifie une URL, l'adresse IP ou le nom
d'hôte d'un serveur HTTPS pour fournir une contrainte.
Si la contrainte donnée est utilisée plus d'une fois, ntpd(8) calculera
une contrainte médiane à partir de tous les serveurs spécifiés.
* **constraints from** *url* : identique à l'option `constraint from`,
à la différence que si le nom d'hôte est résolu sur plusieurs adresses
IP, ntpd(8) calculera une contrainte médiane à partir de toutes ces
adresses.
{{}}
**À-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](https://marc.info/?l=openbsd-misc&m=158888999317454&w=2),
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
Voici un exemple du fichier `/etc/examples/ntpd.conf`:
```ini
# $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
```
## Service NTPD
Le démon `ntpd` synchronise l'horloge locale sur un ou plusieurs serveurs
NTP distants ou capteurs timedelta locaux. ntpd peut également agir comme
un serveur NTP lui-même, redistribuant l'heure locale. Il implémente la
version 4 de Simple Network Time Protocol, telle que décrite dans la RFC
5905, et la version 3 de Network Time Protocol, telle que décrite dans
la RFC 1305. Le temps peut également être récupéré depuis les serveurs
HTTPS pour réduire l'impact des attaques NTP dites "man-in-the-middle"
(*l'homme au milieu*) non authentifiées.
Le service `ntpd` est apparu la première fois dans OpenBSD 3.6.
Les options possibles au service sont :
* `-d` : ne pas mettre en service. ntpd fonctionnera alors en arrière plan,
et journalisera vers la sortie `stderr`.
* `-f *fichier*` : utilisera le fichier de configuration spécifié au lieu
du fichier de configuration par défaut.
* `-n` : test la validité du fichier de configuration. À n'utiliser que
pour cela.
* `-S` : annule les effets de l'option `-s`.
* `-s` : essaye toujours de régler l'heure au démarrage de la machine.
Par défaut, ntpd essaye de régler l'heure au démarrage, uniquement
si les contraintes sont configurées et satisfaites. ntpd restera au
premier plan jusqu'à 15 secondes en attendant la réponse d'un des
serveurs NTP configurés.
## Le Contrôleur ntpctl
Le contrôleur `ntpctl` est un programme qui affiche les informations liées
au service ntpd(8).
Les options possibles sont :
* `-s all | peers | Sensors | status` :
* `all` : affiche toutes les informations possibles
* `peers` : affiche les informations relatives à chaque pair
* `Sensors` : affiche les informations relatives à chaque capteur.
* `status` : indique l'état des pairs et des capteurs, et si l'horloge du système est synchronisée.
Le contrôleur est apparu la première fois dans OpenBSD 5.5.
---
## Documentation
⇒ les différents manpage :
* le service [ntpd(8)](http://man.openbsd.org/ntpd.8).
* le contrôleur [ntpdctl(8)](http://man.openbsd.org/ntpctl.8).
* le fichier de configuration [ntpd.conf](http://man.openbsd.org/ntpd.conf.5).
* un exemple local : `/etc/examples/ntpd.conf`
* RFC 1305 : https://tools.ietf.org/html/rfc1305 ;
- *explications par Stéphane Bortzmeyer* : https://www.bortzmeyer.org/1305.html
* RFC 5905 : https://tools.ietf.org/html/rfc5905 ;
- *explications par Stéphane Bortzmeyer* : https://www.bortzmeyer.org/5905.html
---
## Historique
J'ai écrit historiquement cette documentation sur le wiki de la communauté
"OpenBSD Pour Tous".
---