我应该编辑我的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.1
的dnsmasq
进程。 在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。
与其他一些答案建议的情况相反,一般情况下,不应将nameserver
, domain
或search
选项添加到/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