Cheap VPS & Xen Server

Residential Proxy Network - Hourly & Monthly Packages

Linux Basics – Set A Static IP On Ubuntu


This tutorial explains how to set a static IP on an Ubuntu system from the command line. It covers the network configuration for all recent Ubuntu versions and includes instructions to configure a static IP address, set the hostname and configure name resolving.

Network configuration on Ubuntu 17.10 and newer

The network configuration has been changed completely with Ubuntu 17.10. A new tool named Netplan has been introduced by Canonical (the company that develops the Ubuntu Linux distribution) for network setting management which will be used in all new Ubuntu versions starting with the 17.10 release. The former network configuration file /etc/network/interfaces is not used anymore.

Configure a Static IP Address with Netplan

Here the steps to configure a static IP address with Netplan. The Netplan configuration files are located in the directory /etc/netplan/. The default configuration file is /etc/netplan/01-netcfg.yaml.

Open the network config file with an editor:

sudo nano /etc/netplan/01-netcfg.yaml

The configuration syntax is in Python programming language (.yaml format), so the indentation of the lines is important!

Here is an example for a static IPv4 address 192.168.1.100 on the first network interface ens33 and gateway IP 192.168.1.1. The server will use the free Google DNS servers 8.8.8.8 and 8.8.4.4 to for name resolving.

# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
  renderer: networkd
  ethernets:
    ens33:
      dhcp4: no
      dhcp6: no
      addresses: [192.168.1.100/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8,8.8.4.4]

An IPv6 address can be added in the addresses line, separated by a comma. Example:

# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
  renderer: networkd
  ethernets:
    ens33:
      dhcp4: no
      dhcp6: no
      addresses: [192.168.1.100/24, '2001:1::1/64']
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8,8.8.4.4]

It is important that you wrap the IPv6 address into single quotes, you will get a syntax error otherwise.

To apply the changes, run:

sudo netplan apply

Or use it with the –debug switch to get some useful output if parsing of the netplan config file was successful.

sudo netplan –debug apply

Configure a DHCP address with Netplan

Here is the configuration to get the network configuration for IPv4 and IPv6 from a DHCP server.

# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
 version: 2
 renderer: networkd
 ethernets:
   ens33:
     dhcp4: yes
     dhcp6: yes

To apply the changes, run:

sudo netplan apply

More Netplan config options

Netplan is a complex new configuration system to configure network cards, virtual devices, VLANs and bridges in Ubuntu 17.10. For more examples and an in depth explanation of the syntax, see the man page.

Network configuration on Ubuntu 12.04 – 17.04 (incl. Ubuntu 16.04 LTS)

Step 1: Configure the network interface

In this step, you will manually configure your network interface by editing the following files using your preferred text editor(nano gedit vi). For the purpose of this example, I’m using the “nano” editor. You can edit the appropriate file by entering the following command into the terminal:

You can copy and paste directly from this line.

sudo nano /etc/network/interfaces

Enter your root password, once your preferred editor opens the file you can see this on older Ubuntu versions:

auto lo eth0
iface lo inet loopback
iface eth0 inet dynamic

Ubuntu Systems with systemd (like Ubuntu 16.04 and newer), the network interface is named ens33 instead of eth0 now and the word ‘dynamic’ has been replaced with ‘dhcp’.

A configuration where the IP address get’s assigned automatically by DHCP will look like this:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto ens33
iface ens33 inet dhcp

Statically configured network cards will have a section like this on older Ubuntu versions:

auto lo eth0
iface lo inet loopback
iface eth0 inet static
        address xxx.xxx.xxx.xxx(enter your ip here)
        netmask xxx.xxx.xxx.xxx
        gateway xxx.xxx.xxx.xxx(enter gateway ip here,usually the address of the router)

Here is an example for an older Ubuntu Release:

auto lo eth0
iface lo inet loopback
iface eth0 inet static
	address 192.168.1.100
	netmask 255.255.255.0
	gateway 192.168.1.1

And here an example for Ubuntu 16.04 and newer:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# test

# The primary network interface
auto ens33
iface ens33 inet static
 address 192.168.1.100
 netmask 255.255.255.0
 network 192.168.1.0
 broadcast 192.168.1.255
 gateway 192.168.1.1
 dns-nameservers 8.8.8.8 8.8.4.4

And here the complete network configuration file from an Ubuntu 16.04 system.

If you use “nano” editor to edit the configuration file, type Ctrl+x to save changes.

Save modified buffer (ANSWERING “No” WILL DESTROY CHANGES) ?

<—Type “y”

File Name to Write: interfaces

<—ENTER

Step 2: Configure the DNS servers

Changes in /etc/resolv.conf are required only on Systems with Ubuntu < 14.04, for newer Ubuntu versions the nameservers get configured in the /etc/network/interfaces file.

a) Ubuntu versions < 14.04

In this step, you will manually configure your dns configuration file.

sudo nano /etc/resolv.conf

Once your editor opens the file you want to enter the following information…

nameserver xxx.xxx.xxx.xxx(enter your dns server ip)
nameserver xxx.xxx.xxx.xxx(enter your alt dns server ip)

If you use “nano” editor, type Ctrl+x to save changes.

Save modified buffer (ANSWERING “No” WILL DESTROY CHANGES) ?

<—Type “y”

File Name to Write: resolv.conf

<—ENTER

Here is an example:

nameserver 8.8.8.8
nameserver 8.8.4.4

b) Ubuntu versions 14.04 and newer

Open the /etc/network/interfaces file again and add a line dns-nameservers 8.8.8.8 right after the gateway line.

sudo nano /etc/network/interfaces

auto lo
iface lo inet loopback
iface ens33 inet static
        address xxx.xxx.xxx.xxx(enter your ip here)
        netmask xxx.xxx.xxx.xxx
        gateway xxx.xxx.xxx.xxx(enter gateway ip here,usually the address of the router)
        dns-nameservers 8.8.8.8

The nameservers 8.8.8.8 and 8.8.4.4 are provided by Google for public use, so you can use them in your network configuration.

If you use “nano” editor, type Ctrl+x to save changes.

Save modified buffer (ANSWERING “No” WILL DESTROY CHANGES) ?

<—Type “y”

File Name to Write: interfaces

<—ENTER

Step 3: Restart networking

Manually restart your network interface with the new settings.

For Ubuntu < 14.04 use the networking init script:

sudo /etc/init.d/networking restart

This should return a result that looks like the following:

*Reconfiguring network interfaces… [OK]

For Ubuntu versions 14.04 and newer use systemctl instead:

systemctl restart ifup@eth0

At this point you can check if the settings are correct:

ifconfig

If everything is correct you will get this result.

eth0      Link encap:Ethernet  direcciónHW 00:33:27:46:2v:34
Direc. inet:192.168.1.101  Difus.:0.0.0.0  Másc:255.255.255.0

Configure the Hostname

The hostname of an Ubuntu Server or Desktop is being configured in the files /etc/hostname and /etc/hosts. The /etc/hostname file sets the actual system hostname while /etc/hosts is used for the local name resolution.

In this example, I will change the hostname of my system to obelix.example.com.

First, edit the /etc/hostname file

sudo nano /etc/hostname

The hostname file contains the local part of the hostname only. The local part here is “obelix”. Change the content of the /etc/hostname file to:

obelix

and save the file. The hostname file as it looks in nano after editing:

Then open the /etc/hosts file with an editor:

sudo nano /etc/hosts

and change the line that starts with the IP address of the system like this:

192.168.1.100   obelix.example.com     obelix

Here a screenshot of the hosts file.

The format is like this:

[IP Addesss] [full hostname incl. domain] [local part of the hostname]

Finally, restart the system to apply the hostname change.

See you…

 

Comments

comments