How to override the DHCP-provided nameserver?

I (think) that I've configured a static IP address in /etc/network/interfaces:

# The primary network interface 
auto eth0 
iface eth0 inet static
    address 10.1.1.2
    netmask 255.255.255.0
    network 10.1.1.0
    broadcast 10.1.1.255
    gateway 10.1.1.1

And I change the file /etc/resolv.conf to include the desired nameservers.

Then I restart networking sudo /etc/init.d/networking restart

But after some hours resolv.conf always reverts back to the DHCP nameserver.


I should also say that this is Ubuntu Server with only l0 and eth0 interfaces.

If you want to override or append to the name servers suggested by the DHCP server, you can configure this in /etc/dhcp/dhclient.conf, eg:

interface "eth0" {
    prepend domain-name-servers 10.0.0.2;
}

You can also do this from the "Edit Connections" control in the network indicator in Unity or GNOME.


A resolution that will resolve your problem is to configure your resolvconf package. This will give precedence to your preferred nameservers as well as any other desired settings resolv.conf settings such as search and domain preferences.

Edit the file: /etc/resolvconf/resolv.conf.d/head

Place your desired nameservers and any other configurations you want to take preference when there is a network change there. When any changes to the network happen, the configuration there will always take precedence.

An example of the /etc/resolvconf/resolv.conf.d/head file:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

nameserver 8.8.8.8
search mydomain.com

Look at the answer to a similar question:
override dns nameserver

Note:
Be sure to have a linefeed after the last entry. Most editors will provide a linefeed automatically when saving the file.