Installation d’un serveur NTP sous Ubuntu

Date: 15/03/2010 | Catégories: Open-source,Reseau,Systeme | Tags: ,,,,

Si vous disposez de plusieurs machines sur votre réseau, il peut, dans certains cas être intéressant de les synchroniser sur une date et une heure commune (par exemple pour de l'analyse de fichiers de log). Les systèmes d'exploitation modernes utilisent maintenant le protocole NTP pour se synchroniser via le réseau IP.

C'est quoi donc NTP ?

Le principe général est simple: on configure le client NTP pour aller demander à un serveur NTP l'heure de référence à quelques millisecondes (ou dizaines de millisecondes) près. En fait la résolution théorique est de 233 ps, mais en pratique la précision est limité par la variabilité des latences réseau. Le client peut alors modifier sa date système en concéquence. Cette description simpliste est à nuancer par le fait que le protocole NTP est basé sur une architecture en arbre.

Par exemple, sur un système d'exploitation GNU/Linux de type Debian ou Ubuntu, il suffit de saisir la commande suivante pour faire appel à un serveur NTP secondaire (ntp.ubuntu.com définie dans le fichier /etc/default/ntpdate):

[shell]

sudo ntpdate-debian

15 Mar 10:11:01 ntpdate[5406]: adjust time server 91.189.94.4 offset 0.038837 sec

[/shell]

Nous allons voir maintenant comment installer un serveur de temps NTP sur votre réseau qui pourra continuer de servir de référence même en cas de coupure de votre liaison Internet.

Installation d'un serveur NTP

On installe les briques NTP (exemple de commandes sous Ubuntu 9.10)

[shell]

sudo aptitude install ntp

sudo /etc/init.d/ntp stop

[/shell]

On configure ensuite le fichier /etc/ntp.conf:

[shell]

sudo vi /etc/ntp.conf

# Configuration
driftfile /var/lib/ntp/ntp.drift
statsdir /var/log/ntpstats/
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable

# Serveur de temps ROOT
# http://www.pool.ntp.org/zone/fr
server 0.fr.pool.ntp.org
server 1.fr.pool.ntp.org
server 2.fr.pool.ntp.org
server 3.fr.pool.ntp.org

# ACL
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1
restrict 192.168.2.0 mask 255.255.255.0 notrust

[/shell]

Pour synchroniser mon serveur NTP, j'utilise les serveurs fourni par le projet pool.ntp.org qui propose un cluster de serveurs NTP virtualisés sous un nom unique (fr.pool.ntp.org pour la france).

Il faut également penser à adapter la section ACL en fonction de votre réseau (le mien étant en 192.168.2.0/24)

On peut ensuite vérifier que le serveur de temps fonctionne puis lancer le daemon NTP:

[shell]

sudo ntpdate -dv fr.pool.ntp.org

sudo /etc/init.d/ntp start

[/shell]

Configuration des clients NTP

Il ne reste plus qu'à configurer les clients NTP de votre réseau pour utiliser votre serveur NTP. Sous Ubuntu, il faut se rendre dans le menu "Système / Administration / Date et heure" puis sélectionner "Configuration: Rester synchronisé avec les serveurs sur Internet":

Cliquer ensuite sur "Sélectionner des serveurs":

On ajoute notre serveur NTP local (adresse 192.168.2.254 dans mon cas):

PS: il est possible de sélectionner plusieurs adresses de serveurs.

Et voili, votre PC restera maintenant synchronisé à votre serveur de temps, lui même synchronisé au cluster NTP fr.pool.ntp.org !