NetworkManager and netplan

Ubuntu Core’s default Netplan configuration defers networking to networkd.

When Network Manager is installed (snap install network-manager), a new Netplan configuration replaces networkd with network-manager, taking control of all networking devices.

This behaviour can be controlled with the defaultrenderer snap option. By default, this is set to true to allow network-manger to control networking. If set to false, network-manager reverts the default Netplan configuration, giving control of network devices back to networkd.

snap set network-manager defaultrenderer=false

Note that only devices explicitly configured within Netplan configuration files, usually only ethernet or wifi, are given back to networkd.

YAML backend

From core20 onwards, network-manager been modified to use a YAML backend that’s based on libnetplan functionality.

The YAML backend replaces the keyfile format used by Network Manager with /etc/Netplan/*.yaml.

The default configuration, for example, can be output by running the cat sudo cat /etc/netplan/00-snapd-config.yaml to produce show following output:

# This is the network config written by 'console-conf'
network:
  ethernets:
    enp0s2:
      dhcp4: true
  version: 2

On boot the Netplan.io generator processes all of the YAML files and renders them into the corresponding a Network Manager configuration in /run/NetworkManager/system-connections. The usual Netplan generate/try/apply can be used to re-generate this configuration after the YAML was modified.

If a connection profile is modified or created from within Network Manager, such as updating a WiFi password with nmcli, Network Manager will create an ephemeral keyfile that will be immediately converted to Netplan YAML and stored in /etc/Netplan. Network Manager automatically calls Netplan generate to re-process the current YAML configuration to render Network Manager connection profiles in /run/NetworkManager/system-connections.

The system wide network configuration can be read with sudo netplan get:

network:
  version: 2
  renderer: NetworkManager
  ethernets:
    enp0s2:
      dhcp4: true

System wide network settings can be modified with netplan set:

sudo netplan set ethernets.enp0s2.addresses=[10.0.2.15/24]

Configuration options that are not supported by the Network Manager YAML backend are stored in a networkmanager.passthrough YAML mapping to ensure they are not lost during the Netplan conversion.

This page was last modified 2 months ago. Help improve this document in the forum.