[Networkmanager] NetworkManager handling of NTP options
thaller at redhat.com
Fri Mar 10 21:07:49 UTC 2023
On Fri, 2023-03-10 at 21:50 +0100, mh at mike.franken.de wrote:
> Hi *,
> I am using systemd-timesyncd for managing the ntp server entries on
> clients. Because NetworkManager doesn't update timesyncd.conf, I
> wrote a
> dispatcher script, that is doing this job. The script is using the
> DHCP_NTP_SERVERS env vars, NetworkManager is providing to
> Everything works fine for DHCP connections, but as for my wireguard
> connection this doesn't work, because there isn't any setting for ntp
> - at least I couldn't find one.
> So I thought, I could add a static fallback entry to
> config in NETCONFIG_NTP_STATIC_SERVERS. Indeed this entry is written
> to some
> files, for example to chrony.servers.
> But I couldn't find any easy way to get that value from my dispatcher
> besides reading NETCONFIG_NTP_STATIC_SERVERS myself. Is this really
> the way to
> do this or am I missing something here?
Maybe NetworkManager should directly integrate with timesyncd or crony.
On the other hand, the dispatcher solution may not be too terrible...
Maybe in the future, a NetworkManager profile could just have a "ntp"
option, which the dispatcher script could read and use -- or, if NM
directly integrates with timesyncd/chrony to actively push those
> Whats more: If this static entry exists, NetworkManager is writing it
> to the
> above mentioned files even if it gets ntp servers from a DHCP
> connection. Is
> this correct?
> debug: ntp-runtime Module called
> debug: Resolved ntp-policy 'auto' for service 'NetworkManager' to
> 'STATIC_FALLBACK NetworkManager'
> debug: Static Fallback
> debug: Use NetworkManager policy merged settings
> debug: exec get_ntp_settings: /run/netconfig/NetworkManager.netconfig
> debug: get_ntp_settings: NTP_SERVER_LIST=''
> debug: exit get_ntp_settings: /run/netconfig/NetworkManager.netconfig
> debug: write_chrony_servers: 192.168.1.1
> debug: ntp servers written to /run/netconfig/chrony.servers
> debug: write_ntpd_servers: 192.168.1.1
> debug: ntp servers written to /run/ntp/servers-netconfig
I guess, you could hard code it in your script, like
if [ "$CONNECTION_UUID" = "$WIREGUARD_UUID" ]; then
if, you could honor certain files in etc, like
if [ -f "/etc/NetworkManager/ntp/$CONNECTION_UUID" ]; then
Of course, if you somehow like "NETCONFIG_NTP_STATIC_SERVERS", then the
your dispatcher script could read that variable from somewhere... you
can script whatever suits you.
Note that connection profiles already support arbitrary user-data, so
you could set a user-data in the profile like "my.ntp.servers=...".
That could be nice, but the major problem with that is, that nmcli
doesn't support getting/setting those fields, that makes it rather
cumbersome. The example script  shows how to access user-data from
> - openSUSE Tumbleweed 20230308
> - NetworkManager-1.42.2-1.1.x86_64
> - systemd-252.7-1.1.x86_64
More information about the Networkmanager