Comment configurer la synchronisation de l’heure sur Ubuntu 18.04

introduction

La minuterie précise est devenue un élément essentiel des déploiements de logiciels modernes. Que ce soit pour vérifier que les journaux sont enregistrés dans le bon ordre ou que les mises à jour de la base de données sont appliquées correctement, le temps de synchronisation peut entraîner des erreurs, la corruption des données et d’autres problèmes difficiles à résoudre.

Ubuntu 18.04 a une synchronisation temporelle intégrée et activée par défaut à l’aide du service timesyncd de systemd. Dans cet article, nous allons examiner quelques commandes de base liées au temps, vérifier que timesyncd est actif et apprendre à installer un autre service de temps réseau.

Conditions préalables

Avant de commencer ce didacticiel, vous aurez besoin d'un serveur Ubuntu 18.04 avec un utilisateur non root et compatible sudo, comme décrit dansthis Ubuntu 18.04 server setup tutorial.

Navigation dans les commandes de base

La commande la plus basique pour connaître l'heure de votre serveur estdate. Tout utilisateur peut taper cette commande pour imprimer la date et l'heure:

date
OutputTue Jul 10 14:48:52 UTC 2018

Le plus souvent, votre serveur utilisera par défaut le fuseau horaireUTC, comme indiqué dans la sortie ci-dessus. UTC estCoordinated Universal Time, l'heure à zéro degré de longitude. L'utilisation systématique du temps universel réduit le risque de confusion lorsque votre infrastructure s'étend sur plusieurs fuseaux horaires.

Si vous avez des exigences différentes et devez modifier le fuseau horaire, vous pouvez utiliser la commandetimedatectl pour le faire.

Commencez par lister les fuseaux horaires disponibles:

timedatectl list-timezones

Une liste de fuseaux horaires s'imprimera sur votre écran. Vous pouvez appuyer surSPACE pour la page suivante et surb pour la page précédente. Une fois que vous avez trouvé le fuseau horaire correct, notez-le puis tapezq pour quitter la liste.

Réglez maintenant le fuseau horaire avectimedatectl set-timezone, en veillant à remplacer la partie en surbrillance ci-dessous par le fuseau horaire que vous avez trouvé dans la liste. Vous devrez utilisersudo avectimedatectl pour effectuer cette modification:

sudo timedatectl set-timezone America/New_York

Vous pouvez vérifier vos modifications en exécutant à nouveaudate:

date
OutputTue Jul 10 10:50:53 EDT 2018

L'abréviation de fuseau horaire doit refléter la nouvelle valeur choisie.

Maintenant que nous savons comment vérifier l'horloge et régler les fuseaux horaires, assurons-nous que notre heure est correctement synchronisée.

Contrôle de timesyncd avec timedatectl

Jusqu'à récemment, la plupart de la synchronisation de l'heure du réseau était gérée parNetwork Time Protocol daemon ou ntpd. Ce service se connecte à un pool d'autres serveurs NTP qui lui fournit des mises à jour de l'heure constantes et précises.

L’installation par défaut d’Ubuntu utilise maintenant timesyncd au lieu de ntpd. timesyncd se connecte aux mêmes serveurs et fonctionne à peu près de la même façon, mais il est plus léger et plus intégré à systemd et aux fonctionnements de bas niveau d’Ubuntu.

Nous pouvons interroger l'état de timesyncd en exécutanttimedatectl sans argument. Vous n’avez pas besoin d’utilisersudo dans ce cas:

timedatectl
Output                      Local time: Tue 2018-07-10 10:54:12 EDT
                  Universal time: Tue 2018-07-10 14:54:12 UTC
                        RTC time: Tue 2018-07-10 14:54:12
                       Time zone: America/New_York (EDT, -0400)
       System clock synchronized: yes
systemd-timesyncd.service active: yes
                 RTC in local TZ: no

Ceci affiche l’heure locale, l’heure universelle (qui peut être identique à l’heure locale, si vous n’avez pas quitté le fuseau horaire UTC), ainsi que des informations sur l’état de l’heure du réseau. System clock synchronized: yes indique que l'heure a été synchronisée avec succès etsystemd-timesyncd.service active: yes signifie que timesyncd est activé et en cours d'exécution.

Si timesyncd n’est pas actif, allumez-le avec timedatectl:

sudo timedatectl set-ntp on

Exécutez à nouveautimedatectl pour confirmer l'état de l'heure du réseau. La synchronisation réelle peut prendre une minute, mais finalement,Network time on: etNTP synchronized: devraient lireyes.

Passer à ntpd

Bien que timesyncd convienne dans la plupart des cas, ntpd peut mieux servir certaines applications très sensibles à la moindre perturbation dans le temps, car il utilise des techniques plus sophistiquées pour maintenir en permanence et progressivement le temps système.

Avant d'installer ntpd, nous devrions désactiver timesyncd:

sudo timedatectl set-ntp no

Vérifiez que timesyncd est désactivé:

timedatectl

Recherchezsystemd-timesyncd.service active: no dans la sortie. Cela signifie quetimesyncd a été arrêté. Nous pouvons maintenant installer le packagentp avecapt:

sudo apt update
sudo apt install ntp

ntpd sera lancé automatiquement après l’installation. Vous pouvez interroger ntpd pour obtenir des informations sur le statut afin de vérifier que tout fonctionne correctement:

ntpq -p
Output     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 0.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 1.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 2.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 3.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 ntp.ubuntu.com  .POOL.          16 p    -   64    0    0.000    0.000   0.000
+ec2-52-0-56-137 216.239.35.0     2 u   16   64    1    7.872   -2.137   1.485
+66.220.10.2     129.6.15.30      2 u   12   64    1   65.204    3.740   2.686
+block.steinhoff 209.51.161.238   2 u   11   64    1   33.364    1.710   3.586
+eterna.binary.n 216.229.0.50     3 u   11   64    1   35.330    2.821   2.839
+2604:a880:800:1 209.51.161.238   2 u   14   64    1    0.394    0.386   2.462
+ec2-52-6-160-3. 130.207.244.240  2 u   11   64    1    8.150    2.050   3.053
+mx.danb.email   127.67.113.92    2 u   13   64    1   63.868    1.539   2.240
*hydrogen.consta 129.6.15.28      2 u   12   64    1    2.989    1.755   2.563
+ntp-3.jonlight. 127.67.113.92    2 u   10   64    1   64.561    2.122   3.593
+undef.us        45.33.84.208     3 u   12   64    1   33.508    1.631   3.647
+ntp-3.jonlight. 127.67.113.92    2 u    8   64    1   64.253    2.645   3.174
 2001:67c:1560:8 145.238.203.14   2 u   22   64    1   71.155   -1.059   0.000
+test.diarizer.c 216.239.35.4     2 u   11   64    1   64.378    4.648   3.244
 2001:67c:1560:8 145.238.203.14   2 u   18   64    1   70.744   -0.964   0.000
 alphyn.canonica 132.246.11.231   2 u   17   64    1    7.973   -0.170   0.000
+vps5.ctyme.com  216.218.254.202  2 u   10   64    1   65.874    1.902   2.608

ntpq est un outil de requête pour ntpd. L'indicateur-p demande des informations sur les serveurs NTP (ou les voyantsp) auxquels ntpd s'est connecté. Votre sortie sera légèrement différente, mais devrait lister les serveurs de pool Ubuntu par défaut et quelques autres. N'oubliez pas que ntpd peut prendre quelques minutes pour établir des connexions.

Conclusion

Dans cet article, nous avons montré comment afficher l’heure du système, modifier les fuseaux horaires, utiliser l’heure par défaut d’Ubuntu et installer ntpd. Si vous avez des besoins de chronométrage plus sophistiqués que ce que nous avons abordé ici, vous pouvez faire référence àthe offical NTP documentation, et également jeter un œil àthe NTP Pool Project, un groupe mondial de volontaires fournissant une grande partie de l'infrastructure NTP mondiale.