1: Resolvconf writes its dynamic resolv.conf file at /run/resolvconf/resolv.conf
. /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 dhcp
method, 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 resolv.conf
.
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 eth*
.
--- 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 @@
hso*
em+([0-9])?(_+([0-9]))*
p+([0-9])p+([0-9])?(_+([0-9]))*
+eth0.dhcp
eth*
ath*
wlan*
Then add a dns-nameservers
line to the iface eth0
stanza in /etc/network/interfaces
with the correct nameserver address.
iface eth0 inet dhcp
dns-nameservers 1.2.3.4
Because 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 1.2.3.4 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 @@
fi
shopt -s nocasematch
for nameserver in $new_dhcp6_name_servers ; do
+ [ "$nameserver" = "1.2.3.4" ] && continue
Yet another possibility (a slightly crude one, since it's completely static) is to add a nameserver option to /etc/resolvconf/resolv.conf.d/head
.
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.
Problem: In my case I accidentally removed the resolvconf
file. So my computer is connected to the internet, but it has no idea what a DNS server is and so it has no way of translating readable URLs into IP addresses. Hence you can do ping 8.8.8.8
and it will respond, but ping google.com
fails.
So the solution is basically to reinstall resolvconf
. You can download the package from the Ubunut archive: http://archive.ubuntu.com/ubuntu/pool/main/r/resolvconf
One neat hack around this is to go to another computer, or your phone, or whatever and find out the address of archive.ubuntu.com
- just ping it and copy the IP address. You could also use a WHOIS service I guess.
Then go back to the Ubuntu system and open /etc/hosts
and add:
x.x.x.x archive.ubuntu.com
where x.x.x.x
is the IP address you found out via ping on another machine. So now your computer should know about archive.ubuntu.com
. You can then open the page in a browser and navigate to the resolvconf
package. Of course putting in that IP address would also work and you should probably avoid leaving it in your hosts file in case it changes later.
Download the most recent package, and then run sudo dpkg -i resolvconf_1.79ubuntu8_all.deb
or whatever the deb
file you downloaded was. I suggest manually running dpkg even if your browser prompts you to install it, it didn't work that way for me.
Presto: you now have resolveconf again and it should work more or less instantly.
Best Answer
The easiest way is to go to
Settings -> Network -> LAN Interface (Cog Symbol) -> IPv4 Settings (tab) -> Additional DNS Servers
If you must do it from the command line, then you can type:
update with: