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



Question:

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/


Solution:1

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)]  


Solution:2

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.


Solution:3

If you don't want to (or can't) use the Network Manager applet to setup your network settings, I find the proper way to setup a "static" IP configuration, for when you don't have a DHCP server available, is to have a static lease on the dhclient.conf. There you should specify the nameserver that will be written to the resolv.conf file when dhclient falls-back to static.

However, if you don't wan't to get your hands dirty, I still recommend to use the GUI to specify a DNS server address at your connection's IP settings, as in https://askubuntu.com/a/127537/33305.


Solution:4

The OP is using the server ed. NetworkManager doesn't apply.. though who knows maybe it'll get added just to add complexity to the server.

For that matter why in the world did resolvconf get added to the server ed... WHY!!??!?

Anyway to answer your question add in:

/etc/network/interfaces

something like this:

auto eth0 inet static       dns-nameservers ns1.mydnsservers.com ns2.mydnsservers.com  

The important option is "dns-nameservers".


Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »