我应该编辑我的resolv.conf文件来修复错误的DNS问题吗?

我有问题,我的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控制的侦听127.0.0.1dnsmasq进程。 在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 

在“[主要]”部分。 要注释掉该行,请在该行的开头添加一个# ,然后保存该文件。 然后重启网络管理器。

 sudo restart network-manager 

在此之后,非本地名称服务器地址将输入resolv.conf而不是127. *地址。

如果提问者使用ifup而不是NetworkManager配置网络接口,则jmartin2279的答案是正确的:您必须以jmartin2279描述的方式将名称服务器地址添加到/ etc / network / interfaces。

与其他一些答案建议的情况相反,一般情况下,不应将nameserverdomainsearch选项添加到/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 

没有重启或其他任何东西。 也许你需要重新启动网络管理器

 sudo service network-manager restart 

完成。

您可以使用该命令对其进行测试

nslookup www.google.com

结果必须类似于

 Server: 8.8.8.8 Address: 8.8.8.8#53 

要向/etc/resolv.conf添加更多条目,请创建/etc/resolvconf/resolv.conf.d/tail文件并将其添加到那里。

但是如果/etc/resolv.conf包含127.0.0.1 ,那么向/etc/resolvconf/resolv.conf.d/tail添加条目不会改变任何内容。 您必须在NetworkManager中静态设置DNS服务器地址,然后将它们发送到侦听127.0.0.1 dnsmasq。

静态接口的DNS配置应该作为“ dns-nameservers ”,“ dns-search ”和“ dns-domain ”条目添加到/etc/network/interfaces的相应iface节中

阅读本文以获取更多信息。

`另外:

您可以安装一个名为gnome-network-admin的gui工具来设置您的DNS。 试试吧 :

 sudo apt-get install gnome-network-admin