Serveur de temps

XNTP - NTP





1 Le problème

Permettre à toutes vos machines d'être à la même heure et surtout à l'heure juste. Pour cela vous devez installer sur une de vos machines (un client ou un serveur) un serveur de temps, qui se met à l'heure avec le serveur de temps du rectorat ou éventuellement celui de votre provider, puis synchroniser l'ensemble de vos machines clientes sur cette machine.
Le protocole utilisé est NTP (Network Time Protocol). Il existe des serveurs de référence que l'on appelle des serveurs de strate 1, qui sont en nombre limité. Puis des serveurs de strate 2, plus nombreux (ntp.ac-creteil.fr par exemple) et ainsi de suite. 

Si vous souhaitez en savoir plus sur les serveurs de temps et le protocole correspondant, je vous suggère de lire les nombreuses documentations existantes sur le sujet, que l'on peut trouver sur internet (voir comme point de départ le site du cru).

2 Pourquoi

La plupart des administrateurs systèmes se disent que l'on n'est pas à une minute prêt et qu'ils ont d'autres problèmes plus urgents à résoudre avant de s'occuper de l'heure, d'ailleurs si vous deviez regarder l'heure vous ne feriez plus grand chose.
Mais à l'heure des synchronisations de répertoires entre portables (ou stations) et serveurs, des mises à jour via ftp, cela peut poser bien des tracasseries. Or l'installation d'un serveur de temps n'est pas un gros travail.

3 Les solutions

Ils en existent plusieurs et vous trouverez ici tous les utilitaires existants pour faire cela.
La solution que vous devez adopter est fonction de votre liaison avec l'internet. Il n'est pas souhaitable de monter la ligne uniquement pour aller vérifier si vous êtes toujours à l'heure et pour synchroniser quelques machines, profitez de l'ouverture de la ligne pour le faire. Mettez en place des solutions sur la base de cron ou at dans ce cas de figure. 
Si vous disposez d'une liaison permanente (LS, Câble, ADSL) vous n'avez pas à vous soucier des montées de ligne que cela peut provoquer.
En fait un serveur de temps, mais aussi un client doit pouvoir se synchroniser et donc adapter l'heure de votre machine sans provoquer de problèmes sur celle-ci. Il ne doit pas changer l'heure d'un coup s'il trouve une différence, mais faire avancer celle-ci plus rapidement jusqu'à ce qu'il obtienne la bonne heure, afin de ne pas perturber par exemple le déroulement des crontab.

4 Le serveur sous Linux 

Le plus utilisé est xntp, que vous pouvez trouver dans toutes les distributions. Si vous utilisez un RPM pour faire l'installation, vous avez alors les fichiers suivants d'installés : le daemon xntpd, le fichier de configuration /etc/ntp.conf, le script pour lancer xntpd au démarrage /etc/rc.d/init.d/xntpd, plus les commandes ntpdate, ntpq et ntptrace,  et d'autres utilitaires que je vous laisse découvrir. Vous pouvez aussi faire l'installation à partir des sources, il vous faut alors faire un classique ./configure, make puis make install.
Une fois installé vous n'avez plus qu'à indiquer le serveur de temps sur lequel vous allez vous mettre à l'heure (pour une plus grande précision il faudrait utiliser plusieurs serveurs). Toute la configuration se trouve dans le fichier /etc/ntp.conf.
Voici le fichier /etc/ntp.conf

server    127.0.0.1
server    127.127.1.0 stratum 10  # Indique que votre serveur doit se synchroniser sur       l'horloge locale
server    195.98.146.28                   # Serveur de temps qui vous donne l'heure. Vous pouvez ici indiquer plusieurs serveurs et mettre un prefer pour le serveur préféré.
drifffile /etc/ntp/drift                # Fichier contenant la déviation moyenne
multicastclientnes 
broadcastdelay    0.008
authentificate no
                        # Pour l'authentification des clients 
logfile /var/log/xntpd                # Fichier d'historique
statsdir   /var/log/ntpstats                 # Répertoire contenant les statistiques d'utilisation
statistics loopstats peerstats clockstats   # Statistiques désirées
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable

Si le nombre de vos clients est très important, vous pouvez utiliser  les modes broadcast et multicast, pour cela il faut ajouter dans ntp.conf du serveur broadcast adresse_de_broadcast_du_reseau.

Afin de pouvoir synchroniser l'heure au démarrage de xntpd, il vous faut créer le fichier /etc/ntp/step-tickers en indiquant le serveur de temps qui va vous donner l'heure, il contient donc juste l'ip de votre serveur de temps. Cela est utilisé à chaque redémarrage de xntpd par la commande ntpdate qui est lancée dans le script /etc/rc.d/init.d/xntpd.

Vous devez démarrer xntpd et lui permettre de se lancer à chaque démarrage de votre machine (etc/rc.d/init.d/xntpd start).

La synchronisation se fait  au démarrage du démon, vous pouvez aussi le faire avec ntptrace ou ntpdate.
Pour tester utilisez ntptrace -dv nom_serveur pour connaître la déviation de temps entre vous et le serveur de temps de strate supérieure. Vous pouvez aussi utiliser ntpq -p -n.

5 Les clients Linux

   Rien ne vous empêche d'installer xntp sur vos clients Linux, toutefois si vos machines ne sont pas d'une grande puissance, ne sont pas allumées en permanence, je vous conseille d'utiliser alors ntpdate (il est dans la rpm de xntpd) que vous placez dans une crontab. La syntaxe est alors /usr/sbin/ntpdate -b -s mon_serveur_de_temps (vous pouvez indiquer l'adresse IP de la machine).  Il ne vous reste plus qu'à créer une entrée dans crontab du type 
0 */10 * * * /usr/sbin/ntpdate -b -s mon_serveur_de_temps
.
Vous allez donc faire une mise à l'heure toutes les 10 heures. 
Si votre machine n'est allumée que de temps en temps, la crontab ne correspond pas vraiment,  mettez plutôt cette ligne au démarrage de la machine (les clients restants rarement allumés tout le temps). Ajoutez donc la ligne dans le fichier rc.local. La mise à l'heure se fera alors à chaque démarrage de la machine.

6 Les clients Windows

Actuellement la plus grande partie des machines installées étant des machines sous windows, vous devez pouvoir configurer vos clients Windows pour qu'ils puissent se mettre à l'heure sur votre serveur de temps sous Linux  (cela est identique si votre serveur de temps tourne sous NT ou Novell).
Vous trouverez ici la solution  détaillée, ainsi que les scripts et les fichiers .reg pour installer un client ntp sur vos stations ou serveurs Windows. 

7 Les clients Novell

Lire client dans le sens client du serveur de temps sous linux que l'on vient d'installer. Il suffit d'indiquer au serveur Novell que le serveur de temps est la machine Linux. Il faut bien sur que Novell soit en IP. Par contre les clients de ce serveur (les machines Windows qui s'identifient sur ce serveur) doivent continuer à se synchroniser sur votre serveur Novell, puisque cela fait partie du client de connexion.
1) Ouvrir le fichier TIMESYNC.CFG
2) La ligne "TYPE=" doit devenir TYPE=SINGLE
3) La ligne SERVICE ADVERTISING doit passer à OFF
4) La ligne CONFIGURED SOURCES doit passer à ON
5) La ligne TIMESOURCES doit contenir exactement TIMESOURCES=ntp.ac-creteil.fr;

ATTENTION A NE PAS OUBLIER LE ";" FINAL
6) aïe aïe aïe ... il faut maintenant tomber le serveur, puis le relancer
(Merci Jean Claude).

A la place de ntp.ac-creteil.fr indiquer le serveur de temps que vous souhaitez utiliser ou celui qui existe déjà dans votre établissement (le serveur Slis par exemple).

8 Remarques

- Vous n'avez pas besoin d'installer un serveur de temps par serveur et encore moins par machine. Utilisez la machine qui reste allumée, pour faire cela et synchronisez dessus toutes les machines de votre établissement, y compris les autres serveurs.
- Évitez de synchroniser vos stations sur un serveur de temps se trouvant sur l'internet, sauf si vous n'avez que quelques machines. Cela génère du trafic.
- Ne tombez pas dans l'excès, une machine cliente n'a pas besoin de se synchroniser toutes les cinq minutes. Vous générez alors du trafic. 
- Vous devez  lire le mot client, comme toute machine susceptible de pouvoir se synchroniser à votre serveur, cela peut donc être une station, un serveur Novell, NT, Linux....etc.
- N'utilisez pas un serveur de temps de strate 1 pour synchroniser votre serveur. Ils ne sont pas fait pour connecter des petites entités. Utilisez de préférence le serveur de temps de votre provider.
- Lorsque vous utilisez un serveur de temps signalez le à la personne qui l'administre. Cela est une règle de politesse de l'internet. 


TP 1 : Le but de ce TP est d'installer xntp3 sur une machine et de configurer les clients sous Windows. Faire des tests en modifiant l'heure des machines. La machine serveur devant utiliser le serveur ntp.ac-creteil.fr les clients devant utiliser le serveur que vous venez d'installer.
          


© Philippe Chadefaux - 26/1/2001 -