Name
ntpd – Démon de protocole de temps réseau (NTP)
Synopsis
ntpd ]
Description
Le programme ntpd est un démon du système d’exploitation qui définit et maintient l’heure du jour du système en synchronisme avec les serveurs de temps standard d’Internet. Il s’agit d’une implémentation complète de la version 4 du protocole NTP (Network Time Protocol), mais il conserve également la compatibilité avec la version 3, telle que définie par la RFC-1305, et les versions 1 et 2, telles que définies respectivement par les RFC-1059 et RFC-1119. ntpd effectue la plupart des calculs en arithmétique à virgule flottante 64 bits et effectue des opérations à virgule fixe 64 bits relativement maladroites uniquement lorsque cela est nécessaire pour préserver la précision ultime, environ 232 picosecondes. Bien que la précision ultime ne soit pas réalisable avec les stations de travail et les réseaux ordinaires d’aujourd’hui, elle peut être requise avec les futures horloges de processeurs gigahertz et les réseaux locaux gigabit.
Comment fonctionne Ntp
Le programme ntpd fonctionne en échangeant des messages avec un ou plusieurs serveurs configurés à des intervalles de sondage désignés. Lorsqu’il est lancé, que ce soit pour la première fois ou les fois suivantes, le programme nécessite plusieurs échanges de la part de la majorité de ces serveurs afin que les algorithmes de traitement et d’atténuation des signaux puissent accumuler et toiletter les données et régler l’horloge. Afin de protéger le réseau des rafales, l’intervalle d’interrogation initial de chaque serveur est retardé d’un intervalle aléatoire de quelques secondes. Avec l’intervalle d’interrogation initial par défaut de 64s, plusieurs minutes peuvent s’écouler avant que l’horloge ne soit réglée. Le délai initial pour régler l’horloge peut être réduit en utilisant le mot-clé iburst avec la commande de configuration du serveur, comme décrit à la page Options de configuration.
La plupart des systèmes d’exploitation et du matériel d’aujourd’hui intègrent une puce d’heure de l’année (TOY) pour maintenir l’heure pendant les périodes où le courant est coupé. Lorsque la machine est démarrée, la puce est utilisée pour initialiser l’heure du système d’exploitation. Après que la machine se soit synchronisée avec un serveur NTP, le système d’exploitation corrige la puce de temps en temps. S’il n’y a pas de puce TOY ou si, pour une raison ou une autre, son heure diffère de plus de 1000s de l’heure du serveur, ntpd suppose que quelque chose ne va pas du tout et que la seule action fiable est que l’opérateur intervienne et règle l’horloge à la main. Cela provoque la sortie de ntpd avec un message de panique dans le journal système. L’option -g annule cette vérification et l’horloge sera réglée sur l’heure du serveur, quelle que soit l’heure de la puce. Cependant, et pour se protéger contre le matériel cassé, comme lorsque la pile CMOS tombe en panne ou que le compteur d’horloge devient défectueux, une fois que l’horloge a été réglée, une erreur supérieure à1000s provoquera la sortie de ntpd de toute façon.
Dans des conditions ordinaires, ntpd ajuste l’horloge par petits pas de sorte que l’échelle de temps est effectivement continue et sans discontinuité. Dans des conditions de congestion extrême du réseau, la gigue du délai aller-retour peut dépasser trois secondes et la distance de synchronisation, qui est égale à la moitié du délai aller-retour plus les termes du budget d’erreur, peut devenir très grande. Les algorithmes ntpd rejettent les décalages d’échantillons dépassant 128 ms, sauf si l’intervalle pendant lequel aucun décalage d’échantillon n’est inférieur à 128 ms dépasse 900s. Le premier échantillon suivant, quel que soit le décalage, fait avancer l’horloge à l’heure indiquée. En pratique, cela réduit le taux de fausses alarmes où l’horloge est décalée par erreur à une incidence vanishingly faible.
Comme résultat de ce comportement, une fois que l’horloge a été réglée, elle s’écarte très rarement de plus de 128 ms, même dans des cas extrêmes de congestion du chemin réseau et de gigue. Parfois, en particulier lors du premier démarrage de ntpd, l’erreur peut dépasser 128 ms. Cela peut parfois entraîner le réglage de l’horloge en arrière si l’heure de l’horloge locale est plus de 128 s dans le futur par rapport au serveur. Dans certaines applications, ce comportement peut être inacceptable. Si l’option -xest incluse sur la ligne de commande, l’horloge ne sera jamais échelonnée et seules les corrections de slew seront utilisées.
Les problèmes doivent être soigneusement étudiés avant de décider d’utiliser l’option -x. Le taux de slew maximal possible est limité à 500 parties par million(PPM) en conséquence des principes de correction sur lesquels le protocole NTP et la conception de l’algorithme sont basés. En conséquence, l’horloge locale peut mettre un certain temps à converger vers un décalage acceptable, environ 2 000 s pour chaque seconde où l’horloge est en dehors de la plage acceptable. Pendant cet intervalle, l’horloge locale ne sera pas cohérente avec toute autre horloge de réseau et le système ne peut pas être utilisé pour des applications distribuées qui nécessitent un temps de réseau correctement synchronisé.
En dépit des précautions ci-dessus, parfois, lorsque de grandes erreurs de fréquence sont présentes, les décalages temporels qui en résultent s’éloignent de la plage de 128 ms et une correction éventuelle du pas ou du temps de balayage est nécessaire. Si après une telle correction, l’erreur de fréquence est si importante que le premier échantillon est en dehors de la plage acceptable, ntpd entre dans le même état que lorsque le fichier ntp.drift n’est pas présent. L’intention de ce comportement est de corriger rapidement la fréquence et de restaurer le fonctionnement en mode de suivi normal. Dans les cas les plus extrêmes (on pense à time.ien.it), il peut y avoir des corrections occasionnelles de type step/slew et des corrections de fréquence subséquentes. Il est utile dans ces cas d’utiliser le mot clé burst lors de la configuration du serveur.
Discipline de fréquence
Le comportement de ntpd au démarrage dépend de l’existence ou non du fichier de fréquence, généralement ntp.drift. Ce fichier contient la dernière estimation de l’erreur de fréquence de l’horloge. Lorsque le ntpd est démarré et que le fichier n’existe pas, le ntpd entre dans un mode spécial conçu pour s’adapter rapidement à l’erreur de temps et de fréquence de l’oscillateur d’horloge du système particulier. Cela prend environ 15 minutes, après quoi l’heure et la fréquence sont réglées sur des valeurs nominales et le ntpd entre en mode normal, où l’heure et la fréquence sont continuellement suivies par rapport au serveur. Après une heure, le fichier de fréquence est créé et le décalage de fréquence actuel y est écrit. Lorsque le ntpd est démarré et que le fichier existe, la fréquence du ntpd est initialisée à partir du fichier et entre immédiatement en mode normal. Après cela, le décalage de fréquence actuel est écrit dans le fichier à intervalles horaires.
Modes de fonctionnement
ntpd peut fonctionner dans l’un de plusieurs modes, y compris actif/passif symétrique, diffusion/multidiffusion client/serveur et manycast, comme décrit dans la pageGestion des associations. Il fonctionne normalement en continu tout en surveillant les petits changements de fréquence et en ajustant l’horloge pour une précision optimale. Cependant, il peut fonctionner en mode ponctuel où l’heure est réglée à partir d’un serveur externe et la fréquence est réglée à partir d’un fichier de fréquence préalablement enregistré. Un client de diffusion/multidiffusion ou de multidiffusion peut découvrir des serveurs distants, calculer les facteurs de correction du délai de propagation entre le serveur et le client et se configurer automatiquement. Cela permet de déployer une flotte de stations de travail sans spécifier les détails de configuration spécifiques à l’environnement local.
Par défaut, ntpd fonctionne en mode continu où chacun des éventuels plusieurs serveurs externes est interrogé à des intervalles déterminés par une machine d’état complexe. La machine d’état mesure la gigue incidente du délai aller-retour et l’oscillation de la fréquence de l’oscillateur et détermine le meilleur intervalle d’interrogation en utilisant un algorithme heuristique. Normalement, et dans la plupart des environnements d’exploitation, l’automate d’état commencera par des intervalles de 64 s et augmentera éventuellement par étapes jusqu’à 1024 s. Une petite quantité de variation aléatoire est introduite afin d’éviter le regroupement des serveurs. En outre, si un serveur devient inaccessible pendant un certain temps, l’intervallepoll est augmenté par étapes jusqu’à 1024s afin de réduire la surcharge du réseau.
Dans certains cas, il peut ne pas être pratique pour ntpd de fonctionner en continu. Une solution de contournement commune a été d’exécuter le programme ntpdate à partir d’un cronjob à des moments désignés. Cependant, ce programme ne dispose pas des algorithmes de traitement des signaux élaborés, de vérification et d’atténuation des erreurs de ntpd L’option-q est prévue à cet effet. Si vous définissez cette option, ntpd se terminera juste après avoir réglé l’horloge pour la première fois avec les serveurs configurés. La procédure de réglage initial de l’horloge est la même qu’en mode continu ; la plupart des applications voudront probablement spécifier le mot-cléiburst avec la commande de configuration du serveur. Avec ce mot-clé, une volée de messages est échangée pour toiletter les données et l’horloge est réglée dans environ 10 s. Si rien n’est entendu après quelques minutes, le démon s’arrête et sort. Après une période de deuil appropriée, le programme ntpdate peut être retiré.
Lorsque le support du noyau est disponible pour discipliner la fréquence de l’horloge, ce qui est le cas pour les stock Solaris, Tru64, Linux et FreeBSD, une fonctionnalité utile est disponible pour discipliner la fréquence de l’horloge. Tout d’abord, ntpd est exécuté en mode continu avec les serveurs sélectionnés afin de mesurer et d’enregistrer le décalage intrinsèque de la fréquence de l’horloge dans le fichier de fréquence. Cela peut prendre quelques heures pour que la fréquence et le décalage se stabilisent. Ensuite, le ntpd est arrêté et exécuté en mode ponctuel selon les besoins. A chaque démarrage, la fréquence est lue dans le fichier et initialise la fréquence du noyau.
Contrôle de l’intervalle de poll
Cette version de NTP inclut une machine d’état complexe pour réduire la charge du réseau tout en maintenant une qualité de synchronisation cohérente avec la gigue et l’errance observées. Il existe un certain nombre de façons d’adapter l’opération afin d’améliorer la précision en réduisant l’intervalle ou de réduire la charge du réseau en l’augmentant. Cependant, il est conseillé à l’utilisateur d’examiner attentivement les conséquences d’une modification de la plage de réglage du poll, du minimum par défaut de 64 s au maximum par défaut de 1 024 s. Le minimum par défaut peut être modifié à l’aide de la commande tinker minpoll à une valeur non inférieure à 16 s. Cette valeur est utilisée pour toutes les associations configurées, sauf si elle est remplacée par l’option minpoll de la commande de configuration. Notez que la plupart des pilotes de périphériques ne fonctionneront pas correctement si l’intervalle de poll est inférieur à 64 s et que le serveur de diffusion et les associations de clients manycast utiliseront également la valeur par défaut, à moins qu’elle ne soit remplacée.
Dans certains cas impliquant des services de numérotation ou de péage, il peut être utile d’augmenter l’intervalle minimum à quelques dizaines de minutes et l’intervalle maximum à un jour ou plus. Dans des conditions normales de fonctionnement, une fois que la boucle de discipline d’horloge s’est stabilisée, l’intervalle sera augmenté par étapes du minimum au maximum. Cependant, cela suppose que l’erreur intrinsèque de fréquence d’horloge est suffisamment petite pour que la boucle de discipline la corrige. La plage de capture de la boucle est de 500 PPM à un intervalle de 64s diminuant d’un facteur deux pour chaque doublement de l’intervalle. À un minimum de 1 024 s, par exemple, la plage de capture n’est que de 31 PPM. Si l’erreur intrinsèque est plus grande que cela, le fichier de dérive ntp.drift devra être spécialement adapté pour réduire l’erreur résiduelle en dessous de cette limite.Une fois cela fait, le fichier de dérive est automatiquement mis à jour une fois par heure et est disponible pour initialiser la fréquence lors des redémarrages ultérieurs du démon.
le filtre Huff-n’-puff
Dans les scénarios où une quantité considérable de données doit être téléchargée ou téléversée sur des modems téléphoniques, la qualité du chronométrage peut être sérieusement dégradée. Cela se produit parce que les retards différentiels sur les deux directions de transmission peuvent être assez importants. Dans de nombreux cas, les erreurs temporelles apparentes sont si importantes qu’elles dépassent le seuil d’échelon et une correction d’échelon peut se produire pendant et après le transfert de données en cours.
Le filtre huff-n’-puff est conçu pour corriger le décalage temporel apparent dans ces cas. Il dépend de la connaissance du délai de propagation lorsqu’aucun autre trafic n’est présent. Dans les scénarios courants, cela se produit en dehors des heures de travail. Le filtre maintient un registre à décalage qui se souvient du retard minimum sur l’intervalle le plus récent mesuré généralement en heures. Dans des conditions de retard important, le filtre corrige le décalage apparent en utilisant le signe du décalage et la différence entre le retard apparent et le retard minimum. Le nom du filtre reflète la correction négative (huff) et positive (puff), qui dépend du signe du décalage.
Le filtre est activé par la commande tinker et le mot-clé huffpuff, comme décrit dans la page Options diverses.
Notes
Si le support NetInfo est intégré à ntpd, alors ntpd tentera de lire sa configuration à partir du NetInfo si le fichier ntp.conf ne peut être lu et qu’aucun fichier n’est spécifié par l’option -c.
Dans les contextes où un nom d’hôte est attendu, un qualificatif -4 précédant le nom d’hôte force la résolution DNS à l’espace de noms IPv4, tandis qu’un qualificatif -6 force la résolution DNS à l’espace de noms IPv6.
Diverses variables internes du ntpd peuvent être affichées et les options de configuration modifiées pendant l’exécution du ntpd à l’aide des programmes utilitaires ntpq etntpdc.
Lorsque ntpd démarre, il regarde la valeur de umask, et si elle est nulle, ntpd fixe l’umask à 022
Sauf si l’option -n, -d ou -D est utilisée, ntpd change le répertoire de travail actuel en répertoire racine, donc toute option ou commande spécifiant des chemins doit utiliser un chemin absolu ou un chemin relatif à la racine.
Options de ligne de commande
-4 Forcer la résolution DNS des noms d’hôtes vers l’espace de noms IPv4. -6 Forcer la résolution DNS des noms d’hôtes vers l’espace de noms IPv6. -a Exiger une authentification cryptographique pour le client de diffusion, le client de multidiffusion et les associations passives symétriques. Il s’agit de la valeur par défaut. -A Ne pas exiger d’authentification cryptographique pour le client de diffusion, le client de multidiffusion et les associations passives symétriques. Ce n’est presque jamais une bonne idée. -b Permettre au client de se synchroniser avec les serveurs de diffusion. -c conffile Spécifier le nom et le chemin du fichier de configuration, par défaut /etc/ntp.conf -d Spécifier le mode de débogage. Cette option peut apparaître plusieurs fois, chaque occurrence indiquant un affichage plus détaillé. -D level Spécifier directement le niveau de débogage. -f driftfile Spécifier le nom et le chemin du fichier de fréquence. Il s’agit de la même opération que la commande de configuration driftfile driftfile. -g Normalement, ntpd se termine avec un message dans le journal système si le décalage dépasse le seuil de panique, qui est de 1000 s par défaut. Cette option permet de définir l’heure à n’importe quelle valeur sans restriction ; cependant, cela ne peut se produire qu’une seule fois. Si le seuil est dépassé après cela, ntpd se terminera avec un message dans le journal système. Cette option peut être utilisée avec les options -q et -x. Voir la commande tinker pour d’autres options. -i jaildir Chroot le serveur dans le répertoire jaildir Cette option implique également que le serveur tente d’abandonner les privilèges root au démarrage (sinon, chroot donne très peu de sécurité supplémentaire), et elle n’est disponible que si le système d’exploitation supporte l’exécution du serveur sans privilèges root complets. Vous pouvez avoir besoin de spécifier également une option -u. -I iface Écoute sur l’interface. Cette option peut apparaître un nombre illimité de fois. -k keyfile Spécifiez le nom et le chemin d’accès du fichier de clé symétrique. Il s’agit de la même opération que la commande de configuration keys keyfile. -l logfile Spécifiez le nom et le chemin d’accès du fichier journal. La valeur par défaut est le fichier journal du système. Cette opération est identique à celle de la commande logfile logfileconfiguration. -L Ne pas écouter les IP virtuelles. La valeur par défaut est d’écouter. -m Verrouiller la mémoire. -n Ne pas forker. -N Dans la mesure où le système d’exploitation le permet, exécutez le ntpd avec la priorité la plus élevée. -p pidfile Spécifiez le nom et le chemin du fichier utilisé pour enregistrer l’ID du processus ntpd. Il s’agit de la même opération que la commande pidfile pidfileconfiguration. -P priority Dans la mesure où le système d’exploitation le permet, exécute le ntpd à la priorité spécifiée. -q Quitte le ntpd juste après le premier réglage de l’horloge. Ce comportement imite celui du programme ntpdate, qui doit être retiré. Les options-g et -x peuvent être utilisées avec cette option. Remarque : La discipline temporelle du noyau est désactivée avec cette option. -r broadcastdelay Spécifiez le délai de propagation par défaut du serveur de diffusion/multicast vers ce client. Cette option n’est nécessaire que si le délai ne peut pas être calculé automatiquement par le protocole. -s statsdir Spécifiez le chemin du répertoire pour les fichiers créés par la fonction de statistiques. Il s’agit de la même opération que la commande de configuration statsdir statsdir. -t key Ajouter un numéro de clé à la liste des clés de confiance. Cette option peut être utilisée plusieurs fois. -u user Spécifier un utilisateur, et éventuellement un groupe, pour basculer. Actuellement, cette option est prise en charge par NetBSD (configurer avec –enable-clockctl) et Linux (configurer avec –enable-linuxcaps). -U interface update interval (intervalle de mise à jour de l’interface) Nombre de secondes à attendre entre les analyses de la liste des interfaces pour détecter les nouvelles interfaces réseau et les supprimer. Défini à 0 pour désactiver la mise à jour dynamique de la liste d’interfaces, la valeur par défaut étant une analyse toutes les 5 minutes. -v variable-V variable Ajoute une variable système répertoriée par défaut. -x Normalement, le temps est décalé si le décalage est inférieur au seuil d’échelon, qui est de 128 ms par défaut, et échelonné s’il est supérieur au seuil. Cette option fixe le seuil à 600 s, ce qui est bien dans la fenêtre de précision pour régler l’horloge manuellement. Remarque : Comme la vitesse de balayage des noyaux Unix typiques est limitée à 0,5 ms/s, chaque seconde d’ajustement nécessite un intervalle d’amortissement de 2000 s. Ainsi, un ajustement de 600 s prendra presque 14 jours pour être achevé.Cette option peut être utilisée avec les options -g et -q. Voir la commande tinker pour les autres options. Remarque : la discipline temporelle du noyau est désactivée avec cette option.
le fichier de configuration
D’ordinaire, ntpd lit le fichier de configuration ntp.conf au moment du démarrage afin de déterminer les sources de synchronisation et les modes de fonctionnement.Il est également possible de spécifier une configuration fonctionnelle, bien que limitée, entièrement sur la ligne de commande, ce qui évite d’avoir recours à un fichier de configuration. Cela peut être particulièrement utile lorsque l’hôte local doit être configuré comme un client de diffusion/multicast, tous les pairs étant déterminés par l’écoute des diffusions au moment de l’exécution.
En général, le fichier de configuration est installé dans le répertoire /etc, mais il pourrait être installé ailleurs (voir l’option de ligne de commande -c conffile). Le format du fichier est similaire aux autres fichiers de configuration Unix – les commentaires commencent par le caractère # et s’étendent jusqu’à la fin de la ligne ; les lignes vides sont ignorées.
Les commandes de configuration consistent en un mot-clé initial suivi d’une liste d’arguments, dont certains peuvent être optionnels, séparés par des espaces. Les commandes ne peuvent pas être poursuivies sur plusieurs lignes. Les arguments peuvent être des noms d’hôtes, des adresses d’hôtes écrites sous forme numérique, des nombres entiers, des nombres à virgule flottante (pour spécifier des temps en secondes) et des chaînes de texte. Les arguments facultatifs sont délimités par dans les descriptions suivantes, tandis que les alternatives sont séparées par | La notation signifie une répétition facultative et indéfinie du dernier élément avant le
Codes de sortie
Un code de sortie non nul indique une erreur. Tout message d’erreur est enregistré dans le journal système par défaut.
Le code de sortie est 0 uniquement lorsque ntpd est terminé par un signal, ou lorsque l’option -q est utilisée et que ntpd règle avec succès l’horloge système.
Voir aussi
ntp.conf(5), ntpq(8), ntpdc(8)
.