NTP

From Le Wiki de debian-fr.xyz
Jump to: navigation, search

NTP (Network Protocol Daemon) est un protocole permettant de synchroniser l'horloge entre différentes machines.

C'est le même service, le daemon ntpd, qui fait à la fois client et serveur.

Installation

Il suffit d'installer le paquet ntp :

apt-get install ntp

Configuration

client

La configuration se fait dans le fichier /etc/ntp.conf

La liste des serveurs présente par défaut est :

server 0.debian.pool.ntp.org iburst
server 1.debian.pool.ntp.org iburst
server 2.debian.pool.ntp.org iburst
server 3.debian.pool.ntp.org iburst

La machine tente de se synchroniser avec le premier serveur, puis le second si le premier est indisponible, etc...

L'option iburst signifie qu'en cas d'indisponibilité, il essayera plusieurs fois avant d'abandonner. Si l'on met l'option burst à la place, il essayera dès la première connexion d'envoyer plusieurs paquets pour la synchronisation. On peut aussi ajouter l'option dynamic afin de conserver en mémoire les serveurs indisponibles, et tenter de les recontacter plus tard.

Il est souvent utile de définir des serveurs plus près, afin d'accélérer la synchronisation, par exemple, en France métropolitaine :

server 0.fr.pool.ntp.org iburst
server 1.fr.pool.ntp.org iburst
server 2.fr.pool.ntp.org iburst
server 3.fr.pool.ntp.org iburst

Vous pouvez trouver des serveurs de temps plus proches de chez vous à l'adresse http://www.pool.ntp.org (sur les liens à droite de la page)

Cette configuration est suffisante pour un simple client. Pensez simplement à redémarrer le service après modification :

# /etc/init.d/ntp restart

Ntp est un démon, il tourne en permanence afin de maintenir l'horloge à l'heure et de corriger sa dérive.

serveur

Si vous souhaitez que d'autres machines puissent intérroger votre daemon NTP pour se synchroniser avec, il faut d'abord définir un stratum pour l'horloge locale. Le stratum indique le nombre de relais utilisés jusqu'au serveur de référence. Par exemple, si vous interroger une machine ayant un stratum 3, votre machine aura un stratum 4. Les autres machines qui s'y synchroniseront auront un stratum 5, etc.

On définit donc un stratum fort (10) sur l'horloge locale, qui sera utilisé si la machine n'a pas réussi à intérroger un serveur de temps (elle renverra alors son heure locale). Le client qui interrogera cette machine saura alors que l'heure est peu fiable (et éventuellement interrogera un autre serveur) :

server 127.127.1.0
fudge  127.127.1.0 stratum 10

Enfin, il faut ajouter la liste des clients qui peuvent se connecter. Vous pouvez déjà voir dans la configuration par défaut les règles qui n'autorisent que localhost :

restrict -4 default kod notrap nomodify nopeer noquery # IPv4
restrict -6 default kod notrap nomodify nopeer noquery # IPv6
restrict 127.0.0.1 # IPv4
restrict ::1       # IPv6

On peut rajouter les règles que l'on souhaite, par exemple :

restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap

autorisera les machines du réseau 192.168.0.0/24 à interroger le serveur, mais pas à y faire de modification.

N'oubliez pas de redémarrer le service ntp, pour que les modifications soient prises en compte.

Synchroniser l'heure en « one-shot »

ntpd synchronise l'heure en ralentissant ou accélérant l'horloge petit à petit en fonction de l'heure renvoyée sur le serveur intérrogé.

On peut synchroniser l'heure directement sur l'heure obtenue en lançant :

# ntpd -gq

La commande ntpdate (paquet du même nom) fait de même. On pourrait être tenté de lancer cette commande via un cron, et/ou au démarrage du réseau pour ne pas laisser le daemon ntpd tourner sans cesse. Cependant, cette méthode est déconseillée, car certains services utilisent l'heure de la machine, et peuvent générer des erreurs, voire se stopper automatiquement, lorsqu'un changement d'heure est trop brutal.

Ressources

Expérimenté