1: Resolvconf writes its dynamic resolv.conf file at
/etc/resolv.conf is a symbolic link to the latter location. If you want to use a static resolv.conf file, simply replace the /etc/resolv.conf symbolic link with a file. This is currently supported but not recommended.
2: As I understand it, the affected machine is running Ubuntu Server edition. In that case it configures interfaces using the
ifup program whose configuration file is
/etc/network/interfaces. For interfaces configured via the
ifup (normally) uses
dhclient from the
isc-dhcp-client package. Dhclient receives nameserver information from the DHCP server and its hook script
/etc/dhcp/dhclient-enter-hooks.d/resolvconf sends this information to
resolvconf which puts it into
One thing you can do is edit
/etc/resolvconf/interface-order such that
eth0.dhcp comes before
eth0.dhclient. (I assume that the relevant interface is
eth0.) If you have the default
interface-order you can, for example, just add a line
eth0.dhcp before the line
--- interface-order_ORIG 2012-11-06 10:12:47.630529145 +0100
+++ interface-order 2012-11-06 10:13:16.410529800 +0100
@@ -9,6 +9,7 @@
Then add a
dns-nameservers line to the
iface eth0 stanza in
/etc/network/interfaces with the correct nameserver address.
iface eth0 inet dhcp
eth0.dhcp comes before
eth0.dhclient, the correct nameserver address will be included in
resolv.conf before the incorrect one.
Another way to override the unwanted behavior of including the DHCP-server-provided nameserver address is to edit the dhclient hook script. E.g., you can add a line like the following (where 22.214.171.124 is a nameserver address you would like to discard).
--- resolvconf_ORIG 2012-03-29 22:37:14.000000000 +0200
+++ resolvconf 2012-11-05 20:53:33.312681077 +0100
@@ -54,6 +54,7 @@
shopt -s nocasematch
for nameserver in $new_dhcp6_name_servers ; do
+ [ "$nameserver" = "126.96.36.199" ] && continue
Yet another possibility (a slightly crude one, since it's completely static) is to add a nameserver option to
3: Setting DNS nameserver addresses has gotten more complicated because machines are becoming mobile, are getting more and more interfaces and static configuration is gradually being replaced by autoconfiguration.
Turns out this was a simple not having rebooted problem.
I had changed my
/etc/network/interfaces to set the static interface, but never rebooted. This left
dhclient running for
eth1, which eventually went to renew the DHCP address. Killing
dhclient fixed the problem, and with the
interfaces file defining a static IP, it was not started on the next reboot.
Just press Ctrl+Alt+T on your keyboard to open Terminal. When it opens, run the command below.
You will see this:
Replace it with:
Then restart networking components.