{{tag>netadmin sysadmin troubleshooting dépannage ntp dhcp}} ====== timesyncd n'utilise pas les serveur NTP acquis via DHCP ====== Lorsque **NetworkManager** s'exécute sur l’hôte, la configuration du service **systemd-timesyncd.service** n'est pas mise à jour, ce dernier n'utilise pas les serveurs NTP acquis via DHCP par NetworkManager. En effet **NetworkManager** par défaut **ne communique pas directement avec systemd-timesyncd.service**. Cependant la fonctionnalité NetworkManager dispatcher peut être utilisée pour mettre à jour la configuration de l'unité systemd-timesynd.service. solution largement utilisée consiste à placer un script dans ''/etc/NetworkManager/dispatcher.d'' qui se charge de mettre en œuvre s se comportement pour systemd. ===== Environnement ===== lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.3 LTS Release: 20.04 Codename: focal systemd --version systemd 245 (245.4-4ubuntu3.13) +PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=hybrid nmcli est le CLI de NetworkManager: # Affiche les détails de configuration de la connexion # filtre les informations concernant les serveurs NTP nmcli connection show SFR_4380 | grep ntp_servers DHCP4.OPTION[7]: ntp_servers = 192.168.1.1 DHCP4.OPTION[17]: requested_ntp_servers = 1 La sortie obtenue indique bien que le serveur NTP est récupéré via DHCP. Si on affiche l'état de la synchronisation NTP: timedatectl show-timesync --all LinkNTPServers= SystemNTPServers= FallbackNTPServers=ntp.ubuntu.com ServerName=ntp.ubuntu.com ServerAddress=(null) RootDistanceMaxUSec=5s PollIntervalMinUSec=32s PollIntervalMaxUSec=34min 8s PollIntervalUSec=0 Frequency=0 timedatectl status Local time: dim. 2022-01-09 11:48:41 CET Universal time: dim. 2022-01-09 10:48:41 UTC RTC time: dim. 2022-01-09 10:48:41 Time zone: Europe/Paris (CET, +0100) System clock synchronized: no NTP service: active RTC in local TZ: no timesyncd n'utilise pas le serveur NTP retourné par DHCP, et malgré l'état actif du service NTP, l'horloge locale n'est pas synchronisée. Passer le script exécutable: chmod ug+x /etc/dhcp/dhclient-exit-hooks.d/timesyncd # Forcer le renouvellement du bail DHCP # Lister les connexions actives nmcli connection show --active # Redémarrer la connexion active souhaitée nmcli connection down SFR_4380 nmcli connection up SFR_4380 Les commandes ci-dessous permettent de créer les répertoires si nécessaire: for r in "/etc/systemd/timesyncd.conf.d" "/etc/NetworkManager/dispatcher.d"; do if [ ! -d $r ]; then # Le repertoire n'existe pas : creation" mkdir $r fi done Créer le script /etc/NetworkManager/dispatcher.d/10-update-timesyncd #!/usr/bin/env bash [[ -z "$CONNECTION_UUID" ]] && exit 0 INTERFACE="$1" ACTION="$2" case $ACTION in up | dhcp4-change | dhcp6-change) [[ -n "$DHCP4_NTP_SERVERS" ]] || exit mkdir /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 stop systemd-timesyncd.service ;; esac Rendre le script exécutable pour root seulement: chmod ug+x /etc/NetworkManager/dispatcher.d/10-update-timesyncd S'assurer que NetworkManager Dispatcher est activé: systemctl is-enabled NetworkManager-dispatcher.service Après ces modifications, le serveur NTP de l'unité **timesyncd.service** est bien mis à jour par NetworkManager: # Affiche le serveur NTP utilisé timedatectl show-timesync --all LinkNTPServers= SystemNTPServers=192.168.33.254 FallbackNTPServers=ntp.ubuntu.com ServerName=192.168.33.254 ServerAddress=192.168.33.254 RootDistanceMaxUSec=5s PollIntervalMinUSec=32s PollIntervalMaxUSec=34min 8s PollIntervalUSec=1min 4s NTPMessage={ Leap=0, Version=4, Mode=4, Stratum=3, Precision=-23, RootDelay=28.778ms, RootDispersion=36.071ms, Reference=5C4A08B, OriginateTimestamp=Sun 2022-01-09 17:27:27 CET, ReceiveTimestamp=Sun 2022-01-09 17:27:27 CET, TransmitTimestamp=Sun 2022-01-09 17:27:27 CET, DestinationTimestamp=Sun 2022-01-09 17:27:27 CET, Ignored=no PacketCount=2, Jitter=5.033ms } Frequency=6818847 # Affiche le status du service systemd-timesyncd timedatectl status Local time: dim. 2022-01-09 17:27:53 CET Universal time: dim. 2022-01-09 16:27:53 UTC RTC time: dim. 2022-01-09 16:27:53 Time zone: Europe/Paris (CET, +0100) System clock synchronized: yes NTP service: active RTC in local TZ: no Le service indique bien que l'horloge du système local à été synchronisée au serveur de temps par les lignes ''System clock synchronized: yes'' et ''NTP service: active''. ===== Références ===== * https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=861769 * https://github.com/systemd/systemd/issues/2850 * https://wiki.archlinux.org/title/Systemd-timesyncd#Troubleshooting