NTP (Network Time Protocol) est un protocole permettant de distribuer l'heure sur un réseau informatique. Il assure la synchronisation des horloges à travers le réseau internet (ou un réseau local). Un client peut ainsi demander l'heure actuelle à un serveur et l'utiliser pour ajuster sa propre horloge. Chaque machine peut être à la fois serveur et client.
Ce dispositif est assis sur une organisation complexe et hiérarchisée à partir d'horloges atomiques et de serveurs en cascades. La mise à jour de l'heure de chaque appareil doit tenir compte des délais de transmission de l'information depuis l'horloge atomique.
Ubuntu a longtemps utilisé ntpdate et ntpd pour ajuster l'horloge interne des systèmes d'exploitation, cette tâche est désormais assurée par timedatectl qui est installé par défaut dans votre distribution.
Timesyncd se substitue à la partie client de ntpd. Timesync vérifie l'heure de référence à intervalles réguliers et assure le maintien de la synchronisation des horloges. Il effectue également le stockage local des synchronisations, ainsi leur prise en compte est assurée en cas de réinitialisation.
Si ntpdate ou ntpd sont installés, timedatectl se désactive pour permettre à l'utilisateur d'utiliser l'ancienne configuration. Ce principe permet d'éviter la coexistence de deux serveurs de temps sur le même appareil, il a pour défaut, en cas de mise à jour à partir d'une ancienne version de ntp ou ntpdate, de risquer de désactiver les services qui utilisent systemd.
La configuration de timedatectl est modifiable avec les droits d'administration dans le fichier /etc/systemd/timesyncd.conf (choix du serveur) ou dans un fichier de configuration situé dans /etc/systemd/timesyncd.conf.d/ (voir doc).
Pour que la commande timedatectl set-ntp true
puisse fonctionner (cf. plus bas) , taper la commande suivante :
sudo apt install -V systemd-timesyncd
Timedatectl est installé par défaut et fonctionne nativement à l'installation d'Ubuntu.
timedatectl set-time 'HH:mm:ss'
syntaxe : HH:mm:ss
= Heure, minute, seconde.
timedatectl set-time 'A-M-J'
syntaxe : A-M-J
= Année, Mois, Jour.
timedatectl set-time 'A-M-J HH:mm:ss'
Lister les fuseaux horaires :
timedatectl list-timezones
Choisir un fuseau horaire (Time Zone) :
timedatectl set-timezone Europe/Paris
Le nom du serveur de synchronisation de timedatectl et timesyncd peut être défini par l'utilisateur dans un fichier spécifique ("drop-in") situé dans le répertoire /etc/systemd/timesyncd.conf.d ou dans le fichier /etc/systemd/timesyncd.conf. La documentation conseille de privilégier la première solution. Le nom du fichier "drop-in" est obligatoirement terminé par l'extension .conf pour être pris en compte. Des options complémentaires peuvent être indiquée dans le fichier (voir doc). Une liste de serveurs de temps libre peut être consultée ici. Une liste mondiale des serveurs se trouve à cet endroit.
La liste des serveurs de temps est insérée dans le fichier de configuration /etc/systemd/timesyncd.conf à la ligne NTP=. D'autres serveurs peuvent être ajoutés à la ligne FallbackNTP :
[Time] NTP=fr.pool.ntp.org FallbackNTP=0.ubuntu.pool.ntp.org 1.ubuntu.pool.ntp.org ntp.ubuntu.com
timedatectl set-ntp true
timedatectl set-ntp false
Le statut de l'heure et de sa configuration à partir de timedatectl et timesyncd peut être vérifié par la commande :
timedatectl status
qui donnera par exemple
Local time: dim. 2017-11-05 20:14:26 CET Universal time: dim. 2017-11-05 19:14:26 UTC RTC time: dim. 2017-11-05 19:14:27 Time zone: Europe/Paris (CET, +0100) Network time on: yes NTP synchronized: no RTC in local TZ: no
ou bien avec la commande :
timedatectl timesync-status
qui donnera par exemple
Server: 172.16.78.11 (172.16.78.11) Poll interval: 4min 16s (min: 32s; max 34min 8s) Packet count: 0