NTP

De Lea Linux
Aller à la navigation Aller à la recherche
Attention ! Cet article est en cours de rédaction. Il n'a donc encore été ni relu, ni corrigé, ni validé par un modérateur.
Léa vous encourage à éditer les articles pour les améliorer ou les corriger.

Synchronisation du temps avec NTP

Les horloges au quartz des ordinateurs dérivent : il n'est pas rare d'avoir plus d'une minute de retard au bout de quelques mois. Si ce n'est pas grave pour un poste bureautique, ca peut l'être nettement plus pour un serveur, par exemple pour les tâches de la crontab ou les transactions journalisées des bases de données.

NTP est un protocole basé sur UDP qui utilise le port 123. Son utilisation repose sur une hiérarchie de clients/serveurs. Chaque client NTP peut être également un serveur et se synchronise avec d'autres serveurs dont chaque couche est appelé strate. La strate 0 comprend les horloges de référence (horloges atomatiques, récépteurs par satellites etc.). La strate 1 comprend des serveurs reliés à la strate 1 via une interface (port série). La strate 2 comprend des serveurs reliés à la strate 1 par le réseau. Enfin, la plupart des clients sont dans les strates 3 et 4.

Installation

Il vous faut installer le paquet "ntp" (éventuellement "ntpdate") suivant la procédure habituelle propre à votre distribution.

Configurer NTP

La première chose à faire est donc de trouver un serveur ou plusieurs serveurs NTP auxquels vous ferez confiance. Il est conseillé d'en prendre deux, indépendant l'un de l'autre, au cas où l'un d'entre eux serait inaccessible. Une liste de serveurs NTP sur lesquels on peut se synchroniser se trouve ici :

Ensuite, il s'agit de configurer le fichier ntp.conf comme suit :

server <serveur_distant1> prefer server <serveur_distant2> driftfile /etc/ntp/drift restrict <machines_autorisées>

Chaque serveur de strate supérieur auxquels vous voulez vous connecter en tant que client NTP doit être listé dans ce fichier, en le préfixant par le mot clef "server" et en rajoutant "prefer" derrière le serveur préféré. Ne pas oublier de rajouter ces serveurs dans le fichier /etc/hosts de votre machine.

L'option "driftfile" permet de définir le nom du fichier qui va stocker différentes informations pour votre serveur ntp (stockage de décalage de fréquence de l'horloge, historique des réponses des serveurs NTP etc.)

L'option "restrict" permet de définir quelles machines sont autorisées à se synchroniser à votre machine. Cette ligne est intéressante seulement si vous voulez être un serveur de temps pour d'autres ordinateirs. Par exemple, pour autoriser les machines du réseau local 192.168.1.0 de masque de sous-réseau 255.255.255.0, il convient d'écrire restrict 192.168.1.0 mask 255.255.255.0. La ligne restrict sans argument signifie un accès libre au serveur.

Se synchroniser

Pour se synchroniser manuellement, tapez simplement # ntpdate -B <serveur_distant1>.

L'option –B à ntpdate qui permet un ajustement progressif de l’heure.

Vous pouvez vérifier par quels serveurs est passé votre synchronisation avec la commande #ntptrace

Lancer le service ntpd

Si vous voulez utiliser votre machine comme serveur NTP, lancez le service ntpd par /etc/init.d/ntpd start

Pour que le serveur NTP soit lancé au démarrage, ajoutez la ligne ntpd_enable="YES" dans le fichier /etc/rc.d/rc.local

Et ajoutez-le au runlevel default pour le faire se lancer à chaque démarrage :

rc-update add ntpd default

Automatiser la synchronisation

Pour que votre machine synchronise son horloge automatiquement avec un serveur NTP distant, rajoutez dans la synchronisation dans la crontab root :

  1. NTP synchronisation de l’heure

0 04 * * * /usr/sbin/ntpdate -B <serveur_distant1> <serveur2> > /dev/null 2>&1

Positionnez le ntpdate à une heure où l'ordinateur ne fait pas grand chose, typiquement la nuit (4h du matin dans l'exemple ci-dessus). Pour la majorité des cas, une seule synchronisation par jour suffit : les ordinateurs dévient rarement plus d'une seconde par jour.

Pare-feu

Si votre machine est un serveur de temps, dites à Netfilter d'ouvrir votre port 123 en UDP :

iptables -t filter -A INPUT -p udp -m udp --sport 123 --dport 123 -j ACCEPT

Pour pouvoir se connecter à des serveurs de temps distants, tapez la commande suivante :

iptables -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT

Liens

http://www.ntp.org

Par Jiel, 2005