resolv.conf doesn't get set on reboot when networking is configured for static ip

I'm experiencing what appears to be a name resolution issue in Ubuntu 12.04 Server edition when configuring my computer to use static ip.

In /etc/network/interfaces:

# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.28
netmask 255.255.255.0
gateway 192.168.1.1

Running $ sudo apt-get upgrade, results in a 'Failed to fetch...':

. . . W: Failed to fetch http://us.archive.ubuntu.com/ubuntu/dists/precise-backports/universe/i18n/Translation-en_US Something wicked happened resolving 'us.archive.ubuntu.com:http' (-5 - No address associated with hostname)
[...]

When I change my /etc/network/interfaces to:

auto eth0
iface eth0 inet dhcp

Everything works fine.

Looking into /etc/resolv.conf provides some more hints.

In cases where I was getting the resolving issue, resolv.conf was empty; no nameservers were specified. Then I changed to DHCP from static and restarted networking; /etc/resolv.conf got changed to: 'nameserver 192.168.1.1'.

Switching back from DHCP to static and restarting doesn't remove the nameserver entry. But when I restarted the system with static set, resolv.conf was empty. When I restart the system with DHCP set, resolv.conf has nameserver 192.168.1.1. So, it appears that the issue is that resolve.conf is not getting written to correctly? Which package/code is responsible for writing to resolv.conf? Is there a particular package that I can take a look at open issues?

UPDATE: istream posted a good article discussing changes to resolve.conf in 12.04. http://www.stgraber.org/2012/02/24/dns-in-ubuntu-12-04/


As per the resolvconf man page (example provided in man page), add the following to your /etc/network/interfaces under your static configuration:

dns-nameservers [IP address(es) of your DNS]     
dns-search      [your dns-search strings (optional)]

Are you sure that you provided 192.168.1.1 as the value for the DNS when you set up the static IP?

I don't know how to do this from the command line, but using the System Settings -> Network GUI should work too, no? All I'm thinking is that you want something like the screen capture below? Or am I not understanding what you are trying to do?

Network config with static IP, default route, DNS server

Note: Ignore the values in the left-hand window. Those are just my values from DHCP. I didn't bother to save the static config since I was just trying to illustrate what I was thinking.

By the way, I used 192.168.1.1 because that's what you were using. But you could also use the IPs for any valid DNS servers. For example, 8.8.8.8 and/or 208.67.222.222 should also work.