当前位置: 首页>>技术教程>>正文


我应该编辑我的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控制的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。

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

没有重启或其他任何东西。也许你需要重启network-manager

sudo service network-manager restart

完成。

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

nslookup www.google.com

结果必须类似于

Server: 8.8.8.8
Address: 8.8.8.8#53

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2186.html,未经允许,请勿转载。