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

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

我遇到了一个问题,我的 Ubuntu 机器使用了错误的 DNS 服务器。由于某种原因,机器查询localhostDNS 信息。

我已在网络设置 GUI 中添加了 DNS 服务器,但/etc/resolv.conf仍包含127.0.0.1DNS 服务器地址。现在,我想我可以自己编辑该文件,但它明确表示我不应该手动编辑该文件。

现在,由于网络设置 GUI 没有生成具有正确设置的文件,我该如何resolv.conf自行生成新文件?

答案1

到目前为止,所有发布的答案都没有解决这样一个问题:提问者似乎没有理解在假设本地名称服务器正在运行的情况下,使用nameserver 127.0.0.1/etc/resolv.conf正确的。在 Ubuntu 12.04 Desktop 中,默认情况下,有一个本地名称服务器正在运行,即dnsmasq由 NetworkManager 控制的进程,该进程侦听127.0.0.1。在 Ubuntu 12.10 中,侦听地址已更改为127.0.1.1

所以解决方案就是不对 进行任何更改resolv.conf。这是正确的,假设提问者想要使用本地名称服务器。

如果名称服务不工作,则本地名称服务器没有被提供正确的转发地址,或者存在其他网络问题。

提问者尝试使用“网络设置 GUI”来“生成具有正确设置的文件”,但此方法失败。我不知道这到底是什么意思,但这是输入名称服务器地址的正确方法,以便它们在resolv.conf正确的时间出现。我假设提问者正在使用NetworkManager而不是ifup配置接口。

大多数情况下,接口都是使用 DHCP 协议进行配置的。在这种情况下,本地系统上无需配置任何内容。DHCP 服务器知道其客户端应使用哪个名称服务器地址,并将此信息发送给 DHCP 客户端,DHCP 客户端将其发送给 NetworkManager,NetworkManager 将其发送给 resolvconf,resolvconf 将信息放入 中resolv.conf。因此,在这种情况下,可能需要配置的是 DHCP 服务器。

如果本地计算机上的网络接口是静态配置的,则必须在 NetworkManager 中输入正确的名称服务器地址,例如网络指示器 | 编辑连接... | 无线 | myconnection | 编辑... | IPv4 设置 | 附加 DNS 服务器。

本地名称服务器可能工作不正常。在这种情况下,提问者应该编辑/etc/NetworkManager/NetworkManager.conf

sudo gedit /etc/NetworkManager/NetworkManager.conf

并注释掉以下行

dns=dnsmasq

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

sudo restart network-manager

此后,将输入非本地名称服务器地址resolv.conf来代替 127.* 地址。

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

与其他答案的建议相反,一般来说你应该不是nameserverdomain选项添加search到 中的文件/etc/resolvconf/resolv.conf.d/。请参阅我对这些答案的评论。

答案2

如果您使用 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

答案3

在 Ubuntu 12.04 中,resolv.conf 的处理发生了变化。

如果您想添加自己的名称服务器地址,请编辑文件 /etc/resolvconf/resolv.conf.d/

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

答案4

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

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

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

了解更多信息。

`此外:

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

sudo apt-get install gnome-network-admin

相关内容