Comment configurer la synchronisation de l’heure sur Debian 10

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.

Debian 10 intègre une synchronisation de l’heure et est activée par défaut à l’aide du serveur de temps ntpd standard, fourni par le paquet + ntp +. Dans cet article, nous allons examiner quelques commandes de base liées au temps, vérifier que ntpd est actif et connecté à des homologues, et apprendre à activer le service de temps réseau alternatif systemd-timesyncd.

Conditions préalables

Avant de commencer ce tutoriel, vous aurez besoin d’un serveur Debian 10 avec un utilisateur non root, + sudo + -, comme décrit dans https://www.digitalocean.com/community/tutorials/initial-server-setup-with. -debian-10 [ce tutoriel sur l’installation d’un serveur Debian 10].

Étape 1 - Navigation dans les commandes de base

La commande la plus élémentaire pour connaître l’heure sur votre serveur est + date +. Tout utilisateur peut taper cette commande pour imprimer la date et l’heure:

date
OutputWed 31 Jul 2019 06:03:19 PM

Le plus souvent, votre serveur utilisera par défaut le fuseau horaire UTC, comme indiqué dans la sortie ci-dessus. Le temps universel coordonné (UTC) correspond à l’heure à une longitude nulle. 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 commande + timedatectl 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 sur + SPACE pour aller en bas de la page, et sur` + b + pour aller en haut de la page. Une fois que vous avez trouvé le bon fuseau horaire, notez-le, puis tapez `+ q + pour quitter la liste.

Définissez maintenant le fuseau horaire avec + timedatectl set-timezone +, en veillant à remplacer la partie en surbrillance ci-dessous par le fuseau horaire indiqué dans la liste. Vous devez utiliser + sudo + avec + timedatectl + pour effectuer ce changement:

sudo timedatectl set-timezone

Vous pouvez vérifier vos modifications en exécutant à nouveau + date +:

date
OutputWed 31 Jul 2019 02:08:43 PM

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.

Étape 2 - Vérification de l’état de ntpd

Par défaut, Debian 10 exécute le serveur ntpd standard pour garder votre système synchronisé avec un pool de serveurs de temps externes. Nous pouvons vérifier qu’il fonctionne avec la commande + systemctl +:

sudo systemctl status ntp
Output● ntp.service - Network Time Service
  Loaded: loaded (/lib/systemd/system/ntp.service; enabled; vendor preset: enabled)
  Active:  since Wed 2019-07-31 13:57:08 EDT; 17min ago
    Docs: man:ntpd(8)
Main PID: 429 (ntpd)
   Tasks: 2 (limit: 1168)
  Memory: 2.1M
  CGroup: /system.slice/ntp.service
          └─429 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 106:112
. . .

Le statut + actif (en cours) + indique que ntpd a démarré correctement. Pour obtenir plus d’informations sur le statut de ntpd, nous pouvons utiliser la commande + ntpq +:

ntpq -p
Output     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
0.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
1.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
2.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
3.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
+208.67.72.50    152.2.133.55     2 u   12   64  377   39.381    1.696   0.674
+198.46.223.227  204.9.54.119     2 u    6   64  377   22.671    3.536   1.818
-zinc.frizzen.ne 108.61.56.35     3 u   43   64  377   12.012    1.268   2.553
-pyramid.latt.ne 204.123.2.72     2 u   11   64  377   69.922    2.858   0.604
+nu.binary.net   128.252.19.1     2 u   10   64  377   35.362    3.148   0.587
#107.155.79.108  129.7.1.66       2 u   65   64  377   42.380    1.638   1.014
+t1.time.bf1.yah 98.139.133.62    2 u    6   64  377   11.233    3.305   1.118
*sombrero.spider 129.6.15.30      2 u   47   64  377    1.304    2.941   0.889
+hydrogen.consta 209.51.161.238   2 u   45   64  377    1.830    2.280   1.026
-4.53.160.75     142.66.101.13    2 u   42   64  377   29.077    2.997   0.789
#horp-bsd01.horp 146.186.222.14   2 u   39   64  377   16.165    4.189   0.717
-ntpool1.603.new 204.9.54.119     2 u   46   64  377   27.914    3.717   0.939

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

Étape 3 - Passage à systemd-timesyncd

Il est possible d’utiliser le composant * timesyncd * intégré de systemd pour remplacer ntpd. timesyncd est une alternative plus légère à ntpd qui est plus intégrée à systemd. Notez cependant qu’il ne prend pas en charge l’exécution en tant que serveur de temps et que les techniques qu’il utilise pour garder votre système synchronisé sont un peu moins sophistiqués. Si vous utilisez des systèmes distribués en temps réel complexes, vous voudrez peut-être rester avec ntpd.

Pour utiliser timesyncd, nous devons d’abord désinstaller ntpd:

sudo apt purge ntp

Ensuite, démarrez le service timesyncd:

sudo systemctl start systemd-timesyncd

Enfin, vérifiez le statut du service pour vous assurer qu’il fonctionne:

sudo systemctl status systemd-timesyncd
Output● systemd-timesyncd.service - Network Time Synchronization
  Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
 Drop-In: /usr/lib/systemd/system/systemd-timesyncd.service.d
          └─disable-with-time-daemon.conf
  Active:  since Wed 2019-07-31 14:21:37 EDT; 6s ago
    Docs: man:systemd-timesyncd.service(8)
Main PID: 1681 (systemd-timesyn)
  Status: "Synchronized to time server for the first time 96.245.170.99:123 (0.debian.pool.ntp.org)."
   Tasks: 2 (limit: 1168)
  Memory: 1.3M
  CGroup: /system.slice/systemd-timesyncd.service
          └─1681 /lib/systemd/systemd-timesyncd

Nous pouvons utiliser + timedatectl + pour afficher la compréhension actuelle de l’heure par systemd:

timedatectl
Output               Local time: Wed 2019-07-31 14:22:15 EDT
          Universal time: Wed 2019-07-31 18:22:15 UTC
                RTC time: n/a
               Time zone: America/New_York (EDT, -0400)


         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. + Horloge système synchronisée: oui + signifie que l’heure a été synchronisée avec succès, et + service NTP: active + signifie que timesyncd est activé et en cours d’exécution.

Conclusion

Dans cet article, nous avons montré comment afficher l’heure système, modifier les fuseaux horaires, utiliser ntpd et passer au service timesyncd de systemd. Si vous avez des besoins de chronométrage plus complexes que ceux décrits précédemment, vous pouvez vous reporter à la de la documentation officielle de la NTP, ainsi que jetez un coup d’œil à the NTP Pool Project, un groupe mondial de volontaires fournissant une grande partie de l’infrastructure NTP dans le monde.