Network Time Protocol 

Installer un domaine NIS VNC
Configuration réseau 

Introduction

Installation

Configuration d'un serveur

Configuration d'un client linux

Utilisation

Introduction

N'importe quel ordinateur dispose d'une horloge interne qui est utilisé par le système d'exploitation pour tous les actions liées à la date (gestion des fichiers, courriers électroniques, ...). Cette horloge a généralement la facheuse tendance de dériver jusqu'à plusieurs secondes par jour. C'est pas vraiment génant en poste isolé mais ça devient plutôt génant avec des postes en réseau qui partagent les mêmes fichiers.
D'où l'intérêt du Network Time Protocol qui comme son nom l'indique est un protocole (RFC 1305 version 4) chargé de donner l'heure d'une manière précise en se basant sur une référence de temps (horloge atomique, GPS, ...).
Le Network Time Protocol est basé sur une structure pyramidale à plusieurs niveaux, les serveurs d'un niveau vont synchroniser les serveurs de la couche inférieure et sont synchronisés par les serveurs de la couche au dessus, au fur et à mesure qu'on remonte les niveaux, on trouve de moins en moins de serveur et inversement dans l'autre sens. Au niveau supérieur, on part tout en haut d'une référence de temps qui sert à synchroniser un ensemble de serveurs constituant la couche 1, appelé plus communément strate 1 (stratum en anglais), ils servent à synchroniser un ensemble de serveurs encore plus nombreux constituant la strate 2, et ainsi de suite jusqu'à la strate 15. On voit donc qu'à part la référence initiale et les postes de la strate 15, tous les postes des différentes strates sont à la fois client et serveur.
L'intérêt d'une telle architecture est de pouvoir répartir la demande de synchronisation, et d'éviter à avoir à s'adresser directement à la référence première, vous trouverez ainsi toujours un serveur d'une strate élevée proche de chez vous.
Cette page a pour objet de présenter la configuration d'un client NTP sur un réseau relié de manière intermittente à internet (mise à l'heure à chaque connexion) qui sert de serveur pour les autres postes du réseau.

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.

Installation

Que ce soit sur un poste client ou serveur Linux vous aurez à installer le package NTP. On peut récupérer les sources de NTP à l'adresse suivante www.eecis.udel.edu/~ntp ou éventuellement son alias à www.ntp.org tout simplement. Personnellement j'ai récupéré la version 4.0.99b, vous pouvez constater qu'il existe un tas de patch que je n'ai pas cherché à installer. L'archive est au format tar.gz, pour décompresser:

gunzip ntp-4_0_99b_tar.tar.gz

puis à l'endroit où vous voulez récupérer le répertoire des sources de NTP:

tar xvf ntp-4_0_99b_tar.tar

Ca va vous créer un répertoire ntp-4.0.99b, dans lequel vous pourrez taper successivement

./configure
make
make install

NOTE: Les exécutables sont installés par défaut dans /usr/local/bin, si vous voulez les installer ailleurs dans /usr/sbin par exemple vous devrez taper:

./configure --prefix=/usr

Accessoirement pour plus d'infos sur les options de configure, tapez auparavant:

./configure --help
 

Configuration du serveur

Installation

Installer NTP comme indiqué précédemment.

Configuration

Vous devez créer un fichier /etc/ntp.conf qui contiendra:

server 127.127.1.0
fudge 127.127.1.0 stratum 10

Ceci indiquera à votre serveur qu'il doit se synchroniser sur l'horloge locale.

ATTENTION: Vous devez mettre strictement les mêmes adresses IP

Le fichier /etc/services

Le fichier /etc/services doit contenir les lignes suivantes:

ntp             123/tcp
ntp             123/udp                         # Network Time Protocol

On les trouve par défaut sur une Red Hat, je pense pas que la ligne ntp en mode tcp soit nécessaire.

Démarrage automatique

Pour que le daemon NTP soit lancé à chaque démarrage du serveur NTP, sous une arborescence de type RedHat,  placez le fichier ntpd sous le répertoire /etc/rc.d/init.d et créez les liens suivants:

ln -s /etc/rc.d/init.d/ntpd /etc/rc.d/rc0.d/K01ntpd
ln -s /etc/rc.d/init.d/ntpd /etc/rc.d/rc1.d/K01ntpd
ln -s /etc/rc.d/init.d/ntpd /etc/rc.d/rc2.d/K01ntpd
ln -s /etc/rc.d/init.d/ntpd /etc/rc.d/rc3.d/S94ntpd
ln -s /etc/rc.d/init.d/ntpd /etc/rc.d/rc4.d/S94ntpd
ln -s /etc/rc.d/init.d/ntpd /etc/rc.d/rc5.d/S94ntpd
ln -s /etc/rc.d/init.d/ntpd /etc/rc.d/rc2.d/K01ntpd

ATTENTION: Par défaut dans le fichier ntpd on suppose que les exécutables sont dans /usr/local/bin à modifier éventuellement suivant votre config.

Lancement du daemon ntpd

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

Test de fonctionnement

Sur le serveur, tapez:

ntpq -p

Vous devrez voir:

     remote           refid                   st  t when poll  reach   delay   offset    jitter
==============================================================================
*LOCAL(0)        LOCAL(0)        10  l   54      64      377      0.000   0.000   0.000
 

Configuration du client linux

Installation

Vous devez d'abord installer le package NTP comme indiqué dans le paragraphe correspondant.

Configuration

Vous devez créer un fichier /etc/ntp.conf qui contiendra tout simplement

server obelix

Test de fonctionnement

Pour voir si tout marche bien, tapez:

ntptrace obelix

Vous devrez avoir comme sortie:

obelix.armoric.bz: stratum 11, offset 1.074315, synch distance 0.01132

On a outre le nom du serveur, son niveau (stratum), la différence en seconde entre l'horloge du client et celle du serveur et une estimation de l'erreur "aléatoire" (en seconde).

Synchronisation manuelle

Pour se synchroniser avec votre serveur NTP, il suffit de taper:

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.99b 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.

NOTE Visiblement avec les options d et v l'heure n'est pas synchronisée, pour avoir une synchronisation effective, il faut taper simplement:

ntpdate obelix

Synchronisation automatique avec cron

En configurant cron, vous pouvez lancer une synchronisation toutes les heures piles, voici le contenu du fichier crontab:

0 * * * * /usr/local/bin/ntpdate obelix

NOTE Je compte rajouter prochainement une page cron

Synchronisation au boot

Sur une arborescence de type Red Hat, il faut rajouter en fin de fichier /etc/rc.d/rc.local

/usr/local/bin/ntpdate obelix

Utilisation

Connaître son retard

Sur un poste client pour connaître le retard à un instant donné par rapport au serveur NTP, vous devez taper:

ntptrace -vd obelix

Les options v et d permettent d'obtenir un max d'infos. Voici une idée du résultat:

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.
 
 

Retour haut de la page