Commentaire

Il existe beaucoup de documentations sur Internet traitant du sujet, mais très peu qui décrivent correctement comment mettre en place un serveur de temps sur un réseau totalement isolé d'Internet.

Mettre en place un serveur de temps sur un LAN isolé d'Internet

Sommaire

top Introduction

Lorsque l'on parle de serveur de temps, on parle du protocole réseau associé, le protocole NTP. Ce protocole permet à une machine de mettre à jour son horloge système en se synchronisant sur un serveur de temps présent sur Internet ou sur un réseau avec lequel elle peut communiquer. Le principe de NTP est de mettre la machine à l'heure en étudiant les temps de propagation sur le réseau, de façon précise.
Ce protocole communique via le port 123 en UDP. Ce détail a sont importance dans le cas où vous deviez traverser un firewall.

top Commentaire(s)/Correction(s)

J'ai pas mal buté sur la configuration du serveur dans le cadre d'un réseau local sans connexion avec l'internet. Mais à force de triffouiller et chercher à droite à gauche, j'ai fin par en venir à bout !

top Téléchargement et installation

Commençons par les fichiers sources. Deux possibilités s'offrent à vous. Soit vous vous procurez les sources sur le site officiel www.ntp.org, soit vous passez par un package précompilé. Le plus simple étant bien sur la solution du package, on va donc se focaliser sur cette solution pour décrire l'installation. Pour ma part, je me suis basé sur une distribution linux, la Fedora, et je me suis donc procuré le RPM de NTP sur le site officiel (US).

Pour l'installation, rien de bien complexe. Dans le cas des fichiers sources, la suite habituelle de commandes:

   [hostname]$ tar -xvzf ntp-x.x.x.tar.gz
   [hostname]$ cd ntp-x.x.x
   [hostname]$ ./configure
   [hostname]$ make
   [hostname]$ make install
  

Dans le cas d'un package précompilé:

   [hostname]$ rpm -ivh ntp-x.x.x.rpm
  

top Configuration

Un seul et unique fichier pour la configuration: /etc/ntp.conf.
Par défaut il comporte déjà pas mal d'options. Renommez le pour en garder une copie, puis créez en un nouveau.

   [hostname]$ mv /etc/ntp.conf /etc/ntp.conf.copie
   [hostname]$ vi /etc/ntp.conf
  

Comme nous l'avons déjà évoqué, nous allons paramétrer ce fichier pour faire de notre machine le serveur de temps référence de notre réseau local. L'adressage IP du réseau local étant en 192.168.0.0/24, voici le fichier /etc/ntp.conf correspondant à cette configuration:

   restrict default nomodify notrap noquery nopeer noserve
   restrict 127.0.0.1
   restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap

   server 127.127.1.0 # local clock
   fudge  127.127.1.0 stratum 4
   driftfile /etc/ntp.drift
   broadcastdelay 0.008
  

Et maintenant une petite explication des différentes instructions contenues dans ce fichier.

restrict
permet de définir un genre d'ACL pour la gestion des accès à votre serveur. De base l'accès est total, il vous faut donc bloquer un certain nombre d'options. Ici, par défaut, on bloque presque tout, pour le local (127.0.0.1) on laisse tout, et on autorise la consultation uniquement pour le réseau local.
server 127.127.1.0
fudge 127.127.1.0 stratum 4
Ces deux lignes indiquent au serveur qu'il doit se synchroniser sur l'horloge local. Comme vous le constatez 127.127.1.0 ne représente pas l'adresse IP de la boucle locale. C'est en fait un subterfuge pour indiquer un pilote factice qui aurait pu faire référence à un oscillateur externe.
driftfile
Cette commande indique le nom du fichier employé pour enregistrer la dérive de fréquence de l'oscillateur de l'horloge locale. Si le fichier existe, on le lit au démarrage afin de connaitre la dérive de fréquence initiale et puis il est mis à jour une fois par heure avec la dérive courante de fréquence calculée par le daemon. Si le fichier n'existe pas ou que cette instruction n'est pas donnée, la dérive initiale de fréquence est assumé à zéro. Dans ce cas-ci, cela peut prendre quelques heures pour stabiliser la fréquence et pour que les erreurs résiduelles de synchronisation s'abaissent.
broadcastdelay
Estimation du retard d'aller-retour.

Il vous faut maintenant régler correctement votre horloge locale qui va servir de référence pour la synchronisation de toutes les machines de votre réseau.

   mm:mois - dd:jour - HH:heure - MM:minute - yy:année
   [hostname]$ date mmddHHMMyy

   Exemple:
   [hostname]$ date 8506131627
   June 13, 1985, 4:27 PM
  

Il ne reste plus qu'à installer le service pour qu'il soit lancé dès le boot et enfin le lancer de façon manuelle.

   Installation du service dans la séquence de boot
   [hostname]$ chkconfig ntpd on

   Démarrage du service en manuel
   [hostname]$ service ntpd start

   Arrêt du service en manuel
   [hostname]$ service ntpd stop

   Redémarrage du service en manuel
   [hostname]$ service ntpd restart
  

top Tests et dépannages

Après avoir configuré et démarré votre serveur NTP, il vous faut vous assurer qu'il fonctionne correctement.

Vérifier que le service tourne

Pour tester que le processus NTP soit bien en fonctionnement, tapez la commande suivante:

   [hostname]$ pgrep ntpd
  

Vous devriez voir apparaître l'ID du processus.

Vérifier que le serveur permette bien la synchronisation

Pour que d'autres machines puissent se synchroniser sur votre serveur il faut contrôler que ce dernier le permette bien avec la commande ntpq -p. Pour que la synchronisation soit possible vous devez avoir un jitter inférieur à 100.

   [hostname]$ ntpq -p

   remote          refid           st t  when poll reach  delay    offset  jitter
   =============================================================================
   LOCAL(0)        LOCAL(0)         4 l    -   64    7    0.000    0.000   0.008
  

Si vous êtes confronté à un jitter de 4000.00, cela peut provenir de plusieurs choses:

Permissions sur les Fedora Core 2

Tous les processus NTP sur les RedHat/Fedora écrivent temporairement dans le répertoire /etc/ntp. Malheureusement, dans les Fedora Core 2, les permissions sur ce répertoire ne permette pas l'écriture temporaire. Vous devrez donc changer le groupe et le propriétaire de ce répertoire pour ntp.

   [hostname]$ chown ntp:ntp /etc/ntp
  

Si vous ne le faites pas vous aurez une erreur dans le fichier /var/log/messages du genre:

   Aug 12 00:29:45 smallfry ntpd[2097]: can't open /etc/ntp/drift.TEMP: Permission denied
  

top Configurer un équipement Cisco pour utiliser un serveur NTP

Vous pouvez utiliser la synchronisation avec votre serveur NTP pour une grande variété d'équipement, notament les équipements réseaux. Je ne vais pas vous mettre la liste complète des équipements qu'il existe sur le marché. On va se contenter de voir comment paramétrer quelques Cisco.

Cisco IOS

Pour faire en sorte que votre routeur se synchronise avec votre serveur NTP (192.168.0.1), utilisez les commandes suivantes:

   ciscorouter> enable
   password: *********
   ciscorouter# config t
   ciscorouter(config)# ntp update-calendar
   ciscorouter(config)# ntp server 192.168.0.1
   ciscorouter(config)# exit
   ciscorouter# wr mem
  

CAT OS

Pour faire en sorte que votre routeur se synchronise avec votre serveur NTP (192.168.0.1), utilisez les commandes suivantes:

   ciscoswitch> enable
   password: *******
   ciscoswitch# set ntp client enable
   ciscoswitch# ntp server 192.168.0.1
   ciscoswitch# exit
  

top Configurer un client Windows

Machine Client XP

Pour faire en sorte qu'une machine sous Windows vienne se synchroniser avec votre serveur NTP, voici la marche à suivre:

Vous devriez voir le message: "L'heure a été synchronisée avec [IP de votre serveur] le [la date]".

Domaine Active Directory

Il existe deux méthodes pour synchroniser des machines Windows NT et Windows 2000: La première consiste à utiliser le mécanisme hiérarchique de l'Active Directory, la seconde consiste à configurer sur chaque machine un lien sur un serveur NTP.
Afin d'exploiter pleinement les capacités de l'Active Directory, il est préférable d'utiliser le mécanisme standard de Windows 2000 (synchronisation hiérarchique de l'Active Directory).

L'émulateur de contrôleur principal de domaine est nécessaire pour synchroniser l'heure dans l'entreprise. Windows 2000 inclue le service W32time qui est nécessaire pour le protocole d'authentification Kerberos. Tous les ordinateurs Windows 2000 qui sont intégrés dans un domaine se synchronisent automatiquement. Pour les postes Windows NT4 (Workstation, Server, TSE) il faut installer l'outil W32time du kit de ressource sur chaque machine. Les stations ou serveurs membre du domaine Windows 2000 se synchronisent avec un contrôleur de domaine, qui aura été préalablement paramétré comme étant une source de temps fiable. Ce serveur se synchronise à sont tour avec le PDC Emulator du domaine. Enfin, le PDC Emulator est configuré pour accéder à un serveur NTP Unix/Linux (externe ou interne).

Configuration pour le PDC Emulator

Configuration pour le contrôleur de domaine Windows 2000

Configuration pour le serveur TSE et serveur NT membre du domaine

top Conclusion

"Faire un serveur de temps ?! Mais ça me sert à rien à moi !" Détrompez vous! Tous les matériels informatiques ont une horloge interne, mais celle-ci à tendance à se dérégler de plusieurs millisecondes voire de plusieurs secondes chaque jour qui passe! Un serveur de temps peut vous permettre de corriger ce problème en faisant une synchronisation entre les clients et le serveur toutes les 60 minutes par exemple.

Il est utile dans l'utilisation d'outils de monitoring réseau par exemple, pour la consultation des logs aussi de certains services réseau, pour les outils de versioning comme CVS ou Visual Safe ou encore pour les ressources partagées sur votre réseau (date et heure de création/modification/ouverture de fichier etc...)

 
Vous êtes connecté avec l'adresse IP 3.142.171.180