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 [email protected]
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...
Suggested articles
29 Comment(s)
Comments
This command is deprecated on new debian and ubuntu:
/etc/init.d/networking restart
solution is a use command:
ifdown eth0 && ifup eth0
Bless you. I saw that error and was noticing I had to completely restart to get the command to take. I was not liking that and once I scrolled down to see if someone saw the same, I found your post. Thank you so much!
What´s the ubuntu version, 11.10 or 12.04?
I dunno about you but I don't like using the resolv.conf, I prefer to set the the nameserver to read my routers, and typically I'll use google's 8.8.8.8 or 8.8.4.4
Heres a small guide I found if anyone is interested.
http://ubuntuserverhelp.com/setting-up-a-static-ip/
I used to use the command line method before Ubuntu 12.04 but now prefer the network manager method of setting a static IP.
This is only because after using this method then opening the connection manager to check what was showing (I know I could have checked on cli but dont like to be limited!) all the settings were reset to dhcp and my modifications were reset!
I didn't really fancy removing the network manager. Anybody else feel like they are being forced to use graphical methods more and more with newer Ubuntu releases?
Hmm any idea why you don't just do everything within the /etc/network/interfaces configuration folder like here: http://draalin.com/setting-up-a-static-ip-address-in-ubuntu/
Or does it make more sense to actually split things up like you did within the resolv.conf and interfaces configuration folder?
Just what I needed. Thanks!
Hey this is not working on 14.04 Server Edition.
auto eth0iface eth0 inet static address 173.244.42.82 netmask 255.255.255.240 gateway 173.244.42.81 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 8.8.8.8
resolv.conf
nameserver 8.8.8.8nameserver 8.8.4.4
ifconfig
eth0 Link encap:Ethernet HWaddr 00:25:90:3a:c2:36 inet addr:173.244.42.82 Bcast:173.244.42.95 Mask:255.255.255.240 inet6 addr: fe80::225:90ff:fe3a:c236/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:406 errors:0 dropped:174 overruns:0 frame:0 TX packets:182 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:40001 (40.0 KB) TX bytes:28133 (28.1 KB) Interrupt:16 Memory:fb5e0000-fb600000
It is working fine fro me on Ubuntu 14.04 server. Your ifconfig output shows that the IP settings got applied correctly. If you have problems with your IP setup, then please post in the forum to get help.
i have followed the above procedure for setting up interfaces of my ubuntu 14.04 for my eth0 interface not showiing ip address after giving ifconfig command
You should specify what to do for version 14.04...
For me it's unclear what to do since < 14.04 and > 14.04 does not match 14.04 in either case....
Thanks very very match my friend!! This issues it's verry helpfulyy.
Hi,
Can you guide me to set the static IP in Ubuntu 16.04
The instructions above are valid for Ubuntu 16.04 as well.
I changed my IP in my ubuntu by using this method.
thanks.
Save modified buffer (ANSWERING "No" WILL DESTROY CHANGES) ?... any kind of talk will ....
I did exactly as instructed, and did not get the desired result, in fact, nothing changed!
I also tried in version 16.04 but did not work.
I will keep trying.
Before I ask, I would just like to let you know this is a great and detailed article and it taught and helped me so much. I am running Ubuntu 16.04, and followed all the steps. But I cannot find "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 ..."
The closest thing I can find is "eth0 Link encap:Ethernet HWaddr 00:23:5a:18:18:ab
inet addr:192.168.1.114 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
"
Also, I could not access the internet until I disconnected from the Ethernet network! Is this normal?
Thanks
hi, i tried this to but now my internet does't work anymore. if i do ifconfig i dont get that anymore 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
and befor i did get
lo link encap (and a lot more)now i only get that.
can it be that my internet doesn't use eth0 but ens160?
This doesn't work anymore when you're on a version of Ubuntu that uses systemd.
The tutorial works fine on Ubuntu versions with systemd, use the commands that are labeled for "Ubuntu 14.04 and newer" which show you how to restart networking with systemd.
En Ubuntu 16.04 existe un bug y es que no basta con reiniciar la interfaz de red, es necesario reiniciar el servidor para que tope los cambios en la interfaz, recomiendo sea cual sea la versión y si es posible reiniciar el sistema operativo después de modificar la interfaz de red.
Saludos
why not just use nmcli or nmtui ?
The suggested steps for Ubuntu 16.04 do not work. Nothing changes...
The steps work fine here on Ubuntu 16.04, just verified that. If nothing changes on your server then you might have a typo somewhere. You might also try to restart the system to apply the changes when you are sure that you have no typos in the config.
Using netplan I could not create a bridge for kvm virtulization. Request for a small tutorial on this. Its really sad that after years of experience in Linux, I could not use netplan may be its complex or I do not know exact things.
English |
Deutsch

