XNTP - NTP
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.
Il existe deux protocoles : Time protocol (ancien rfc 868, qui tourne sur le port 37 UDP/TCP) et NTP (plus moderne rfc 1305 qui tourne sur le port 123).
Le protocole NTP (Network Time Protocol) permet de mettre en place des serveurs qui sont capables de se synchroniser sur plusieurs serveurs de référence, les serveurs en haut de la pyramide sont 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
multicastclient #Ecoute par défaut sur l'adresse multicast ( 224.0.1.1)
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.
L'interrogation du démon se fait avec la commande interactive /usr/local/sbin/ntpq:
ntpq > pe (Equivalent à /usr/local/sbin/ntpq -p, sans interactivité)
remote refid st t when poll reach delay offset jitter
==============================================================================
joliot.net.espc 0.0.0.0 16 u - 64 0 0.000 0.000 4000.00
*horlogegps.rese .GPS. 1 u 6 64 37 6.195 1.227 1.824
ntpq> rv
status=0644 leap_none, sync_ntp, 4 events, event_peer/strat_chg,
version="ntpd 4.1.71-a Tue Apr 9 16:54:07 CEST 2002 (1)",
processor="i386", system="OpenBSD/3.0", leap=00, stratum=2,
precision=-18, rootdelay=5.440, rootdispersion=194.627, peer=15389,
refid=horlogegps.reseau.jussieu.fr,
reftime=c07826aa.e644523f Mon, Apr 29 2002 22:08:10.899, poll=6,
clock=c07826ec.d8e6c093 Mon, Apr 29 2002 22:09:16.847, state=4,
offset=0.062, frequency=45.325, jitter=0.842, stability=1.621
Un ? dans ntpq vous proposera une liste d'option.N'oubliez pas que votre serveur de temps sera client de temps d'un serveur de strate supérieure.
Pour démarrer le serveur faite un /etc/rc.d/init.d/xntpd start.
Ce serveur doit être à l'écoute sur le port 123, pour le vérifier faites un netstat -na.
Pour avoir comme serveur Time Protocol, vous devez l'activer dans /etc/inetd.conf.
5 Le serveur sous un autre Unix : OpenBSD
Très proche de ce qui se fait sous Linux, on utilise aussi le ports ntp. Le démon est /usr/local/sbin/ntpd, le fichier de configuration est /etc/ntp.conf. Attention, il n'y a pas de sous répertoire /etc/ntp comme sous Linux. Le lancement du démon ntpd se fait en modifiant le fichier /etc/rc.conf :
ntpd=NO devient ntpd=YES #run ntpd if exists
La configuration du fichier est identique avec la version sous Linux.
6 Les clients OpenBSD
Au démarrage : dans le fichier /etc/rc.conf : ntpdate_flags= IP ou FQDN de votre serveur de temps
Dans la crontab (à intervalle régulier) :/usr/local/sbin/ntpdate -b -s IP ou FQDN de votre serveur de temps
Il ne vous reste plus qu'à créer une entrée dans crontab du type
0 */10 * * * /usr/local/sbin/ntpdate -b -s IP/FQDN_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.
Il existe aussi rdate. Celui-ci se trouvant dans les sources, vous n'avez pas besoin d'ajouter un package supplémentaire. Surtout si cette machine n'est qu'un simple client. Vous pouvez l'activer simplement dans /etc/rc.conf en modifiant la lig,e rdate_flags=IP (IP étant l'adresse IP de votre serveur de temps).
7 Les clients Linux
Il en existe deux : rdate port 37 Time protocol) et ntpdate (123 NTP).
ntpdate (il est dans la rpm de xntpd, ou ntp, sous débian faire un simple apt-get install ntpdate) 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.
Vous pouvez aussi utiliser rdate -s mon_serveur_de_temps.
- Vous pouvez aussi afin de régler l'horloge matérielle sur l'horloge système faire un /usr/bin/setclock après un rdate ou un ntpdate.
- Il faut savoir aussi que ntpdate contrairement à rdate ne décale pas l'heure de façon importante. Ce qui veut dire que si vous avez une heure très différente, il vous faudra la changer à la main.
- Si votre problème est un problème de fuseau horaire, vous devez utiliser timeconfig.
8 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.
9 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 TIME SOURCES doit contenir exactement TIME SOURCES=ntp.ac-creteil.fr:123;ATTENTION A NE PAS OUBLIER LE ";" FINAL
6) Pour activer cela il faut faire passer le paramètre "Restart flag" de OFF à ON. Autre solution mais pas propre relancer le serveur.
Il est possible de suivre les logs sur l'écran "tymesync debug screen" si tout se passe bien. Par défaut le serveur Netware essaye de se mettre à l'heure toutes les 10 minutes.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, ainsi si vous disposez d'un Slis changez la ligne 5 par TIME SOURCES=172.16.0.1:123; (172.16.0.1 est l'adresse du serveur Slis).
10 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.
- Dans votre établissement, si vous disposez d'un serveur Slis vous devez l'utiliser comme serveur de temps, voir la documentation correspondante.
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 - Philippe Schwarz - $Id$ -