Your submission was sent successfully! Close

You have successfully unsubscribed! Close

Thank you for signing up for our newsletter!
In these regular emails you will find the latest updates about Ubuntu and upcoming events where you can meet our team.Close

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 8 months ago. Help improve this document in the forum.