How To Set Up Static IP in Ubuntu

Sometimes you may need to configure static IP address in Linux. In this article, we will look at how to set up static IP in Ubuntu using Netplan utility. You can use it to change IP address permanently from command line.


How To Set Up Static IP in Ubuntu

Here are the steps to set up static IP in Ubuntu using Netplan.

Netplan allows you to easily configure network interface using YAML files to describe the interface. Once you have created the YAML (.yaml) file, Netplan will generate configuration files for the renderer tool of your choice. Netplan supports two renderers – NetworkManager and Systemd-networkd. We will use networkd renderer for our example.

You can set a single static IP, multiple static IP addresses, or an IP range. We will set static IP range 192.168.100.0-192.168.100.255 in this article.


1. Identify Ethernet Interface

Run the following command to identify the ethernet interface you want to configure.

$ ip link

You will see an output like the following, which lists all available network interfaces – one loopback interface and the rest are ethernet interfaces.

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:6c:13:63 brd ff:ff:ff:ff:ff:ff

For our example, we will use ens2 interface. lo is a loopback interface and cannot be used for this purpose.

Also read : How to Enable Key Based Authentication in SSH


2. Edit Netplan Configuration File

When you install Netplan, it will automatically create several YAML files (.yaml) at /etc/netplan.

If there are no YAML files at /etc/netplan on your system, run the following command to generate them.

$ sudo netplan generate 

You can edit any of the available files at /etc/netplan. They are all read by Netplan.

We will edit 01-netcfg.yaml

$ sudo vim /etc/netplan/01-netcfg.yaml

Also read : How to Run Cron Job Every 5,10,15 minutes

Add the following configuration lines in bold under ethernet section. Replace ens2 with the name of your ethernet interface, that you want to update.

network:
  version: 2
  renderer: networkd
  ethernets:
    ens2:
      dhcp4: no
      dhcp6: no
      addresses:
        - 192.168.100.21/24
      gateway4: 192.168.100.1
      nameservers:
          addresses: [8.8.8.8, 1.1.1.1]

You need to specify an IP range in CIDR notation. For example, we have specified 192.168.100.21/24 for IP range 192.168.100.0 – 192.168.100.255.

You can use a third-party tool to obtain CIDR notation of your IP range.

Now let us look at each of the added lines.

  • dhcp4: no and dhcp6: no disable DHCP
  • addresses: Specify the static IP address range under addresses: you can add one or more IPv4 or IPv6 IP addresses to be assigned to the network interface. You can also mention an IP range.
  • gateway4: Specify the gateway
  • nameservers: Set the IP addresses of the nameservers.

Save and close the file.

Also read : How to Use rsync Command in Linux


3. Apply changes

Run the following command to apply changes.

$ sudo netplan apply

Verify the changes by running the following command. Replace ens2 with your ethernet interface that you want to be modified.

ip addr show dev ens2

You will see the following output. The part in bold indicates the static IP range configured for your network interface.

2: ens2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 08:00:27:6c:13:63 brd ff:ff:ff:ff:ff:ff
    inet 192.168.121.221/24 brd 192.168.121.255 scope global dynamic ens3
       valid_lft 3575sec preferred_lft 3575sec
    inet6 fe80::5054:ff:feb0:f500/64 scope link 
       valid_lft forever preferred_lft forever

Leave a Reply

Your email address will not be published. Required fields are marked *