我遇到了一个问题,我的 Ubuntu 机器使用了错误的 DNS 服务器。由于某种原因,机器查询localhost
DNS 信息。
我已在网络设置 GUI 中添加了 DNS 服务器,但/etc/resolv.conf
仍包含127.0.0.1
DNS 服务器地址。现在,我想我可以自己编辑该文件,但它明确表示我不应该手动编辑该文件。
现在,由于网络设置 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。
与其他答案的建议相反,一般来说你应该不是将nameserver
或domain
选项添加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