12

Ubuntu 12.10

I'll explain the first problem. Sometimes when I load a webpage it never finishes loading and it says cannot reach server or something like that. When I ping that website, the terminal says it cannot resolve the hostname. So I then tried Google's DNS servers but had no luck there. It's weird because I've never had this problem in Windows 7. I used

cat /etc/resolv.conf

and it came up with this:

# 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 127.0.1.1
search hsd1.or.comcast.net

Why would it use 127.0.1.1? Does that mean it's trying to resolve addresses locally? When I ping the comcast search server I get a timeout error.

Zanna
  • 70,465
  • The DNS lookup seems to work if I replace 127.0.1.1 with 8.8.8.8 which is Google's DNS server. But that gets overwritten each boot. – Kenneth Clark Mar 25 '13 at 18:49

3 Answers3

30

/etc/resolv.conf (which is actually a symbolic link to /run/resolvconf/resolv.conf) is written by the resolvconf utility based on information coming from various possible sources.

127.0.1.1 is the loopback IP address on which the NetworkManager-controlled instance of dnsmasq listens. Dnsmasq runs locally and accepts DNS queries at 127.0.1.1 and forwards these queries to an external nameserver whose address is furnished by NetworkManager. This scheme does not always work well and if you have any problem with it (as you do) then it is advisable to disable NetworkManager-controlled dnsmasq. To disable it, edit /etc/NetworkManager/NetworkManager.conf

sudo gedit /etc/NetworkManager/NetworkManager.conf

and comment out the line

dns=dnsmasq

so that it looks like the following.

#dns=dnsmasq

Then restart network-manager. The command you use depends on your Ubuntu version:

sudo service network-manager restart # For newer systems using Systemd
sudo restart network-manager         # For older systems using Upstart

After this you should have a nameserver line in resolv.conf with a non-loopback IP address. If this is not the case then try the following command.

sudo dpkg-reconfigure resolvconf

If you still don't have a nameserver line in resolv.conf with a non-loopback IP address or if you still have no DNS service, try rebooting.

If you still have no good DNS service then start investigating the nameserver at the external IP address (1.2.3.4 in the example below). Does it correctly resolve domain names when approached using the host or dig utilities?

host www.ford.com 1.2.3.4

dig @1.2.3.4 www.gm.com

Do Google's nameservers work?

host www.ford.com 8.8.8.8

dig @8.8.4.4 www.gm.com

If you find that your external nameserver isn't working properly then you should configure your connection to use a well behaved nameserver such as Google's. To do this, right click on the network indicator and go to Edit Connections | | Edit... | IPv4 Settings. Assuming that the current Method is Automatic (DHCP), set Method to Automatic (DHCP) addresses only and fill in good nameserver addresses in the field entitled Additional DNS servers.

jdthood
  • 12,467
  • 1
    Why is dnsmasq involved? This issue bites me everytime I install Ubuntu. – Joseph Garvin Nov 13 '13 at 21:42
  • For me it was a problem with Google DNS 8.8.8.8 which was temporary unavailable. Which was manually configured in my gateway config as a primary DNS. DNS availability was checked by executing ping 8.8.8.8. To fix this issues I change my primary DNS IP to one of the OpenDNS IP 208.67.222.222. – jmarceli Jul 01 '14 at 08:54
1

You might want to right-click on the network-manager applet, edit connections and add another dns. That should 'stick'

Scott Goodgame
  • 2,636
  • 15
  • 20
-2

You can just install DNS daemon:

apt-get install bind9

service start bind9

This should enable DNS server on 127.0.0.1, so that most of name resolutions would be cached/resolved locally.

amaksr
  • 97