Outils pour utilisateurs

Outils du site


sysadmin:linux:systemd:troubleshooting:timesyncd_refuse_ntp_via_dhcp

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
sysadmin:linux:systemd:troubleshooting:timesyncd_refuse_ntp_via_dhcp [2022/01/09 11:28] yoannsysadmin:linux:systemd:troubleshooting:timesyncd_refuse_ntp_via_dhcp [2022/01/09 16:34] (Version actuelle) yoann
Ligne 3: Ligne 3:
 ====== timesyncd n'utilise pas les serveur NTP acquis via 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.+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.
  
-Le script (hook) ''/etc/dhcp/dhclient-exit-hooks.d/timesyncd'' ne semble pas être déclenché.+En effet **NetworkManager** par défaut **ne communique pas directement avec systemd-timesyncd.service**.
  
-Une solution largement utilisée consiste à placer un script dans ''/etc/NetworkManager/dispatcher.d'' qui se charge de corriger se comportement pour systemd.+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.
  
  
Ligne 81: Ligne 81:
 nmcli connection up SFR_4380 nmcli connection up SFR_4380
 </code> </code>
 +
 +Les commandes ci-dessous permettent de créer les répertoires si nécessaire:
 +
 +<code bash>
 +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
 +</code>
 +
 +Créer le script /etc/NetworkManager/dispatcher.d/10-update-timesyncd
 +<code bash 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
 +</code>
 +
 +Rendre le script exécutable pour root seulement:
 +<code bash>
 +chmod ug+x /etc/NetworkManager/dispatcher.d/10-update-timesyncd
 +</code>
 +
 +S'assurer que NetworkManager Dispatcher est activé:
 +<code bash>
 +systemctl is-enabled NetworkManager-dispatcher.service 
 +</code>
 +
 +Après ces modifications, le serveur NTP de l'unité **timesyncd.service** est bien mis à jour par NetworkManager:
 +
 +<code bash>
 +# 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
 +</code>
 +
 +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 ===== ===== Références =====
  
   * https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=861769   * 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
sysadmin/linux/systemd/troubleshooting/timesyncd_refuse_ntp_via_dhcp.1641727700.txt.gz · Dernière modification : 2022/01/09 11:28 de yoann