问题描述
我有一个问题,我的Ubuntu机器使用错误的DNS服务器。由于某种原因,机器查询localhost
以获取DNS信息。
我已在网络设置GUI中添加了DNS服务器,但/etc/resolv.conf
仍包含127.0.0.1
作为DNS服务器地址。现在,我以为我可以自己编辑文件,但它明确地说我不应该手动编辑文件。
现在,由于网络设置GUI没有使用正确的设置生成文件,如何自己生成新的resolv.conf
文件?
最佳解决思路
到目前为止发布的答案都没有解释,提问者无法理解在/etc/resolv.conf
中使用nameserver 127.0.0.1
是正确的,假设本地名称服务器正在运行。在Ubuntu 12.04 Desktop中,默认情况下运行本地名称服务器,即由NetworkManager控制的dnsmasq
进程,该进程侦听127.0.0.1
。在Ubuntu 12.10中,监听地址已更改为127.0.1.1
。
所以解决方案是不对resolv.conf
进行任何更改。这是正确的,假设提问者想要使用本地名称服务器。
如果名称服务不起作用,则本地名称服务器没有被给予正确的转发地址,或者存在其他一些网络问题。
提问者尝试使用“网络设置GUI”“生成具有正确设置的文件”,但这无效。我不确切地知道这意味着什么,但这是输入名称服务器地址的正确方法,以便它们在适当的时间以resolv.conf
结束。我假设提问者使用NetworkManager
而不是ifup
来配置接口。
大多数情况下,接口是使用DHCP协议配置的。在这种情况下,不需要在本地系统上配置任何东西。 DHCP服务器知道其客户端应使用的名称服务器地址,并将此信息发送到DHCP客户端,后者将其发送到NetworkManager,后者将其发送到resolvconf,后者将信息放入resolv.conf
。因此,在这种情况下,可能需要配置DHCP服务器。
如果静态配置本地计算机上的网络接口,则必须在NetworkManager中输入正确的名称服务器地址,例如,网络指示器|编辑连接… |无线| myconnection |编辑… | IPv4设置|其他DNS服务器。
本地名称服务器可能无法正常工作。在这种情况下,提问者应该编辑/etc/NetworkManager/NetworkManager.conf
sudo gedit /etc/NetworkManager/NetworkManager.conf
并注释掉这条线
dns=dnsmasq
在”[main]”部分。要注释掉该行,请在行的开头放置一个#
,然后保存该文件。然后重新启动network-manager。
sudo restart network-manager
在此之后,non-local名称服务器地址将输入resolv.conf
而不是127. *地址。
如果提问者使用ifup
而不是NetworkManager来配置网络接口,则jmartin2279’s answer是正确的:您必须以jmartin2279描述的方式将名称服务器地址添加到/etc /network /interfaces。
与其他一些答案建议的情况相反,一般情况下,不应将nameserver
,domain
或search
选项添加到/etc/resolvconf/resolv.conf.d/
中的文件中。看看我对这些答案的评论。
次佳解决思路
如果使用ifup静态配置接口,则可以将其添加到/etc /network /interfaces文件中。
打开终端并输入:
sudo gedit /etc/network/interface*
你应该看到类似的东西:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
编辑为:
auto eth0
iface eth1 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8
使用您自己的网络信息。这将允许您设置DNS。你可以在这里使用多个DNS服务器:
dns-nameservers 8.8.8.8 8.8.4.4
这样做之后,运行
ifdown eth0
ifup eth0
第三种解决思路
在Ubuntu 12.04中,resolv.conf的处理发生了变化。
如果要添加自己的名称服务器地址,请编辑文件/etc/resolvconf/resolv.conf.d/head
sudo nano /etc/resolvconf/resolv.conf.d/head
并在那里添加您的名称服务器(例如:Google open dns)
nameserver 8.8.8.8
保存文件然后运行
sudo resolvconf -u
没有重启或其他任何东西。也许你需要重启network-manager
sudo service network-manager restart
完成。
您可以使用该命令对其进行测试
nslookup www.google.com
结果必须类似于
Server: 8.8.8.8
Address: 8.8.8.8#53