In this tutorial, we will learn:
Prerequisites
1. Ubuntu 20.04 system.
2. ‘Sudo’ access and knowledge of Ubuntu networking.
Netplan fetches the network configuration information from a .yaml file (YAML format) . This file can reside inside the following netplan directories:
1. /etc/netplan/
2. /lib/netplan/
3. /run/netplan/
At the initial boot phase, Netplan creates backend config files inside the ‘/run’ directory and transfers control of devices to one of the supported network services/daemon: NetworkManger or Systemd-networkd.
Three commands are used in conjunction with Netplan:
netplan generate: This will generate a configuration for renderers or backends using the /etc/netplan.
netplan apply: It is used to apply all the configurations for the renderers.
netplan try: Apply a configuration, then wait for the user to confirm.
A basic Netplan configuration can be written as::
# we have used NetworkManager as a renderer in this e.g.
network:
version: 2
renderer: NetworkManager
Netplan reads the above configuration when a system boots and generates a file as ‘/run/NetworkManager/conf.d/10-globally-managed-devices.conf’. The system will be informed that all the network configuration and device management tasks will be handled by NetworkManger. There are currently two backends: NetworkManager and systemd-networkd. Only one can be supported at a time. The default renderer is ‘systemd-networkd’.
The configuration file for Netplan(.yaml) is stored in the directory ‘/etc/netplan’. In our case, there is no config file in this directory, and no IP is assigned to the interface ‘enp0s3’:
Let’s get started now to assign a static IP on this interface. Before we dive into this tutorial, you must read the below important note:
IMPORTANT NOTE: You should first check if the below configurations works by running the command:
In this way, we can roll back our changes in the config file after a specific timeout. The following screen will appear to confirm if you want to keep changes or revert back to the configuration.
For setting a single static IP for a system using Netplan, create a new configuration file as ‘/etc/netplan/config.yaml’. Let us modify the interface enp0s3 with the following details:
Gateway: default
subnet prefix: /24
Now create or open the configuration file in the directory ‘/etc/netplan/’ with the command:
Now put the following contents in this .yaml file:
version: 2
renderer: NetworkManager
ethernets:
enp0s3:
addresses:
– 192.168.186.204/24
routes:
– to: 0.0.0.0/0
via: 192.168.186.143
metric: 600
nameservers:
addresses:
– 8.8.8.8
To apply the above configuration, use the command:
Now check the IP with the ‘ip’ command:
In case we need to set multiple static IP on the above interface ‘enp0s3’, just add another address to the addresses key as shown below:
version: 2
renderer: NetworkManager
ethernets:
enp0s3:
addresses:
– 192.168.186.204/24
– 192.168.186.206/24
routes:
– to: 0.0.0.0/0
via: 192.168.186.143
metric: 600
nameservers:
addresses:
– 8.8.8.8
To apply the above configuration, use the command:
version: 2
renderer: NetworkManager
ethernets:
enp0s3:
addresses:
– 192.168.186.204/24
– 192.168.186.206/24
routes:
– to: 0.0.0.0/0
via: 192.168.186.143
metric: 600
– to: 0.0.0.0/0
via: 192.168.186.150
metric: 100
nameservers:
addresses:
– 8.8.8.8
To apply the above configuration, use the command:
In all the above configurations, we have used NetworkManager as renderer; you can switch to networkd by changing the renderer from NetworkManager to networkd. A sample version of config.yaml, in this case, will be as:
version: 2
renderer: networkd
Note: Since we have to configure Netplan using YAML, indentation (number of spaces) should be used properly. Otherwise, YAML will cause indentation errors like the one below:
In this guide, we have learned to set static IP using Netplan. Netplan config file is very space-sensitive as it uses the YAML format. Managing networking with Netplan is quite straightforward. You will not find it tough to master once you get used to it.
The latest interim release of Ubuntu introduces “devpacks” for popular frameworks like Spring, along with…
Ubuntu 25.04, codenamed “Plucky Puffin”, is here. This release continues Ubuntu’s proud tradition of integrating…
Ubuntu released its 20.04 (Focal Fossa) release 5 years ago, on March 23, 2020. As…
Focal Fossa will reach the End of Standard Support in May 2025, also known as…
Ubuntu MATE 25.04 is ready to soar! 🪽 Celebrating our 10th anniversary as an official…
Welcome to the Ubuntu Weekly Newsletter, Issue 887 for the week of April 6 –…