Differences between revisions 1 and 18 (spanning 17 versions)
Revision 1 as of 2004-03-03 10:46:58
Size: 11082
Editor: anonymous
Comment:
Revision 18 as of 2004-04-04 17:11:24
Size: 9032
Editor: anonymous
Comment:
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:

== Service NTP ==
Frédéric Massot (avril 2002)

===9.2.1 Le protocole NTP ===

NTP est un protocole permettant aux ordinateurs reliés en réseau de ce synchroniser par rapport à une machine de référence. La précision de la synchronisation est de l'ordre de la dizaine de milli-seconde pour un serveur de strate 3.

Il y a plusieurs méthodes pour mettre en place cette machine de référence :

 * Connection à un récepteur GPS pour se synchroniser aux horloges atomique des satellites du système GPS.

 * Connection à une horloges pilotées par des émetteurs de radio-diffusion publiques, comme celui de TDF diffusant France Inter

 * Connexion à une horloges pilotées par des signaux radio émis par des émetteurs spécialisés.

 * Connexion via l'internet à un serveur NTP publique.

Ici, nous nous intéresserons à ce dernier cas.

Un réseau de serveurs NTP est constitué en strates :

 * Les serveurs primaires, strate 1 (stratum 1) sont directement reliés à une référence de temps (récepteur GPS, récepteur radio, horloge atomique, ...);

 * Les serveurs secondaires, strate 2 (stratum 2) se synchronisent aux serveurs de strate 1 via le protocole NTP;

Pour mettre en place un serveur NTP au sein de votre réseau local, il est important pour bien répartir la charge sur les serveurs NTP publiques de vous placez sur la strate 3. C'est à dire de se synchroniser aux serveurs NTP publiques de strate 2.

Les machines de votre réseau local se synchroniseront sur ce serveur NTP de strate 3.

Il est recommandé de se synchroniser sur trois serveurs. Si la synchronisation sur un des serveurs échoue, votre serveur NTP en utilisera un autre.

Il est souvent conseillé (par politesse :-) ) d'envoyer un petit mail à l'administrateur du serveur NTP sur lequel on se synchronise.


NTP Liste des serveurs NTP publiques de strate 2
http://www.eecis.udel.edu/~mills/ntp/clock2.htm

=== 9.2.2 Mise en place ===
DebianFrServices
----
= Service NTP =
 * Présentation rapide du protocole NTP : ["DebFrNTPProtocole"]


== QuickStart ==
 * Installer le paquet DebianPackage:ntp-simple
 * Indiquer un serveur ntp (par exemple : ntp.free.fr)

C'est tout.

== Les paquets Debian ==
 * DebSearch:NTP
Line 42: Line 18:
{{{
 Potato Woody
 ntp ntp
 ntp-simple
 ntp-refclock
 ntpdate ntpdate
 ntp-doc ntp-doc
}}}
Line 67: Line 36:
Le paquet ntp (version Potato) ''Le paquet ntp'' (version Potato)
Line 88: Line 57:
''Le paquet ntp (version Woody) '' ''Le paquet ntp'' (version Woody)
Line 93: Line 62:
/usr/bin/ntpq
/usr/bin/ntpdc
/usr/bin/ntptrace
/usr/bin/ntpsweep
/usr/sbin/ntp-wait
/usr/sbin/ntptime
/usr/sbin/tickadj
/usr/sbin/ntp-genkeys

''Le paquet ntp-simple (version Woody) :''
 * /usr/bin/ntpq
 * /usr/bin/ntpdc
 * /usr/bin/ntptrace
 * /usr/bin/ntpsweep
 * /usr/sbin/ntp-wait
 * /usr/sbin/ntptime
 * /usr/sbin/tickadj
 * /usr/sbin/ntp-genkeys

''Le paquet ntp-simple'' (version Woody)
Line 106: Line 75:
''Le paquet ntp-refclock (version Woody) :'' ''Le paquet ntp-refclock'' (version Woody)
Line 110: Line 79:
'' Configuration du daemon ntpd''

 * Fichier de configuration : /etc/ntp.conf
''Configuration du daemon ntpd''

 * Fichier de configuration :
{{{
 
/etc/ntp.conf
}}}
Line 189: Line 161:
=== 9.2.3 Le protocole ntp et les pare-feux === == NTP et les pare-feux ==
Line 209: Line 181:
=== 9.2.4 Vérification et debugage === == Vérification et debugage ==
Line 226: Line 198:
=== 9.2.5 L'alternative chrony ===
Laurent Picouleau
== L'alternative chrony ==
 * DebianPackage:chrony
Line 246: Line 218:
=== 9.2.6 Cas pratique ===
Un serveur local S (i.e de sous-réseau) maître de plusieurs clients Ci. Tous en connexion permanente.{{{
   Rôle Paquets Remarques
}}}
S serveur local ntp, ntpdate à synchroniser sur plusieurs serveurs NTP externes, proches (hop/ping)
Ci client fixe ntp, ["ntpdate"] à synchroniser sur A

=== 9.2.7 Astuces ===
== Astuces ==
Line 265: Line 230:
=== 9.2.8 Pour en savoir plus... ===
RFC 1305 NetworkTimeProtocol (V3) http://www.ietf.org/rfc/rfc1305.txt

NTP Le site de référence http://www.ntp.org


NTP
La liste des serveurs publiques primaires
http://www.eecis.udel.edu/~mills/ntp/clock1.htm


NTP
La liste des serveurs publiques secondaires
== Pour en savoir plus... ==
 *
RFC 1305 NetworkTimeProtocol (V3) http://www.ietf.org/rfc/rfc1305.txt

 * Le site de référence http://www.ntp.org
 * La liste des serveurs publiques primaires http://www.eecis.udel.edu/~mills/ntp/clock1.htm
 * La liste des serveurs publiques secondaires
Line 277: Line 237:


NTP
De la doc en français http://www.cru.fr/NTP


NTP
Doc sur l'émetteur de TDF
 * De la doc en français http://www.cru.fr/NTP
 * Doc sur l'émetteur de TDF
Line 284: Line 240:
 * DebFrDocAlexisD:ntp.html

----
 * Frédéric Massot (Avril 2002)

?DebianFrServices


Service NTP

  • Présentation rapide du protocole NTP : ["DebFrNTPProtocole"]

QuickStart

  • Installer le paquet ntp-simple

  • Indiquer un serveur ntp (par exemple : ntp.free.fr)

C'est tout.

Les paquets Debian

  • DebSearch:NTP

Il existe pour la distribution Debian version Potato trois paquets pour installer un client et/ou un serveur NTP ; Pour la Woody, il y en a cinq car le paquet ntp a été découpé en trois paquets1.

Le paquet ntp-doc

Installe une documentation complète (en HTML) sur les paquets ntp et ntpdate dans le répertoire /usr/share/doc/ntp-doc

Le paquet ntpdate

Installe le client ntpdate et les pages de manuel. ntpdate

synchronise brutalement l'horloge système (option -b). Il peut être utile lors de décalage trop important, le daemon ntpd refusant alors de se synchroniser. ntpdate est aussi utile pour les connexions intermittentes.

  • ntpdate -B ajustement progressif

  • ntpdate -b ajustement brutal

Le paquet ntp (version Potato)

Installe le client/serveur ntpd, le script de lancement, les scripts de rotation des logs, divers outils de contrôle et de debugage, et les pages de manuel.

Lors de l'installation un écran vous demande de saisir le nom des serveurs ntp sur lesquels vous voulez vous synchroniser. Toute la configuration est dans /etc/ntp.conf .

A la fin de l'installation, le daemon ntpd est lancé. On peut s'en apercevoir à l'aide de la commande

 ps     aux ||grep ntp

  root  359 ... SL ... /usr/sbin/ntpd

Le "L" indique que le daemon est bloqué en RAM, il ne sera jamais swapé, n'oubliez pas que ntp doit synchroniser la machine à quelques milli-secondes prêts.

Le daemon ntpd synchronise la machine progressivement, sans perturber le système, il accélère ou ralentie l'horloge système. Cette synchronisation prends plus d'un quart d'heure.

Si le décalage est trop important, le daemon ntpd refusera de synchroniser l'horloge système, il sera alors nécessaire d'utiliser le client ntpdate.

Le paquet ntp (version Woody)

Installe divers outils de contrôle et de debugage, et leurs pages de manuel.

  • /usr/bin/ntpq
  • /usr/bin/ntpdc
  • /usr/bin/ntptrace
  • /usr/bin/ntpsweep
  • /usr/sbin/ntp-wait
  • /usr/sbin/ntptime
  • /usr/sbin/tickadj
  • /usr/sbin/ntp-genkeys

Le paquet ntp-simple (version Woody)

Installe le client/serveur ntpd sans les drivers pour les horloges radio. Installe aussi le script de lancement, les scripts de rotation des logs, et la page de manuel du daemon ntpd.

Le paquet ntp-refclock (version Woody)

Installe le client/serveur ntpd avec les drivers pour les horloges radio ou d'autres périphériques de synchronisation horaires. Installe aussi le script de lancement, des scripts de rotation des logs, et la page de manuel du daemon ntpd.

Configuration du daemon ntpd

  • Fichier de configuration :

 /etc/ntp.conf 

 # /etc/ntp.conf, configuration for ntpd

 # ntpd will use syslog() if logfile is not defined
 # Fichier d'historique
 logfile /var/log/ntpd.log

 # Fichier contenant la deviation moyenne
 driftfile /var/lib/ntp/ntp.drift

 # Repertoire contenant les statistiques d'utilisation
 statsdir /var/log/ntpstats/

 # Statistiques desirees
 statistics loopstats peerstats clockstats
 filegen loopstats file loopstats type day enable
 filegen peerstats file peerstats type day enable
 filegen clockstats file clockstats type day enable

 # Liste des serveurs NTP de référence

 server ntp.via.ecp.fr 
 server ntp.obspm.fr 
 server ntp.univ-lyon1.fr

Pour l'utilisation du protocole NTP au sein d'un réseau local, l'utilisation de la directive "broadcast adresse_broadcast" pour le serveur permet de transmettre les paquets de synchronisation en broadcast. On utilisera la directive "broadcastclient" pour les clients. La précision est un peu plus faible en broadcast.

Pour les clients :

 # /etc/ntp.conf, configuration for ntpd

 # ntpd will use syslog() if logfile is not defined
 # Fichier d'historique
 logfile /var/log/ntpd.log

 # Fichier contenant la deviation moyenne
 driftfile /var/lib/ntp/ntp.drift

 # Repertoire contenant les statistiques d'utilisation
 statsdir /var/log/ntpstats/

 # Statistiques desirees
 statistics loopstats peerstats clockstats
 filegen loopstats file loopstats type day enable
 filegen peerstats file peerstats type day enable
 filegen clockstats file clockstats type day enable

 # Liste des serveurs NTP de référence

 server ntp.via.ecp.fr 
 server ntp.obspm.fr 
 server ntp.univ-lyon1.fr

Configuration du client ntpdate

  • Fichier de configuration : /etc/init.d/ntpdate

Décommentez une ligne dans le fichier "/etc/init.d/ntpdate".

NTP et les pare-feux

Le protocole ntp utilise pour la synchronisation le port UDP/123.

Le daemon ntpd ce connecte du port UDP/123 vers le ou les serveurs de références sur leurs ports UDP/123.

La règle suivante pour iptables permet au serveur NTP interne de se synchroniser à un serveur NTP de référence extérieur :

 # Autoriser l'acces au serveur NTP numéro 1 (UDP 123)

  iptables -A FORWARD -i $INTERNAL_INTERFACE -o $EXTERNAL_INTERFACE
           -p udp 
           -s $SERVEUR_NTP_INTERNE --sport 123 
           -d $NTP_SERVEUR_REFERENCE_1 --dport 123 
           -m state --state NEW -j ACCEPT

Cette règle ne permet pas les connexions de l'utilitaire ntptrace vers l'extérieur. ntptrace ce connecte d'un port UDP non privilégié (supérieur à 1024) vers le ou les serveurs de références sur leurs ports UDP/123.

Vérification et debugage

Le premier point à vérifier, est que le daemon ntpd fonctionne. Un simple "ps aux ||grep ntp" suffit, vous devez obtenir une ligne de la forme :

  root  359 ... SL ... /usr/sbin/ntpd

Puis vous pouvez utiliser les utilitaires ntptrace et ntpdc du paquet ntp.

La synchronisation prend un peu de temps, il ne faut pas essayer ntpdc juste après avoir lancé ntpd.

L'utilitaire ntpdc permet d'obtenir une foultitude d'informations sur l'état du daemon ntpd.

Par défaut, ntpdc se connecte à la machine locale. La commande host de ntpdc permet de se connecter à une autre machine, par exemple un serveur, si le serveur l'autorise. La commande help de ntpdc est très utile.

Pour le debugage regardez aussi dans les logs. Ils indiquent les dérives et les corrections apportés, le syslog indique la perte de synchronisations en cas de coupure de la connexion Internet.

L'alternative chrony

Le paquet chrony présente une autre implémentations du même protocole.

On peut même mettre un démon chronyd et un démon ntpd (sur deux machines différentes) en peers l'un de l'autre sans problème (je précise juste au V4 que l'autre est V3). Les différences se font sur la façon dont l'horloge RTC du pc est gérée et sur la prise en compte des connexions intermittentes. Pour la partie NTP elle même, les algorithmes implémentés sont ceux décrits de manière détaillée dans le RFC.

Pour le fichier de conf, celui proposé par le mainteneur du paquet est bien fait, il y a juste à préciser le(s) serveur(s) que l'on souhaite utiliser et une ou deux lignes à décommenter si on veut utiliser /dev/rtc.

Le pendant de ntpdc est chronyc. Il n'y a pas, sauf erreur, d'équivalents de ntpq et ntptrace. La documentation est au format info au lieu d'être en HTML et chrony prend en compte la gestion des connexions intermittentes ce qui le rend particulièrement adapté au cas des utilisateurs de ppp.

Voilà l'essentiel des différences impactant l'utilisateur du paquet. Si on regarde en détail,

  • chrony n'est pas porté sur autant de plateformes que ntpd,
  • il n'utilise probablement pas l'API PPS,
  • sait-il utiliser un noyau gérant les nanosecondes ?
  • il ne gère pas les références matérielles

mais tout ceci ne concerne pas la personne qui installe et configure le serveur et encore moins celui qui veut juste synchroniser une machine.

Astuces

Auto-synchronisation NTP

Un bon truc pour faire un serveur qui répond même si les supérieurs sont injoignables (utile si la connectivité est défaillante) :

 # Synchronize on myself (127.127 = myself, 1 = local clock)
 server 127.127.1.0
 # Stratum 10 (arbitrary)
 fudge 127.127.1.0 stratum 10

Pour en savoir plus...

http://www.eecis.udel.edu/~mills/ntp/clock2.htm

http://www.eecis.udel.edu/~mills/ntp/tdf.htm

  • DebFrDocAlexisD:ntp.html


  • Frédéric Massot (Avril 2002)