Catégories
Open-source Planet-libre Reseau

Installation d’un serveur de temps sur votre réseau

Dans un système d’information moderne, la synchronisation des machines sur une horloge commune est un pré-requis pour de nombreuses actions comme l’analyse des logs ou la supervision système et réseau. Si vos machines sont directement connectés à Internet alors il n’y a pas de problème car les distributions GNU/Linux, Windows et Mac OS X embarquent des mécanisme pour se mettre automatiquement à l’heure en se synchronisant sur des serveurs publics (par exemple 0.debian.pool.ntp.org sur une Debian Squeeze). Si ce n’est pas le cas et que vos machines sont isolées et/ou bien filtrées lors de leurs accès à Internet, il peut être intéressant d’installer un serveur de temps local sur une de vos machine.

Nous allons donc dans ce billet installer un serveur de temps NTP sur une machine sous Debian 6 (Squeeze).

Le protocole NTP

J’invoque le bon génie Wikipédia: « Le Protocole d’Heure Réseau (Network Time Protocol ou NTP) est un protocole qui permet de synchroniser, via un réseau informatique, l’horloge locale d’ordinateurs sur une référence d’heure. »

La référence en question sera donc, dans notre cas, la machine ou nous allons installer puis configurer notre serveur NTP.

Le protocole NTP utilise le port UDP/123 pour effectuer les requêtes sur le réseau. Notre serveur sera donc en écoute sur le port UDP 123 (si vous avez un Firewall, il faudra bien entendu le configurer pour autoriser les requêtes sur ce port).

Installation du serveur NTP

On commence par installer les paquets nécessaires dans une console root:

[cc lang= »bash »]

apt-get install ntp ntpdate

[/cc]

La première chose à faire est de mettre le serveur à la bonne heure (quitte à avoir une référence, autant qu’elle soit juste…).

Pour cela deux solutions:

  • si votre machine à accès à Internet, utiliser la commande « ntpdate-debian » qui va synchroniser votre machine sur les serveur NTP Debian.
  • si votre machine n’a pas accès à Internet, alors téléphoner à l’horloge parlante (numéro payant: 3699) puis configurer l’heure système avec la commande « date ». Par exemple « date -s 16:56:23 ».

On édite ensuite le fichier /etc/ntp.conf:

[cc lang= »bash »]

# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help

driftfile /var/lib/ntp/ntp.drift

# Enable this if you want statistics to be logged.

#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

# You do need to talk to an NTP server or two (or three).

#server ntp.your-provider.example

# 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

# pool.ntp.org maps to about 1000 low-stratum NTP servers. Your server will

# pick a different set every time it starts up. Please consider joining the

# pool: <http://www.pool.ntp.org/join.html>

# Access control configuration; see /usr/share/doc/ntp-doc/html/accopt.html for

# details. The web page <http://support.ntp.org/bin/view/Support/AccessRestrictions>

# might also be helpful.

#

# Note that « restrict » applies to both servers and clients, so a configuration

# that might be intended to block requests from certain clients could also end

# up blocking replies from your own upstream servers.

# By default, exchange time with everybody, but don’t allow configuration.

restrict -4 default kod notrap nomodify nopeer noquery

restrict -6 default kod notrap nomodify nopeer noquery

# Local users may interrogate the ntp server more closely.

restrict 127.0.0.1

restrict ::1

# Clients from this (example!) subnet have unlimited access, but only if

# cryptographically authenticated.

#restrict 192.168.123.0 mask 255.255.255.0 notrust

# My server is a public server

restrict 0.0.0.0 mask 0.0.0.0

# If you want to provide time to your local subnet, change the next line.

# (Again, the address is an example only.)

broadcast 192.168.123.255

# If you want to listen to time broadcasts on your local subnet, de-comment the

# next lines. Please do this only if you trust everybody on the network!

#disable auth

#broadcastclient

[/cc]

Les informations intéressantes sont les suivantes:

server 0.fr.pool.ntp.org

server 1.fr.pool.ntp.org

server 2.fr.pool.ntp.org

server 3.fr.pool.ntp.org

Permet de configurer les serveurs maîtres sur lesquels votre machine va essayer de se synchroniser pour rester à l’heure. Il faut bien sûr que votre machine est accès à Internet sur le port UDP/123.

restrict 0.0.0.0 mask 0.0.0.0

On rends notre serveur public, toutes les machines ayant un accès réseau (encore une fois sur le port UDP/123) pourront se synchroniser à partir de votre serveur. Il est bien sûr possible de limiter ce droit aux seules machines de vos réseaux.

broadcast 192.168.0.255

(optionnel) Diffuse le temps sur l’adresse de broadcast de votre réseau (par exemple 192.168.0.0/24).

On relance ensuite le serveur pour que la configuration soit prise en compte:

[cc lang= »bash »]

# /etc/init.d/ntp restart

Stopping NTP server: ntpd.

Starting NTP server: ntpd.

[/cc]

Synchroniser vos machines avec votre serveur NTP

La configuration des clients est relativement simple car souvent inclus dans les « wizards » d’installations. Il suffit de préciser l’adresse IP ou le nom de votre machine hébergeant le serveur NTP comme serveur de temps.

Sur un client Debian 6 existant, il faut installer le package suivant (en root):

[cc lang= »bash »]

apt-get install ntpdate

[/cc]

Puis lancer la commande suivante (si votre serveur de temps est hébergé sur la machine 192.168.0.100):

[cc lang= »bash »]

ntpdate -dv 192.168.0.100

[/cc]

Conclusion

Le protocole NTP étant normalisé, il est bien sur possible de synchroniser toutes vos machines (Linux, BSD, Windows, OS X…) sur votre nouveau serveur de temps.

Catégories
Open-source Reseau Systeme

Installation d’un serveur NTP sous Ubuntu

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.

Catégories
Open-source Systeme

Installation d’un serveur NTP

A partir du moment ou votre réseau est composé de plusieurs machines, il est utile d’avoir une base de temps commune. Heureusement, il existe un protocole (NTP) permettant de fixer la même heure sur l’ensemble des machines.

Installation d’un serveur de temps

Nous utiliserons le serveur de temps libre NTPd disponible sous GNU/Linux et BSD.

La configuration est centralisé dans un seul fichier /etc/ntp.conf:

server 0.fr.pool.ntp.org

server 1.fr.pool.ntp.org

server 2.fr.pool.ntp.org

server 3.fr.pool.ntp.org

restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

logfile /var/log/ntp.log

driftfile /var/db/ntp.drift

On lance alors le serveur avec la commande:

ntpd -g -p /var/run/ntpd.pid -c /etc/ntp.conf

Tout comme le protocole DNS, NTP travaille avec des serveurs hiérarchisés. Les serveurs racines sont retournés par les alias x.fr.pool.ntp.org

La commande restrict permet de limité l’accès au serveur au seul réseau 192.168.1.0/24 (il est possible d’avoir plusieurs lignes restrict).

Avant de tester votre serveur de temps, il faut attendre que ce dernier se synchronise avec ses pères (au moins 30 minutes).

Configuration d’un client

La plupart des OS récents inclus la prise en charge de la partie cliente NTP. Lors de la configuration, il vous siffira de saisir l’adresse IP (ou le nom DNS) du serveur sur lequel est installé NTPd.

Vous avez aussi un moyen simple de tester votre serveur en ligne de commande (par exemple sous GNU/Linux Ubuntu):

sudo ntpdate -dv -b 192.168.29.108

Si votre serveur fonctionne normalement, vous devriez avoir le message suivant:

17 Oct 16:20:21 ntpdate[6570]: step time server 192.168.29.108 offset -6.080239 sec

Si vous avez l’erreur suivante:

17 Oct 16:09:52 ntpdate[6244]: no server suitable for synchronization found

Il y a de forte chance que votre serveur ne soit pas encore prêt à répondre aux clients (attendre environ 30 minutes). Si l’erreur persiste, vous pouvez lancez la commande suivante sur votre serveur afin de voir l’état de la synchrnonisation:

# ntpq -cpe

remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+goelette.net    145.238.203.14   2 u  254  512   37   22.615  -62.193   2.902
*ntp2.cines.fr   195.83.180.3     2 u   62   64  377   12.394   -0.253   4.034
+ntp.dr-j.eu     194.2.0.28       3 u  246  512   37   23.764    1.954   3.927
+ns2.kamino.fr   193.52.184.106   2 u   59   64  377   23.397   -1.449   4.540

Il ne vous reste plus qu’a passer sur toutes vos machines pour votre « tout nouveau, tout beau » serveur NTP.