非常慢的DNS查询

Ubuntu 12.10
我来解释第一个问题。有时候当我加载一个网页时,它永远无法完成加载,并显示无法连接到服务器之类的信息。当我对该网站进行ping测试时,终端显示无法解析主机名。所以我尝试了谷歌的DNS服务器,但没有成功。这很奇怪,因为在Windows 7中我从未遇到过这个问题。我使用了
cat /etc/resolv.conf

它给出了这个结果:
# 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

为什么会使用127.0.1.1呢?这是不是意味着它正在尝试本地解析地址?当我ping Comcast搜索服务器时,出现了超时错误。

DNS查找似乎有效,如果我将127.0.1.1替换为8.8.8.8,这是谷歌的DNS服务器。但每次启动都会被覆盖。 - Kenneth Clark
3个回答

/etc/resolv.conf(实际上是指向/run/resolvconf/resolv.conf的符号链接)是由resolvconf工具根据来自各种可能来源的信息编写的。
127.0.1.1是回环IP地址,NetworkManager控制的dnsmasq实例在此地址上侦听。Dnsmasq在本地运行,并接受来自127.0.1.1的DNS查询,并将这些查询转发给由NetworkManager提供的外部名称服务器。这种方案并不总是有效,如果您遇到任何问题(正如您所遇到的问题),则建议禁用NetworkManager控制的dnsmasq。要禁用它,请编辑/etc/NetworkManager/NetworkManager.conf文件。
sudo gedit /etc/NetworkManager/NetworkManager.conf

注释掉这行代码。
dns=dnsmasq

为了使其看起来像下面这样。
#dns=dnsmasq

然后重新启动网络管理器。您使用的命令取决于您的Ubuntu版本:
sudo service network-manager restart # For newer systems using Systemd
sudo restart network-manager         # For older systems using Upstart

在此之后,您应该在resolv.conf中有一行nameserver,并且其中包含一个非回环IP地址。如果不是这种情况,请尝试以下命令。
sudo dpkg-reconfigure resolvconf

如果您的resolv.conf文件中仍然没有一个非回环IP地址的nameserver行,或者您仍然没有DNS服务,请尝试重新启动。
如果您仍然没有良好的DNS服务,请开始调查外部IP地址(在下面的示例中为1.2.3.4)的nameserver。当使用host或dig工具访问时,它是否能正确解析域名?
host www.ford.com 1.2.3.4

dig @1.2.3.4 www.gm.com

谷歌的域名服务器可用吗?
host www.ford.com 8.8.8.8

dig @8.8.4.4 www.gm.com

如果您发现您的外部域名服务器无法正常工作,那么您应该配置您的连接以使用一个良好的域名服务器,比如谷歌的。要做到这一点,右键点击网络指示器,然后选择编辑连接 | 编辑... | IPv4设置。假设当前的方法是“自动(DHCP)”,将方法设置为“仅自动(DHCP)地址”,并在“附加DNS服务器”字段中填入良好的域名服务器地址。

1为什么涉及到dnsmasq?每次我安装Ubuntu都会遇到这个问题。 - Joseph Garvin
对我来说,问题出在Google DNS 8.8.8.8上,它暂时不可用。我在我的网关配置中手动设置了它作为主要DNS。通过执行ping 8.8.8.8来检查DNS的可用性。为了解决这个问题,我将我的主要DNS IP更改为OpenDNS的一个IP地址208.67.222.222。 - jmarceli

你可能想要右键点击网络管理器小程序,编辑连接并添加另一个DNS。这样应该会“固定”下来。

当我在网络管理器中进行编辑时,它没有任何作用。这真的很奇怪... - Kenneth Clark

你只需要安装DNS守护进程即可。
apt-get install bind9

service start bind9

这将在127.0.0.1上启用DNS服务器,以便大部分名称解析可以在本地缓存/解析。