Comment configurer la synchronisation de l’heure sur Debian 9

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.

Dans Debian 9, la synchronisation temporelle est intégrée et activée par défaut à l’aide du serveur de temps ntpd standard, fourni par le paquetage + 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 didacticiel, vous aurez besoin d’un serveur Debian 9 avec un utilisateur non-root, compatible Sudo, comme décrit dans https://www.digitalocean.com/community/tutorials/initial-server-setup-with-debian-. 9 [ce tutoriel sur l’installation d’un serveur Debian 9].

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
OutputTue Sep  4 17:51:49  2018

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 de zéro degré. 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
OutputTue Sep  4 13:52:57  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.

Vérification de l’état de ntpd

Par défaut, Debian 9 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 - LSB: Start NTP daemon
  Loaded: loaded (/etc/init.d/ntp; generated; vendor preset: enabled)
  Active:  since Tue 2018-09-04 15:07:03 EDT; 30min ago
    Docs: man:systemd-sysv-generator(8)
 Process: 876 ExecStart=/etc/init.d/ntp start (code=exited, status=0/SUCCESS)
   Tasks: 2 (limit: 4915)
  CGroup: /system.slice/ntp.service
          └─904 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 105:109
. . .

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
-eterna.binary.n 204.9.54.119     2 u  240  256  377   35.392    0.142   0.211
-static-96-244-9 192.168.10.254   2 u   60  256  377   10.242    1.297   2.412
+minime.fdf.net  83.157.230.212   3 u   99  256  377   24.042    0.128   0.250
*t1.time.bf1.yah 98.139.133.62    2 u   31  256  377   11.112    0.621   0.186
+x.ns.gin.ntt.ne 249.224.99.213   2 u  108  256  377    1.290   -0.073   0.132
-ord1.m-d.net    142.66.101.13    2 u  473  512  377   19.930   -1.764   0.293

+ 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.

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 toutefois qu’il ne prend pas en charge l’exécution en tant que serveur de temps et que les techniques utilisées pour maintenir l’heure du système synchronisée sont légèrement moins sophistiquées. 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: /lib/systemd/system/systemd-timesyncd.service.d
          └─disable-with-time-daemon.conf
  Active:  since Tue 2018-09-04 16:14:23 EDT; 1s ago
    Docs: man:systemd-timesyncd.service(8)
Main PID: 3399 (systemd-timesyn)
  Status: "Synchronized to time server 198.60.22.240:123 (0.debian.pool.ntp.org)."
   Tasks: 2 (limit: 4915)
  CGroup: /system.slice/systemd-timesyncd.service
          └─3399 /lib/systemd/systemd-timesyncd

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

timedatectl
Output      Local time: Tue 2018-09-04 16:15:34 EDT
 Universal time: Tue 2018-09-04 20:15:34 UTC
       RTC time: Tue 2018-09-04 20:15:33
      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. + Heure du réseau sur: oui + signifie que timesyncd est activé et + NTP synchronisé: oui + indique que l’heure a été synchronisée avec succès.

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.