[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