Dernière modification le 22/08/2021


Heure Automatique


Afficher la date et l'heure

Pour afficher la date et l’heure, utilisez la commande :

date [Enter]
Sat 21 Aug 21:52:52 CEST 2021


Réglage avec "Timedatectl"

Si vous avez un problème d’heure sur le Raspberry ?
Si vous voulez synchroniser l’heure du Raspberry sur un autre serveur NTP, local par exemple ?
En général dans un réseau local il y a un serveur maître qui se synchronise sur internet et les autres se synchronisent sur le serveur maître local.
De base l’heure du Raspberry est synchronisée sur le serveur Debian, avec le service systemd-timesync (pourquoi changer de système de synchronisation de l’heure !)
Côté matériel, le Raspberry ne possède pas d’horloge sauvegardée avec une pile !
Sur les versions récentes Raspberry Pi OS (depuis Stretch), le paquet fake-hwclock est inclus pour résoudre ce problème. Il sauvegarde la date et l’heure actuelle dans les fichiers du système d’exploitation, pour le restaurer après un redémarrage s’il n’y a pas de connexion Internet.


Introduction

La commande “timedatectl” est intégrée par défaut.
Il s’agit d’un outil pour gérer la date et l’heure en ligne de commande sur le Raspberry. Afficher le statut actuel :

timedatectl status [Enter]
Local time: Fri 2021-08-20 00:18:26 CEST
Universal time: Thu 2021-08-19 22:18:26 UTC
RTC time: n/a
Time zone: Europe/Brussels (CEST, +0200)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no

Ce qui donne :


Réglage du fuseau horaire

Dans l’exemple précédent le fuseau horaire est ”Europe/Brussels”.
Pour obtenir la liste des fuseaux horaire, utilisez la commande :

timedatectl list-timezones

Affiche la liste des fuseau horaire possible.
Pour filtrer uniquement les serveurs Européen, utilisez la commande :

timedatectl list-timezones | grep Europe

Pour changer le fuseau horaire par exemple, utilisez la commande :

sudo timedatectl set-timezone Europe/Brussels


Réglage de l’heure manuellement

Si vous avez besoin de régler l’heure manuellement, utilisez la commande :

sudo timedatectl set-time 'A:M:J HH:mm:ss'
sudo timedatectl set-time 'A:M:J'
sudo timedatectl set-time 'HH:mm:ss'

Par exemple :

sudo timedatectl set-time '12:00:00'

Avant de faire cela, il faut toutefois désactiver la mise à jour automatique (sinon l’heure reviendra toute seule).


Activer/Désactiver la synchronisation sur “service systemd-timesyncd”

Pour désactiver la synchronisation sur le service systemd-timesyncd, exécutez la commande :

sudo timedatectl set-ntp false

Pour activer la synchronisation sur le service systemd-timesyncd, exécutez la commande :

sudo timedatectl set-ntp true


Fichier de configuration

Pour la commande “timedatectl”, il existe un fichier de configuration. Il permet notamment de changer le serveur utilisé pour la synchronisation. Ouvrire le fichier de configuration :

sudo nano /etc/systemd/timesyncd.conf

Pour configurer un ou plusieurs serveur de temps décommenter la ligne “NTP” et ajouter le serveur de temps, par exemple pour la Belgique :

[Time]
NTP=be.pool.ntp.org

Décommenter la ligne “FallbackNTP” (si le serveur principal NTP n’est plus fonctionnel) et remplacez les serveurs par défaut par ceux que vous souhaitez utiliser. Par exemple :

[Time]
#NTP=
FallbackNTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org

Enregistrer et quitter (“ctrl+x”, “y” et “Enter”)


Le service "systemd-timesyncd"

Le service “systemd-timesyncd” permet de synchroniser du temps sur un serveur externe. Pour connaître le statut du service, utilisez la commande :

sudo service systemd-timesyncd status [enter]
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:
active (running) since Thu 2021-08-19 23:55:10 CEST; 2min 52s ago
Docs: man:systemd-timesyncd.service(8)
Main PID: 1074 (systemd-timesyn)
Status: "Synchronized to time server for the first time 162.159.200.1:123 (be.pool.ntp.org)."
Tasks: 2 (limit: 2059)
CGroup: /system.slice/systemd-timesyncd.service
└─1074 /lib/systemd/systemd-timesyncd

Aug 19 23:55:10 raspftp2 systemd[1]: Starting Network Time Synchronization...
Aug 19 23:55:10 raspftp2 systemd[1]: Started Network Time Synchronization.
Aug 19 23:55:11 raspftp2 systemd-timesyncd[1074]: Synchronized to time server for the first time 162.159.200.1

Pour stopper le service :

sudo service systemd-timesyncd stop

Pour démarrer le service :

sudo service systemd-timesyncd start

Pour redémarrer le service :

sudo service systemd-timesyncd restart


Liens Timedatectl


Serveur NTP

Un serveur NTP (Network Time Protocol) est un serveur qui permet de synchroniser l’heure sur des ordinateurs.
Installer un serveur NTP en réseau permet d’avoir une machine, et surtout un serveur, toujours à l’heure au dixième de seconde.
De plus, il va pouvoir partager son l’heure avec les autres machines du réseau, de cette façon les autres ordinateurs seront synchronisés aussi.
Avec un serveur NTP interne les requêtes de synchronisation vers l’extérieur seront réduites. De plus, tous les ordinateurs du réseau seront synchronisés.
Le port utilisé par le serveur NTP est : 123.


Installation du serveur NTP

Installez le serveur NTP avec la commande suivante :

sudo apt install ntp


Restriction

Attention les services NTP et “systemd-timesyncd” ne peuvent cohabiter.


Arrêt du service “systemd-timesyncd”

Pour arrêter et désactiver le service "systemd-timesyncd”, exécuter les commandes suivantes :

sudo systemctl stop systemd-timesyncd
sudo systemctl disable systemd-timesyncd


Redémarrage du service NTP

Il faut maintenant redémarrer le service NTP, exécuter les commandes suivantes :

sudo service ntp stop
sudo service ntp start

Maintenant le Raspberry n'est plus synchronisé avec le service timesyncd, mais bien avec le service NTP.
Vous pouvez vérifier si le service NTP est bien actif, avec la commande :

$ sudo service ntp status
● ntp.service - Network Time Service
Loaded: loaded (/lib/systemd/system/ntp.service; enabled; vendor preset: enabled)
Active:
active (running) since Sat 2021-08-21 19:14:05
BST; 11s ago
Docs: man:ntpd(8)
Process: 663 ExecStart=/usr/lib/ntp/ntp-systemd-wrapper (code=exited, status=0/SUCCESS)
Main PID: 669 (ntpd)
Tasks: 2 (limit: 2059)
CGroup: /system.slice/ntp.service
└─669 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 109:114

Aug 21 19:14:05 raspberrypi ntpd[669]: Listen normally on 3 eth0 192.168.0.179:123
Aug 21 19:14:05 raspberrypi ntpd[669]: Listen normally on 4 lo [::1]:123
Aug 21 19:14:05 raspberrypi ntpd[669]: Listen normally on 5 eth0 [fe80::7611:88e9:9a7d:a822%2]:123
Aug 21 19:14:05 raspberrypi ntpd[669]: Listening on routing socket on fd #22 for interface updates
Aug 21 19:14:05 raspberrypi ntpd[669]: kernel reports TIME_ERROR: 0x41: Clock Unsynchronized
Aug 21 19:14:05 raspberrypi ntpd[669]: kernel reports TIME_ERROR: 0x41: Clock Unsynchronized
Aug 21 19:14:11 raspberrypi ntpd[669]: Soliciting pool server 45.87.76.3
Aug 21 19:14:12 raspberrypi ntpd[669]: Soliciting pool server 195.13.1.153
Aug 21 19:14:13 raspberrypi ntpd[669]: Soliciting pool server 185.111.204.220
Aug 21 19:14:14 raspberrypi ntpd[669]: Soliciting pool server 94.224.67.24


Configuration du serveur NTP

Editez le fichier /etc/ntp.conf, remplacez les serveurs par défaut par les serveurs les plus proches, la Belgique pour nous :

sudo nano /etc/ntp.conf

Modifier les server (pool) par défaut, au profit des serveur Belge :

server 0.be.pool.ntp.org iburst dynamic
server 1.be.pool.ntp.org iburst dynamic
server 2.be.pool.ntp.org iburst dynamic
server 3.be.pool.ntp.org iburst dynamic

L’option iburst signifie qu’en cas d’indisponibilité du serveur NTP distant, notre serveur essaiera plusieurs fois avant d’abandonner.
L’option dynamic permet de conserver dans la configuration les serveurs indisponibles, au cas où ils seraient à nouveau accessibles plus tard.

Après avoir modifié la configuration, redémarrer le serveur :

sudo service ntp restart

Voici la commande pour vérifier si l'heure se synchronise correctement. Pour répertorier les serveurs NTP avec lesquels RPi synchronise:

ntpq -pn [Enter]
remote refid st t when poll reach delay offset jitter
==============================================================================
0.be.pool.ntp.o .POOL. 16 p - 64 0 0.000 0.000 0.001
1.be.pool.ntp.o .POOL. 16 p - 64 0 0.000 0.000 0.001
2.be.pool.ntp.o .POOL. 16 p - 64 0 0.000 0.000 0.001
3.be.pool.ntp.o .POOL. 16 p - 64 0 0.000 0.000 0.001
+162.159.200.123 10.78.8.138 3 u 44 64 37 11.928 -1.071 1.660
+162.159.200.1 10.78.8.138 3 u 44 64 37 12.102 -1.113 1.401
+193.190.198.14 193.190.230.65 2 u 44 64 37 8.848 -2.073 2.851
+109.68.160.220 109.68.160.223 2 u 45 64 37 8.848 -2.265 2.513
*45.87.77.15 109.68.160.223 2 u 40 64 37 10.356 -1.689 2.190
+91.182.44.189 82.64.45.50 2 u 39 64 37 25.509 -0.506 0.828
+84.199.86.247 192.168.0.100 2 u 42 64 37 15.372 -1.367 1.981
+109.89.122.74 193.190.230.37 2 u 38 64 37 21.025 -1.130 2.044
+45.87.76.3 244.220.219.218 2 u 39 64 37 9.142 -2.268 2.735
#81.82.227.219 81.82.236.197 2 u 34 64 37 28.673 -7.809 3.420
+193.190.147.153 193.190.230.37 2 u 26 64 17 11.727 -2.296 1.856
#185.153.43.4 10.12.1.4 2 u 23 64 37 11.919 -0.072 0.860
+195.13.1.153 10.0.0.5 2 u 20 64 37 11.777 -1.440 0.633

Les paramètre de ntpq :

Le résultat de la commande “ntpq” :


Partage de la synchronisation avec le réseau local

Par défaut le temps n’est pas partagé avec le réseau :

# By default, exchange time with everybody, but don't allow configuration.
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited

Pour permettre au réseau local de se synchroniser avec le Raspberry, il faut commenter les deux restriction précédente et ajouter une nouvelle restriction pour votre réseau :

# By default, exchange time with everybody, but don't allow configuration.
# restrict -4 default kod notrap nomodify nopeer noquery limited
# restrict -6 default kod notrap nomodify nopeer noquery limited
restrict 192.168.0.0 mask 255.255.255.0

Il faut aussi diffuser l’heure sur le réseau en effectuant un “broadcast”. Ajouter la ligne suivante, par exemple pour notre réseau 192.168.0.255/24 :

broadcast 192.168.1.255

Enregistrer, quitter.
Redémarrer le service :

sudo service ntp restart


Modifier le fuseau horaire

Pour modifier le fuseau horaire, éditer le fichier “/etc/timezone” :

sudo nano /etc/timezone

Pour avoir une syntaxe correcte vérifier sur le site https://en.wikipedia.org/wiki/List_of_tz_database_time_zones. Pour la Belgique entrer la zone Europe/Brussels.
Enregistrer et quitter et redémarrer le Raspberry :

sudo reboot

Une autre méthode est d'utiliser “rasp-config” :

sudo raspi-config

Choisir l’option “5” et ensuite l’option “L2” :

Dans la liste des zones géographique, choisir “Europe” :

Bien évidemment “Brussels” :

Sélectionner “Ok” et “Enter”. Cette opération devrait afficher (au jour et heur près) :

Current default time zone: 'Europe/Brussels'
Local time is now: Sun Aug 22 15:01:55 CEST 2021.
Universal Time is now: Sun Aug 22 13:01:55 UTC 2021.


Configuration du pare-feux

Si vous avez un pare-feux (ufw), faut aussi configurer le pare-feu pour que les clients puisse accéder au serveur NTP et donc ouvrir le port “123” en “udp” :

sudo ufw allow from any to any port 123 proto udp


Test du serveur NTP

NTP server Tool est un programme qui fonctionne sous Zindoz, le télécharger sur le site https://www.ntp-time-server.com/ntp-software/ntp-server-tool.html et installer.
ans le champs “NTP Server” et cliquer le bouton “Query”.

Un serveur NTP qui ne fonctionne pas :

Un serveur NTP qui fonctionne :


Liens Serveur NTP


Serveur NTP GPS


Liens Serveur NTP GPS