J'installe Ubuntu sur une machine intégrée fonctionnant sur une connexion cellulaire, où nous payons par octet. La machine ne possède pas non plus de batterie RTC. Elle démarre donc à une heure aléatoire à chaque démarrage.
Je voudrais m'assurer que l'heure est synchronisée lorsque la connexion cellulaire est disponible afin que les messages de journalisation, etc. aient l'heure réelle, mais je ne veux pas non plus payer un bras et une jambe pour NTP trafic.
Puis-je personnaliser la vitesse à laquelle NTP met à jour l'heure? J'utilise actuellement openntpd, mais je n'y suis pas attaché.
Internet n'est pas nécessairement actif au démarrage. Par conséquent, ntupdate et les logiciels associés au démarrage ne fonctionneront pas. Et planifier via cron signifie attendre que la tâche planifiée débute, alors que je souhaite qu'un démon de temps obtienne une synchronisation de l'heure dès que possible.
Certaines de ces réponses pourraient gagner le concours de configuration ntp masqué.
Utilisez l'implémentation de référence ntp et utilisez iburst pour définir rapidement l'heure du démarrage. Ensuite, vous pouvez utiliser la directive minpoll pour limiter la fréquence à laquelle ntpd interroge les serveurs de temps distants. Cela vous permettra de tirer parti de la discipline d'horloge de ntpd et de réduire la bande passante.
minpoll minpoll
maxpoll maxpoll
These options specify the minimum and maximum poll intervals for NTP
messages, in seconds as a power of two. The maximum poll interval
defaults to 10 (1024 s), but can be increased by the maxpoll option to
an upper limit of 17 (36 h). The minimum poll interval defaults to 6 (64 s),
but can be decreased by the minpoll option to a lower limit of 3 (8 s).
Chrony est une bonne alternative à l'implémentation de référence NTP. Openntpd n'est pas.
Mon expérience est avec ntp plutôt qu'openntpd.
Vous devez savoir que le protocole NTP commence généralement par l'envoi de paquets toutes les minutes (64 secondes), mais qu'il s'installe généralement en envoyant et en recevant un paquet toutes les 17 minutes pour chaque serveur de votre/etc/ntp. fichier conf. Des pannes de réseau ou une horloge instable dans votre appareil peuvent toutefois augmenter ce problème. Chaque paquet a une charge utile d'environ 68 octets, ce qui représente probablement un peu plus de 100 octets, dans chaque sens, par interrogation.
La mise à jour et ntpdate à la mise en veille du réseau sont de bonnes idées pour régler l’heure. Et si c'est tout ce dont vous avez besoin, cela devrait bien fonctionner pour vous.
Toutefois, si vous devez synchroniser l'heure sur une période prolongée, le protocole ntp a été conçu pour le faire. L'horloge de votre appareil fonctionnera un peu vite ou lentement en fonction de la température à laquelle il fait chaud ou froid, même s'il possède probablement une horloge à cristal - et l'indication de l'heure en cours est conçue pour s'adapter à cette situation.
Voici quelques suggestions si vous avez besoin d’un chronométrage continu et souhaitez réduire la bande passante utilisée. Ils font référence aux éléments de ntp.conf.
N'utilisez pas iburst. (Mais il faudra plus de temps pour régler l'heure au début).
Augmentez minpoll de 6 (2 ^ 6 secondes = 64 secondes). Cela réduit le trafic lorsque le protocole démarre après la mise en place du réseau.
Augmentez maxpoll de 10 (2 ^ 10 secondes, soit 1024 secondes, soit environ toutes les 17 minutes. Vous pouvez aller jusqu'à 17 pour interroger toutes les 36 heures environ. Je n'ai pas essayé cela moi-même.
N'utilisez qu'un nombre minimal de serveurs, si vous en aviez un qui pouvait être atteint de manière fiable à partir de vos périphériques intégrés, cela aurait été formidable. Plus le nombre de serveurs est élevé, plus le chronométrage est fiable, mais le trafic augmente, ce qui en fait un compromis.
Vous pouvez faire du piratage en exécutant ntpdate lorsque l'interface de cellule est affichée. Mais si vous le pouvez, installer Chrony serait une meilleure alternative, car il a été créé avec un accès réseau intermittent en tête .
Sur une installation par défaut d'Ubuntu, le démon NTP ne s'exécute pas. Au lieu de cela, l'heure est définie chaque fois qu'une interface réseau est affichée par le hook /etc/network/if-up.d/ntpdate
.
Si vous recherchez une synchronisation ponctuelle plutôt qu'une synchronisation constante, cela pourrait vous suffire.
Vous pouvez contrôler les serveurs interrogés pour définir l'heure, soit via le fichier standard /etc/ntp.conf
, soit via la variable NTPSERVERS
dans /etc/default/ntpdate
.
Vous avez probablement déjà lu la page de manuel openntpd.
http://www.openbsd.org/cgi-bin/man.cgi?query=ntpd.conf
Vous avez probablement déjà remarqué l'absence d'une option de vote par heure.
J'ai ces hacks possibles à proposer:
Utilisez cron et/ou vos scripts de connexion cellulaire pour faire basculer les règles iptables afin de supprimer ou d’autoriser le trafic du port 123 lorsque vous souhaitez l’autoriser. Cela pourrait être aussi simple que
0 12 * * * iptables -D OUTPUT -j DROP -p udp --dport 123 # at noon start allowing ntp
0 13 * * * iptables -A OUTPUT -j DROP -p udp --dport 123 # at 1pm stop allowing ntp
Intégrez un récepteur d’horloge radio dans votre machine intégrée. Je ne sais presque rien à ce sujet mais des produits comme celui-ci:
faites-moi penser que ce n'est pas difficile si vous pouvez recevoir le signal radio.
Avez-vous besoin de la synchronisation exacte et précise fournie par ntp? Sinon, vous pourrez peut-être utiliser rdate
ou ntpdate
au démarrage, puis périodiquement via cron.
Le protocole NTP, à l'instar de TCP, possède une théorie approfondie et une expérience pratique intégrée au protocole; si vous modifiez ses paramètres fondamentaux, il cesse d'avoir les propriétés de synchronisation pour lesquelles il a été conçu.
Si votre appareil est connecté sporadiquement, peut-être que le bon vieux RDATE vous servira le mieux. Il ne gère pas le décalage horaire, ni la moyenne des pairs, il ne peut pas non plus être protégé contre divers piratages subtils qu'un homme du milieu pourrait jouer s'il en valait la peine. Il obtient simplement la date de référence d'un serveur distant et envoie l'horloge locale avec un marteau. Mais il le fait quand vous le souhaitez et son comportement est déterministe.
La précision de RDATE est bien pire que celle que NTP offre, je n'y croirais pas mieux que ± 1 seconde, mais si vous n'êtes attaché que sporadiquement, une synchronisation plus précise n'est pas pertinente; en effet, selon relativité cela pourrait même ne pas avoir de sens.
Si je me souviens bien, l'intervalle d'interrogation NTP peut être défini sur un maximum de 1024 secondes. La solution la plus simple serait peut-être d’exécuter ntpdate à chaque démarrage, puis de temps en temps à partir de crontab.
Si votre horloge commence avec une heure aléatoire à chaque démarrage, vous ne pourrez probablement pas exécuter ntpd de toute façon et vous devrez d'abord utiliser ntpdate. Ntpd refuse de synchroniser l'heure si la différence est trop grande entre votre horloge et celle des serveurs.
Afin de prendre en compte minpool
name __/maxpool
name__, vous devez ajouter alors par serveur dans votre ntp.conf
.
Il n'est pas tout à fait recommandé de jouer avec le désamon NTP (il a une méthode intégrée pour optimiser la fréquence), mais vous devrez ajouter cette option comme ceci:
server time.google.com iburst minpoll 12 maxppol 17
server ntp.ubuntu.com iburst minpoll 12 maxppol 17
server europe.pool.ntp.org iburst minpoll 12 maxppol 17
Ici, si vous réglez la fréquence minimale sur 2 ^ 12 secondes, et le maximum sur 2 ^ 17 secondes.
Par défaut, j'ai découvert que le NTP ferait une demande toutes les minutes environ. C’est beaucoup trop. Ici, j'ai réduit la fréquence d'une fois par heure à une fois par jour.