NetworkManager et systemd.timesyncd

Tags: #<Tag:0x00007f39f39108f0> #<Tag:0x00007f39f39106e8>

Bonjour,

NetworkManager ne sais pas mettre à jour les paramètres NTP de systemd-timesyncd reçu par le client DHCP.
Pour se faire il faut changer le client DHCP de NetworkManager.
Il faut utiliser dhclient en ajoutant un fichier de configuration dans /etc/NetworkManager/conf.d/dhcp-client.conf ? avec:

[main]
dhcp=dhclient

ensuite il suffit de mettre un hook dans le dispatcher de NetworkManager dans /etc/NetworkManager/dispatcher.d/10-update-timesyncd avec:

#!/bin/sh

[ -z "$CONNECTION_UUID" ] && exit 0
INTERFACE="$1"
ACTION="$2"

case $ACTION in
up | dhcp4-change | dhcp6-change)
	[ -n "$DHCP4_NTP_SERVERS" ] || exit 0
	mkdir -p /etc/systemd/timesyncd.conf.d
	cat <<-THE_END >"/etc/systemd/timesyncd.conf.d/${CONNECTION_UUID}.conf"
		[Time]
		NTP=$DHCP4_NTP_SERVERS
	THE_END
	systemctl restart systemd-timesyncd.service
	;;
down)
	rm -f "/etc/systemd/timesyncd.conf.d/${CONNECTION_UUID}.conf"
	systemctl restart systemd-timesyncd.service
	;;
esac

Pour vérifier, il doit y avoir un fichier avec le nom: <connexion uuid>.conf dans /etc/systemd/timesyncd.conf.d avec un contenu:

[Time]
NTP=<liste des serveurs fournis par le DHCP>

timedatectl -a doit montrer que la synchronisation est active

# timedatectl
               Local time: dim. 2025-03-23 17:25:19 CET
           Universal time: dim. 2025-03-23 16:25:19 UTC
                 RTC time: dim. 2025-03-23 16:25:19
                Time zone: Europe/Paris (CET, +0100)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

Et dans les logs, on voit la synchronisation de timesyncd avec les serveurs indiqués.