[Bug 1979674] Re: netplan ip leases cannot find NetworkManager internal DHCP leases
Launchpad Bug Tracker
1979674 at bugs.launchpad.net
Thu Aug 18 23:54:14 UTC 2022
This bug was fixed in the package netplan.io - 0.105-0ubuntu1
---------------
netplan.io (0.105-0ubuntu1) kinetic; urgency=medium
* New upstream release: 0.105
- Add support for VXLAN tunnels (#288), LP: #1764716
- Add support for VRF devices (#285), LP: #1773522
- Add support for InfiniBand (IPoIB) (#283), LP: #1848471
- Allow key configuration for GRE tunnels (#274), LP: #1966476
- Allow setting the regulatory domain (#281), LP: #1951586
- Documentation improvements & restructuring (#287)
- Add meson build system (#268)
- Add abigail ABI compatibility checker (#269)
- Update of Fedora RPM spec (#264)
- CI improvements (#265, #282)
- Netplan `set` uses the consolidated libnetplan YAML parser (#254)
- Refactor ConfigManager to use the libnetplan YAML parser (#255)
- New `netplan_netdef_get_filepath` API (#275)
- Improve NetworkManager device management logic (#276), LP: #1951653
Bug fixes:
- Fix `apply` netdev rename/create race condition (#260), LP: #1962095
- Fix `try` timeout (#271), LP: #1967084
- Fix infinite timeouts in ovs-vsctl (#266), Closes: #1000137
- Fix offload options using tristate setting (#270), LP: #1956264
- Fix rendering of NetworkManager passthrough WPA (#279), LP: #1972800
- Fix CLI crash on LibNetplanException (#286)
- Fix NetworkManager internal DHCP client lease lookup (#284), LP: #1979674
* Update symbols file for 0.105
* d/patches/: Drop patches, applied upstream
* d/p/autopkgtest-fixes.patch: Refresh
* d/control: bump Standards-Version, no changes needed
* d/control, d/tests/control: suggest/add iw for setting a regulatory domain
* d/control: merge with Debian, dropping deprecated versioned depends
* d/control: Update Vcs-* tags for Ubuntu
* d/watch: sync with Debian
* d/u/metadata: sync with Debian
* d/tests: partially merge with Debian
-- Lukas Märdian <slyon at ubuntu.com> Thu, 18 Aug 2022 14:53:33 +0200
** Changed in: netplan.io (Ubuntu)
Status: Triaged => Fix Released
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to netplan.io in Ubuntu.
Matching subscriptions: foundations-bugs
https://bugs.launchpad.net/bugs/1979674
Title:
netplan ip leases cannot find NetworkManager internal DHCP leases
Status in netplan.io package in Ubuntu:
Fix Released
Bug description:
In 22.04 Desktop aarch64 edition I'm using on an ARM host, the default
Netplan renderer is NetworkManager which uses its' own DHCP client in
lieu of dhclient. However, Netpan doesn't appear to be respecting this
preference for the DHCP client is uses.
Expected Behaviour:
===================
As NetworkManager is the rendered specified in
`/etc/netplan/01-network-manager-all.yaml`, it should use
NetworkManager's tooling to manage the networking, inclusive of the
DHCP client if no alternative was specified.
Diagnostics:
============
Although `sudo systemctl status NetworkManager` states that
NetworkManager's own DHCP client is being used, other evidence
suggests otherwise.
NetworkManager reports it uses the `internal` DHCP server:
----------------------------------------------------------
sudo systemctl status NetworkManager
● NetworkManager.service - Network Manager
Loaded: loaded (/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2022-06-23 12:35:52 BST; 11s ago
Docs: man:NetworkManager(8)
Main PID: 6437 (NetworkManager)
Tasks: 4 (limit: 738)
Memory: 3.9M
CPU: 236ms
CGroup: /system.slice/NetworkManager.service
└─6437 /usr/sbin/NetworkManager --no-daemon
Jun 23 12:35:52 terrence-desktop systemd[1]: Starting Network Manager...
Jun 23 12:35:52 terrence-desktop systemd[1]: Started Network Manager.
Jun 23 12:35:52 terrence-desktop NetworkManager[6437]: <debug> [1655984152.7199] device[1ef8855a3cc92d44] (lo): hw-addr: unable to read permanent MAC address (use current: 00:00:00:00:>
Jun 23 12:35:52 terrence-desktop NetworkManager[6437]: <info> [1655984152.7210] dhcp-init: Using DHCP client 'internal'
Jun 23 12:35:52 terrence-desktop NetworkManager[6437]: <debug> [1655984152.7260] device[5b1b0e88253999d6] (eth0): speed is now 1000 Mb/s
But `netplan ip leases eth0` thinks otherwise:
----------------------------------------------
sudo nmcli con
NAME UUID TYPE DEVICE
Profile 1 d6b936ad-d73f-4898-a826-edbb61d6155a ethernet eth0
netplan-eth0 626dd384-8b3d-3690-9511-192b2c79b3fd ethernet --
sudo netplan ip leases eth0
No lease found for interface 'eth0': [Errno 2] No such file or directory: '/var/lib/NetworkManager/dhclient-d6b936ad-d73f-4898-a826-edbb61d6155a-eth0.lease'
Remark that the lease file's name is prefixed with "dhclient"; clearly not 'internal' as referenced in the `systemctl status NetworkManager` output above. Also remark that in the `nmcli con` for "netplan-eth0" the specified device is "--"
Attempted Remediation:
======================
For the sake of completeness, I toggled the default value for
`managed=` to "true":
[ifupdown]
#managed=false
managed=true
in '/etc/NetworkManager/NetworkManager.conf' and executed
netplan --debug generate
netplan --debug apply
systemctl restart NetworkManager
That did't change the behaviour.
I also attempted to delete the `netplan-eth0` connection so there
would be no ambiguity and only one connection available for
NetworkManager to use:
nmcli con delete netplan-eth0
Then I again restarted the Netplan & NetworkManager gears:
netplan --debug generate
netplan --debug apply
systemctl restart NetworkManager
Still no luck.
The output of the 'netplan --debug generate` and `netplan --debug
apply` are shown below:
terrence at terrence-desktop:~$ sudo netplan --debug generate
DEBUG:command generate: running ['/lib/netplan/generate']
** (generate:2922): DEBUG: 16:29:46.320: starting new processing pass
** (generate:2922): DEBUG: 16:29:46.320: We have some netdefs, pass them through a final round of validation
** (generate:2922): DEBUG: 16:29:46.320: eth0: setting default backend to 2
** (generate:2922): DEBUG: 16:29:46.320: Configuration is valid
** (generate:2922): DEBUG: 16:29:46.321: Generating output files..
** (generate:2922): DEBUG: 16:29:46.321: networkd: definition eth0 is not for us (backend 2)
** (generate:2922): DEBUG: 16:29:46.322: openvswitch: definition eth0 is not for us (backend 2)
terrence at terrence-desktop:~$ sudo netplan --debug apply
** (generate:2930): DEBUG: 16:29:53.252: starting new processing pass
** (generate:2930): DEBUG: 16:29:53.252: We have some netdefs, pass them through a final round of validation
** (generate:2930): DEBUG: 16:29:53.252: eth0: setting default backend to 2
** (generate:2930): DEBUG: 16:29:53.252: Configuration is valid
** (generate:2930): DEBUG: 16:29:53.254: Generating output files..
** (generate:2930): DEBUG: 16:29:53.254: networkd: definition eth0 is not for us (backend 2)
** (generate:2930): DEBUG: 16:29:53.254: openvswitch: definition eth0 is not for us (backend 2)
DEBUG:no netplan generated networkd configuration exists
DEBUG:netplan generated NM configuration changed, restarting NM
DEBUG:eth0 not found in {}
DEBUG:Merged config:
network:
ethernets:
eth0:
dhcp4: true
renderer: NetworkManager
version: 2
DEBUG:Link changes: {}
DEBUG:netplan triggering .link rules for lo
DEBUG:netplan triggering .link rules for eth0
DEBUG:netplan triggering .link rules for wlan0
** (process:2928): DEBUG: 16:29:53.743: starting new processing pass
** (process:2928): DEBUG: 16:29:53.744: We have some netdefs, pass them through a final round of validation
** (process:2928): DEBUG: 16:29:53.744: eth0: setting default backend to 2
** (process:2928): DEBUG: 16:29:53.744: Configuration is valid
DEBUG:eth0 not found in {}
DEBUG:Merged config:
network:
ethernets:
eth0:
dhcp4: true
renderer: NetworkManager
version: 2
terrence at terrence-desktop:~$
I increased logging verbosity on eth0 for DHCP in `/etc/NetworkManager/NetworkManager.conf`:
[logging]
# https://developer-old.gnome.org/NetworkManager/stable/NetworkManager.conf.html
#level=INFO
#level=DEBUG
domains=ETHER:DEBUG,DHCP4
This revealed other interesting things happening:
`journalctl -u NetworkManager.service | grep DHCP`
<SNIP>
Jun 22 14:02:44 terrence-desktop NetworkManager[4833]: <debug> [1655902964.3488] dhcp-init: enabled DHCP client 'dhclient'
Jun 22 14:02:44 terrence-desktop NetworkManager[4833]: <debug> [1655902964.3489] dhcp-init: enabled DHCP client 'internal'
Jun 22 14:02:44 terrence-desktop NetworkManager[4833]: <debug> [1655902964.3489] dhcp-init: enabled DHCP client 'systemd' (undocumented internal plugin)
Jun 22 14:02:44 terrence-desktop NetworkManager[4833]: <debug> [1655902964.3490] dhcp-init:
enabled DHCP client 'nettools' (undocumented internal plugin)
Jun 22 14:02:44 terrence-desktop NetworkManager[4833]: <info> [1655902964.3491] dhcp-init: Using DHCP client 'internal'
<SNIP>
Looks like NetworkManager is starting dhclient. Without increasing the
verbosity, I'd only have seen the message: "dhcp-init: Using DHCP
client 'internal'".
What Worked:
============
Although I could not get NetworkManager's DHCP Client to actually be
used- despite what the `status` output said- I DID manage to get
'netplan ip leases eth0` to report the DHCP client info without error
by adding the following directive to `NetworkManager.conf`:
[main]
dhcp=dhclient
Now the `netplan ip leases <interface>` command succeeds in returning
the actually DHCP lease info:
sudo netplan ip leases eth0
[sudo] password for terrence:
lease {
interface "eth0";
fixed-address 192.168.1.24;
option subnet-mask 255.255.255.240;
option dhcp-lease-time 43200;
option routers 192.168.1.18;
option dhcp-message-type 5;
option dhcp-server-identifier 192.168.1.18;
option domain-name-servers 192.168.1.18,8.8.8.8;
option ntp-servers 216.239.35.0;
option domain-name "F1Linux.com";
renew 4 2022/06/23 21:12:05;
rebind 5 2022/06/24 02:27:19;
expire 5 2022/06/24 03:57:19;
}
lease {
interface "eth0";
fixed-address 192.168.1.24;
option subnet-mask 255.255.255.240;
option routers 192.168.1.18;
option dhcp-lease-time 43200;
option dhcp-message-type 5;
option domain-name-servers 192.168.1.18,8.8.8.8;
option dhcp-server-identifier 192.168.1.18;
option ntp-servers 216.239.35.0;
option domain-name "F1Linux.com";
renew 4 2022/06/23 21:38:53;
rebind 5 2022/06/24 02:33:19;
expire 5 2022/06/24 04:03:19;
}
The DHCP Client specified in ` systemctl status NetworkManager` now aligns with the the output of `netplan ip leases <interface>`:
sudo systemctl status NetworkManager
● NetworkManager.service - Network Manager
Loaded: loaded (/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2022-06-23 18:29:17 BST; 8s ago
Docs: man:NetworkManager(8)
Main PID: 2674 (NetworkManager)
Tasks: 4 (limit: 738)
Memory: 4.4M
CPU: 254ms
CGroup: /system.slice/NetworkManager.service
└─2674 /usr/sbin/NetworkManager --no-daemon
Jun 23 18:29:17 terrence-desktop systemd[1]: NetworkManager.service: Deactivated successfully.
Jun 23 18:29:17 terrence-desktop systemd[1]: Stopped Network Manager.
Jun 23 18:29:17 terrence-desktop systemd[1]: NetworkManager.service: Consumed 2.177s CPU time.
Jun 23 18:29:17 terrence-desktop systemd[1]: Starting Network Manager...
Jun 23 18:29:17 terrence-desktop systemd[1]: Started Network Manager.
Jun 23 18:29:18 terrence-desktop NetworkManager[2674]: <debug> [1656005358.0158] device[931047a55940e5d6] (lo): hw-addr: unable to read permanent MAC address (use current: 00:00:00:00:>
Jun 23 18:29:18 terrence-desktop NetworkManager[2674]: <info> [1656005358.0161] dhcp-init: Using DHCP client 'dhclient'
Jun 23 18:29:18 terrence-desktop NetworkManager[2674]: <debug> [1656005358.0209] device[b6fce29bc752c44c] (eth0): speed is now 1000 Mb/s
My "Working" Configurations:
============================
I've tried the above even with everything after `dhcp4: yes`
commented-out to ensure the netplan stuff was reduced to the simplest
config to reduce the chance of a configuration error here breaking
things:
`/etc/netplan/01-network-manager-all.yaml`
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager
ethernets:
eth0:
dhcp4: yes
dhcp4-overrides:
use-ntp: true
/etc/NetworkManager/NetworkManager.conf
[main]
plugins=ifupdown,keyfile
dhcp=dhclient
[ifupdown]
#managed=false
managed=true
[device]
wifi.scan-rand-mac-address=no
[logging]
# https://developer-old.gnome.org/NetworkManager/stable/NetworkManager.conf.html
#level=INFO
#level=DEBUG
domains=ETHER:DEBUG,DHCP4
Conclusion:
===========
I've looked at this from a lot of different angles and unless I'm
misinterpreting the above- I don't believe so- it appears that Netplan
is not respecting the declaration of "NetworkManager" in the
`renderer` directive and preferring dhclient instead.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/netplan.io/+bug/1979674/+subscriptions
More information about the foundations-bugs
mailing list