Skip to main content

Using static IPs in Linux

It is often a requirement to assign static IP addresses to some important and permanent network interfaces. This is to avoid setting up a local DHCP server or relying on IP given by your network provider which may not be stable.

This post shows steps to configure static IPs in Linux using Ubuntu 16.04 and Ubuntu 18.04 distros. We are considering two distros as network configuration has changed significantly in Ubuntu 18.04.

There are two general steps to be followed:
1. Configure the network interface and assign a static IP.
2. Restart interface for the changes to take effect.

Ubuntu 16.04

 The current interfaces on the system are as follows:



As can be seen, enp0s8 interface does not have any IP. Let's assign a static IP to it. In case you already have an interface with a DHCP assigned IP, you just need to change that IP and make it static.

Edit the /etc/network/interfaces file and add the following code block. Prefer using the IP address range available for private use (see [1]) while deciding an IP. I want to add the server to the local 10.0.2.1/24 network. The word "static" at the end of second line indicates that this is a static IP.


Now restart the network interface with the following command:
sudo ifdown enp0s8 && sudo ip add flush dev enp0s8 && sudo ifup --force enp0s8

In case this doesn't work, try restarting the networking service:
sudo systemctl restart networking.service

While this has always worked for me, in case this doesn't work, check the configuration again and restart the server:
sudo init 6
OR
sudo reboot
Upon restart the interface should be configured with static IP.

This is my ifconfig output:

Let's see how to assign a static IP for Ubuntu 18.04 before testing.

 

Ubuntu 18.04

From Ubuntu 18.04, Ubuntu shifted to Netplan network configuration. This uses yaml based configuration setup. While the method of setup changes, the steps remain the same.

The current interfaces on the system are as follows:

Here also, enp0s8 interface does not have any IP.

Edit the `/etc/netplan/50-cloud-init.yaml` file (NOTE: the file name may be different depending on system) and add the following code block. Here also, we will use an IP from the 10.0.2.0/24 network. The line "dhcp4: no" indicates that this is a static IP.


Apply the configuration using the following command:
sudo netplan apply
Use --debug flag for debugging purposes


It can be seen in the above screenshot that the new config has been merged in the existing config. Let's check our interface with ifconfig,


The IP has been assigned successfully.

Testing

Make sure you are on the server which is in the same network as the network of static IPs for testing purposes. Here we will use the two servers that we have set the static IP for.

PING test:


SSH test


 

Use Cases:

Static IPs are useful when:
  1. The DHCP server is unstable or insufficient to manage a large number of servers. 
  2. Another possible issue is that the static IP lease expires frequently and takes time to reestablish causing frequent outages.

Have you faced any such issues with your DHCP server? Have you used any innovative strategies for static IP assignment? Let me know in the comments.


References:

[1] https://en.wikipedia.org/wiki/Private_network 

Comments

Popular posts from this blog

The Changing Nature of Reality Shows in India

It's been almost two decades since the modern day reality shows started in India. And the nature of these reality shows has changed drastically during this time. "Kaun Banega Crorepati (KBC)" is no longer a show just about knowledge, "Indian Idol" and "Sa Re Ga Ma Pa" are no longer just singing shows. They all have become entertainment shows. This post is an attempt to find out the reasons of this transition, analyze the current nature of these shows and assess their impact. Reasons of this change Competition from TV Serials / Soap Opera TV serials or Soap Opera as it is commonly known is very popular among the Indian masses. India being a country where family ties are very strong, for a long time, the main theme in most popular TV shows has been "family drama". Additionally, there is no dearth of TV channels, actors, producers and the crew. TV show and film production is a major employment generator in India. And so the episodes of serials a...

Local domain name resolution using /etc/hosts

The /etc/hosts file is a powerful mechanism for managing the information about hosts in the local network in the absence of a local DNS server. Setup We have 4 VMs in the local /24 network. The following are the details: vm-1-ubuntu-16-04 - 10.0.1.11 vm-2-ubuntu-16-04 - 10.0.1.12 vm-1-ubuntu-18-04 - 10.0.1.21 vm-2-ubuntu-18-04 - 10.0.1.22 The VMs are reachable via their IP address but not by their hostnames. This is problematic because we have to remember their IP addresses everytime we want to access these hosts. It is would be much simpler to remember and access the servers by their hostnames. For that we need some sort of mapping between the IP addresses and their corresponding host names. There are 3 common ways of achieving this mapping. Setup a DNS server which handles resolution for your local network. Use an existing DNS server of the local Internet Service Provider (ISP) or any other higher level ISP. Note that a public static IP address is required for this s...

Manage system hostname with hostnamectl

This article explains the simplest method to set hostname and Fully Qualified Domain Name (FQDN/fqdn) of any given system using hostnamectl Check that hostnamectl is present on the system by typing it in a shell. You will see output similar to the one given below. In case hostnamectl is not found, it is a good idea to install it. sudo apt update sudo apt install systemd-services Verify the static hostname given above using the following command: Also verify it by checking /etc/hostname file Change the hostname and set the desired hostname by running the following command and authenticating with the password. hostnamectl set-hostname <hostname> Start a new shell session or reconnect to the server to see the change in the hostname Again run above steps to verify that hostname has been changed correctly. Configure FQDN While the above process may suffice to identify the host in the local network, it is not enough when the host is to be identifi...