Dernière modification 27 novembre 2004
Dans un premier temps je ne présente que la configuration
d'un serveur NTP linux qui utilise son horloge système comme
horloge de référence sans synchronisation avec une
horloge
externe, je présente aussi la configuration d'un client linux du
réseau privé sur ce serveur NTP pour lancer une
synchronisation toutes les heures.
Dans un second temps je configurerai le serveur NTP pour qu'il se
synchronise à chaque connexion à un serveur
extérieur sur le net.
Dans un dernier temps je présenterai des clients NTP du
réseau privé sous Windows 9.X.
Je compte aussi détailler le fichier de config de NTP ainsi que
les commandes qui vont avec.
On supposera que votre serveur se nomme obelix avec pour adresse IP 192.168.13.11 et que votre domaine privé est armoric.bz.
tar xvfz ntp-4.2.0.tar.gz
Ca va vous créer un répertoire ntp-4.2.0, dans lequel vous pourrez taper successivement
./configure
make
Puis en tant que root
make install
NOTE: Les exécutables sont installés par défaut dans /usr/local/bin, si vous voulez les installer ailleurs dans /usr/bin par exemple vous devrez taper:
./configure --prefix=/usr
Accessoirement pour plus d'infos sur les options de configure, tapez auparavant:
./configure --help
ntp
123/tcp
ntp
123/udp
# Network Time Protocol
On les trouve par défaut sur n'improte quelle distrib linux.
#! /bin/sh
#
# chkconfig: - 60 20
# description: Network Time Protocol
# processname: ntpd
# Get config.
. /etc/sysconfig/network
# Get functions
. /etc/rc.d/init.d/functions
# Check that networking is up.
if [ ${NETWORKING} = "no" ] ; then
exit 0
fi
# See how we were called.
case "$1" in
start)
echo -n "Starting NTP
services: "
ntpdate -u
lptfpc46.obspm.fr
daemon
/usr/local/bin/ntpd -l /var/log/ntp.log
echo
touch
/var/lock/subsys/ntpd
;;
stop)
echo -n "Stopping NTP
services: "
killproc ntpd
echo
rm -f
/var/lock/subsys/ntpd
;;
status)
status ntpd
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0
{start|stop|status|restart}"
exit 1
;;
esac
exit 0
Ce fichier doit avoir pour droit 755
chmod 755 ntpd
et pour que ntp soit lancé à l'état de marche 3, 4 et 5 tapez:
chkconfig --level 345 ntpd on
Et arrêté aux autres états de marche
chkconfig --level 0126 ntpd off
ATTENTION: Par défaut dans le fichier ntpd on suppose que les exécutables sont dans /usr/local/bin à modifier éventuellement suivant votre config.
Maintenant pour lancer ntpd deux solutions, soit taper:
/etc/rc.d/init.d/ntpd start
ou
/usr/local/bin/ntpd -l /var/log/ntp.log
Pour info l'option "-l" permet de créer un fichier de
log /var/log/ntp.log. Par la suite au boot, votre serveur ntp
sera automatiquement lancé.
Attention
dans le cas d'une connexion permanente il faut relancer ntpd
à chaque reconnexion à cause du changement d'adresse IP.
Dans le fichier /etc/ppp/ip-up
rajoutez à la fin
/etc/rc.d/init.d/ntpd restart
server 127.127.1.0
Ceci indiquera à votre serveur qu'il doit se synchroniser sur l'horloge locale.
ATTENTION: Vous devez mettre strictement les mêmes adresses IP, même si ce n'est pas l'adresse que vous utilisez.
Pour voir si ça marche il suffit de taper
ntpq -p
Voilà le résultat
remote
refid st t when poll reach
delay offset jitter
==============================================================================
LOCAL(0)
LOCAL(0) 10 l
32 64 1
0.000 0.000 0.031
Dans ce cas pas de synchronisation avec ntpdate, en tapant ntptrace on obtient d'abord
localhost.localdomain: stratum 16, offset -0.000365, synch
distance 0.00011
0.0.0.0: *Not Synchronized*
Puis au bout de quelques minutes
localhost.localdomain: stratum 6, offset 0.000095, synch distance 0.00731
server ntp.via.ecp.fr prefer
server ntp.univ-lyon1.fr
server ntp.ens.fr
Pour connaître la liste des serveurs français NTP, allez faire un tour à l'URL suivante. Eviter de choisir un serveur de niveau 1.
NOTE Le paramètre prefer indique le serveur à utiliser de préférence. Pour vous synchroniser, lancer une connexion, taper alors en tant que root :
ntpdate ntp.via.ecp.fr
Vous prendrez le serveur ntp qui apparaît en premier dans la liste donnée par /etc/ntp.conf. Voilà le résultat
3 Nov 16:01:02 ntpdate[11159]: adjust time server 138.195.130.71 offset -0.004474 sec
La synchronisation n'est pas immédiate, elle prend quelques minutes, d'ailleurs en tapant ntptrace (non nécessaire d'être root pour le lancer) qui permet d'avoir des informations sur la synchronisation on obtient
localhost.localdomain: stratum 16, offset 0.000087, synch
distance 0.47913
0.0.0.0: *Not Synchronized*
Au bout de quelques minutes, en tapant à nouveau :
ntptrace
On obtient
localhost.localdomain: stratum 3, offset 0.000099, synch distance
0.42995
zen.via.ecp.fr: stratum 2, offset -0.040265, synch distance 0.05083
chronos.cru.fr: stratum 1, offset -0.037894, synch distance 0.00000,
refid 'GPS'
On voit le serveur de stratum 2 que vous avez utilisé, lui-même reposant sur le serveur de stratum 1 chronos.cru.fr qui utilise une horloge de référence basé sur le temps GPS. Par ailleurs on découvre la différence en seconde entre l'horloge du client et celle du serveur (offset) et une estimation de l'erreur "aléatoire" (synch distance), les deux chiffres sont exprimés en seconde.
Par la suite la synchronisation sera automatique dès lors que vous êtes connecté un certain temps. Pas de problème si vous avez une connexion permanente (ADSL), par contre dans le cas d'une connexion intermittente du style RTC, vous pouvez forcer une synchronisation en rajoutant dans le fichier /etc/ppp/ip-up
/usr/local/bin/ntpdate ntp.via.ecp.fr
En mode non connecté (off-line), vous éviterez bien sûr de chercher à synchroniser votre serveur ntp (et donc de lancer ntpdate). Par ailleurs voilà ce que donne ntptrace en mode non connecté.
localhost.localdomain: stratum 3, offset 0.000118, synch distance
0.46487
138.195.130.71:
*Timeout*
Il ne trouve pas le serveur ntp.via.ecp.fr. Dans ce cas pas de synchronisation jusqu'à la prochaine connexion.
Autre moyen de voir que vous êtes bien synchronisé, en tapant :
ntpq -p
Voilà le résultat
remote
refid st t when poll reach
delay offset jitter
==============================================================================
*zen.via.ecp.fr chronos.cru.fr 2 u
15 64 177 830.037 -47.080
5.482
ou bien encore
remote
refid st t when poll reach
delay offset jitter
==============================================================================
*lptfpc46.obspm. 195.220.94.163 2 u 130
512 37 43.776 26.589 32.862
+krishna.via.ecp 157.99.64.66 2 u
126 512 37 49.465 -13.508
18.895
+dns.univ-lyon1. 195.220.94.163 2 u 126
512 37 52.635 -7.600 13.784
ntp.ens.fr
.INIT. 16
u - 64
0 0.000 0.000 4000.00
+perso16-g.free. 212.27.32.2 3 u
124 512 37 45.738
-4.886 14.985
N'oubliez le petit nota par ici.
server obelix
ntpdate -dv obelix
Les options d et v permettent d'obtenir un max d'info. Voici ce que vous pouvez obtenir
26 Jan 18:11:16 ntpdate[768]: ntpdate 4.0.99j lun jan 24 18:44:56
CET 2000 (1)
transmit(192.168.13.11)
receive(192.168.13.11)
transmit(192.168.13.11)
receive(192.168.13.11)
transmit(192.168.13.11)
receive(192.168.13.11)
transmit(192.168.13.11)
receive(192.168.13.11)
transmit(192.168.13.11)
server 192.168.13.11, port 123
stratum 11, precision -18, leap 00, trust 000
refid [127.127.1.0], delay 0.02632, dispersion 0.00000
transmitted 4, in filter 4
reference time: bc39a8d6.9458dde7 Wed, Jan
26 2000 18:09:42.579
originate timestamp: bc39a903.2363e4ab Wed, Jan 26 2000
18:10:27.138
transmit timestamp: bc39a935.06ca57a7 Wed, Jan 26 2000
18:11:17.026
filter delay: 0.02647 0.02634 0.02632 0.02632
0.00000
0.00000 0.00000 0.00000
filter offset: -49.8887 -49.8887 -49.8887 -49.8887
0.000000 0.000000
0.000000 0.000000
delay 0.02632, dispersion 0.00000
offset -49.888749
26 Jan 18:11:17 ntpdate[768]: step time server 192.168.13.11 offset -49.888749 sec
On peut observer que votre horloge est à 18h10'27.138'' celle
du serveur à 18h11'17.206'' soit un retard de 49.888749 secondes
par rapport à ce dernier.
0 * * * * /usr/local/bin/ntpdate obelix
/usr/local/bin/ntpdate obelix
ntptrace -vd obelix
Les options v et d permettent d'obtenir un max d'infos, il est par ailleurs pas nécessaire d'être root. Voici une idée du résultat avec votre serveur NTP comme serveur primaire:
DoTransmit(192.168.13.11)
DoTransmit to 192.168.13.11
ReceiveBuf(192.168.13.11, 192.168.13.11)
server 192.168.13.11, port 123
stratum 11, precision -18, leap 00
refid 127.127.1.0 delay 0.00087, dispersion 0.00000 offset -49.745512
rootdelay 0.00000, rootdispersion 0.01178, synch dist 0.01178
reference time:
bc39ab1c.94588a04 Wed, Jan 26 2000 18:19:24.579
originate timestamp: bc39ab56.22921ccd Wed, Jan 26 2000
18:20:22.135
transmit timestamp: bc39ab87.e14306e5 Wed, Jan 26 2000
18:21:11.879
Vous voyez ici un offset de 49.745512 secondes. Plus simplement en tapant
ntptrace obelix
On obtient
localhost.localdomain: stratum 7, offset 0.000025, synch distance
0.01669
obelix.armoric.bz: stratum 6, offset 0.182583, synch distance 0.01120
Ou alors si votre serveur NTP n'est qu'un client d'un serveur se trouvant sur internet, en tapant:
ntptrace obelix
On obtient
obelix: stratum 3, offset -1.279591, synch distance 0.60069
zen.via.ecp.fr: stratum 2, offset -1.690077, synch distance 0.04030
chronos.cru.fr: stratum 1, offset -1.677961, synch distance 0.00000,
refid 'GPS'
ntptrace remonte tous les statums jusqu'au serveur primaire, en l'occurence ici chronos.cru.fr de stratum 1 basé sur l'horloge GPS.
Si vous n'êtes pas connecté, vous aurez une erreur de timeout, car ntptrace n'a pas été capable de joindre le serveur ntp sur internet sur lequel se base votre propre serveur NTP. C'est du style :
obelix.armoric.bz: stratum 3, offset 36022.527399, synch distance
0.46469
138.195.130.71:
*Timeout*
ntptrace
Vous aurez comme résultat, si vous n'êtes pas connecté :
localhost.localdomain: stratum 3, offset 0.000042, synch distance
0.55115
138.195.130.71:
*Timeout*
Ou si vous êtes connecté:
localhost.localdomain: stratum 3, offset 0.000070, synch distance
0.60089
zen.via.ecp.fr: stratum 2, offset -0.461755, synch distance 0.04050
chronos.cru.fr: stratum 1, offset -0.403968, synch distance 0.00000,
refid 'GPS'
[Retout page d'accueil FUNIX] |