How to Configure Networking on Ubuntu with Netplan

Netplan is the Ubuntu network configuration tool in all recent Ubuntu versions. Netplan is based on a YAML-based configuration system that simplifies the configuration process. It has replaced the old /etc/network/interfaces configuration file we used to configure network interfaces in Ubuntu and other Linux distributions.

In this tutorial, you will learn how to configure networks in Ubuntu using Netplan. We will look at both static and dynamic IP configurations. I will use Ubuntu 22.04 LTS to describe the process in this article, but the same steps also apply to the older Ubuntu 20.04.

Network configuration using Netplan

You can find the new configuration files at /etc/netplan/*.yaml. Ubuntu server generates Netplan configuration file for system-networkd named 01-netcfg.yaml, while Ubuntu desktop generates a Netplan configuration file for Network-Manager named 01-network-manager-all.yaml.

As I am working on Ubuntu desktop, I have 01-network-manager-all.yaml file in my /etc/netplan directory for network configuration. 01-network-manager-all.yaml is used to configure the first interface. If you have multiple interfaces, use 02-network-manager-all.yaml for the second interface. Netplan applies the configuration in the numerical order. That means 01 file will be applied before the 02 file.

Now let’s move towards network configuration. Follow the steps below to configure static or dynamic IP addressing in Ubuntu:

1. First, find the name of the active network interfaces that you want to configure. To do so run the following command:

$ ip a

IP command

Note the interface name that you want to configure using Netplan.

2. The Netplan default configuration file is under the directory /etc/netplan. You can find that using the following command:

$ ls /etc/netplan/

Netplan configuration file

3. To view the content of Netplan network configuration file, run the following command:

$ cat /etc/netplan/*.yaml

Content of the Netplan network config file

4. Now you will need to open the configuration file in any editor: As I am using Nano editor to edit the configuration file, so I will run:

$ sudo nano /etc/netplan/*.yaml

Edit the network configuration

5. Update the configuration file as per your networking needs. For static IP addressing, add the IP address, Gateway, DNS information while for dynamic IP addressing, there is no need to add this information as it will get this information from DHCP server. Use the following syntax to edit the configuration file.

network:
    Version: 2
    Renderer: NetworkManager/ networkd
    ethernets:
       DEVICE_NAME:
          Dhcp4: yes/no
          Addresses: [IP_ADDRESS/NETMASK]
          Gateway: GATEWAY
          Nameservers:
             Addresses: [NAMESERVER_1, NAMESERVER_2]

Where

  • DEVICE_NAME: Name of the interface.
  • Dhcp4: yes or no depending upon dynamic or static IP addressing
  • Addresses: IP address of the device in prefix notation. Do not use netmask.
  • Gateway: Gateway IP address to connect to an outside network
  • Nameservers: Address of DNS name servers

Note that YAML files are rather strict in the indentation. Make use of spaces for indentation, not tabs. Otherwise, you will encounter an error.

Configure static IP address in Ubuntu

To manually configure an IP address, use the above configuration file syntax and add the IP address, Gateway, and DNS server information. Here you can see my configuration file for static IP addressing:

IP address configuration

Configure Dynamic IP address in Ubuntu

To obtain IP addressing from the DHCP server, use the same above configuration file syntax. But do not add the IP address, Gateway, and DNS server information.

Here you can see my configuration file for dynamic IP addressing:

Ubuntu DHCP Configuration for Network card

Once you have done with the static or dynamic IP configuration, save, and exit the configuration file.

Testing configuration

Before applying any changes, we will test the configuration file. Run the following command as sudo to test configurations:

$ sudo netplan try

Test config with netplan try command

If there is no issue, it will return the configuration accepted message. If the configuration file fails the test, it will be reverted to a previous working configuration.

Apply configuration

Now apply the new configurations by running the following command as sudo:

$ sudo netplan apply

Apply network config changes

In case you see any error, try debugging to investigate the problem. To run debug, use the following command as sudo:

$ sudo netplan –d apply

Restart the network service

Once all the configurations are successfully applied, restart the Network-Manager service by running the following command:

$ sudo systemctl restart network-manager

If you are using a Ubuntu Server, instead use the following command:

$sudo systemctl restart system-networkd

Verify IP address

Now to verify if the new configurations are successfully applied, run the following command to verify the IP address:

$ ip a

Whether you have an Ubuntu server or desktop, you can simply use Netplan to configure static or dynamic IP addressing without needing any complex configuration.