我的问题是我的 Ubuntu 机器使用了错误的 DNS 服务器。出于某种原因,机器查询localhostDNS 信息。
我在网络设置 GUI 中添加了 DNS 服务器,但/etc/resolv.conf仍包含127.0.0.1DNS 服务器地址。现在,我以为我可以自己编辑文件,但它明确表示我不应该手动编辑文件。
现在,由于网络设置 GUI 没有生成具有正确设置的文件,我如何自己生成新resolv.conf文件?
jdt*_*ood 40
到目前为止发布的所有答案都没有解决的是,假设本地名称服务器正在运行,提问者无法理解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 客户端,后者将其发送到 NetworkManager,后者将其发送到 resolvconf,后者将信息放入resolv.conf. 因此,在这种情况下,可能需要配置 DHCP 服务器。
如果本地机器上的网络接口是静态配置的,则必须在 NetworkManager 中输入正确的名称服务器地址,例如,网络指示器 | 编辑连接... | 无线 | 我的连接| 编辑... | IPv4 设置 | 额外的 DNS 服务器。
本地名称服务器可能无法正常工作。在这种情况下,提问者应该编辑/etc/NetworkManager/NetworkManager.conf
sudo gedit /etc/NetworkManager/NetworkManager.conf
Run Code Online (Sandbox Code Playgroud)
并注释掉该行
dns=dnsmasq
Run Code Online (Sandbox Code Playgroud)
在“[主要]”部分。要注释掉该行,请将 a#放在该行的开头,然后保存文件。然后重新启动网络管理器。
sudo restart network-manager
Run Code Online (Sandbox Code Playgroud)
在此之后,将输入非本地名称服务器地址resolv.conf而不是 127.* 地址。
如果提问者使用ifup而不是 NetworkManager 来配置网络接口,那么jmartin2279 的答案是正确的:您必须按照 jmartin2279 描述的方式将名称服务器地址添加到 /etc/network/interfaces。
相反的是一些其他的答案提醒,一般来说,你应该不增加nameserver,domain或search选项文件/etc/resolvconf/resolv.conf.d/。请参阅我对这些答案的评论。
小智 17
如果您使用 ifup 静态配置接口,则可以将其添加到 /etc/network/interfaces 文件中。
打开终端并输入:
sudo gedit /etc/network/interface*
Run Code Online (Sandbox Code Playgroud)
你应该看到类似的东西:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
Run Code Online (Sandbox Code Playgroud)
编辑为:
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
Run Code Online (Sandbox Code Playgroud)
使用您自己的网络信息。这将允许您设置 dns。您可以在此处使用多个 dns 服务器:
dns-nameservers 8.8.8.8 8.8.4.4
Run Code Online (Sandbox Code Playgroud)
执行此操作后,运行
ifdown eth0
ifup eth0
Run Code Online (Sandbox Code Playgroud)
Nic*_*Tux 11
在 Ubuntu 12.04 中,resolv.conf 的处理发生了变化。
如果你想添加自己的域名服务器地址(ES),然后编辑该文件/etc/resolvconf/resolv.conf.d/头
sudo nano /etc/resolvconf/resolv.conf.d/head
Run Code Online (Sandbox Code Playgroud)
并在那里添加您的名称服务器(例如:Google open dns)
nameserver 8.8.8.8
保存文件然后运行
sudo resolvconf -u
Run Code Online (Sandbox Code Playgroud)
没有重新启动或其他任何事情。也许您需要重新启动网络管理器
sudo service network-manager restart
Run Code Online (Sandbox Code Playgroud)
完毕。
你可以用命令测试它
nslookup www.google.com
结果必须类似于
Server: 8.8.8.8
Address: 8.8.8.8#53
Run Code Online (Sandbox Code Playgroud)