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


35

我的问题是我的Ubuntu计算机使用了错误的DNS服务器。由于某种原因,机器会查询localhostDNS信息。

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

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


1
如果您使用的是Ubuntu Server 12.04 LTS,请帮自己一个忙,直接编辑/etc/resolvconf/resolv.conf.d/head,就像您希望看到的旧resolv.conf一样。直到我蛮力解决为止,我除了解决程序问题外什么都没有。

askubuntu.com/questions/157154/…也许是一个相关的问题。
Ehtesh Choudhury

Answers:


40

到目前为止,所有答案都没有解决,只是假设本地名称服务器正在运行,发问者无法理解nameserver 127.0.0.1in 的外观/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

并注释掉线

dns=dnsmasq

在“ [main]”部分中。要注释掉该行,请#在该行的开头放置一个,然后保存文件。然后重新启动网络管理器。

sudo restart network-manager

此后,将输入非本地名称服务器地址,resolv.conf而不是127. *地址。

如果发问者使用的ifup是NetworkManager而不是NetworkManager,则jmartin2279的答案是正确的:您必须按照jmartin2279所述的方式将名称服务器地址添加到/ etc / network / interfaces中。

相反的是一些其他的答案提醒,一般来说,你应该增加nameserverdomainsearch选项文件/etc/resolvconf/resolv.conf.d/。请参阅我对这些答案的评论。


1
“ DHCP服务器知道其客户端应使用的名称服务器地址” —除非您无法控制DHCP服务器(请考虑公共WiFi热点),并且想要覆盖正在使用的名称服务器...除非在每个连接上都设置相同的配置解决方案不是根据您所连接的每个WiFi热点一遍又一遍。
张汉辉2015年

看来我需要执行最终到达dhclient的更改(tha nameserver行)etc/resolv.conf。我正在运行Xubuntu 14.04的自定义直播(也许是原因)。
Sopalajo de Arrierez 2015年

禁用DNSMasq的不利之处是jdthood?当然,名称解析和互联网似乎可以正常运行。
Sopalajo de Arrierez 2015年

参见bugs.launchpad.net/ubuntu/+source/dnsmasq/+bug/1003842,例如,我的评论#60。
jdthood

127.0.0.1尽管我的网络管理员有其他名称服务器+ dnsmasq被注释掉+重新启动+ dnsmasq被杀死(因为它仍然开始运行)+网络重新启动,但我的resolv.conf仍然不断变化:/
某些用户

17

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

如果是您的情况,这是解决方案:“如果您使用ifup静态配置接口...。”
angelcervera 2013年

你甚至测试过吗?ifdown: interface eth0 not configured
塞林2014年

3
如果通过ssh连接,则不能使用ifdown / ifup。改为使用sudo /etc/init.d/networking restart
TD_Nijboer 2014年

11

在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

4
将“名称服务器”行添加到/etc/resolvconf/resolv.conf.d/head可能是一种快速技巧,但这并不是解决任何问题的正确方法。这样做会使解析器在所有情况下都使用该名称服务器地址,而要使用的名称服务器则取决于情况。例如,如果您连接到LAN(也许通过VPN),则通常希望使用LAN名称服务器,以便能够解析LAN上的私有名称。在当前情况下,系统似乎正在运行本地缓存的名称服务器,但是添加“名称服务器8.8.8.8”将绕过它。
jdthood 2012年

@jdthood-您指出了一个问题。关心提供解决方案?
TJ Biddle

@TJ我已经发布了主要问题的答案(“我该如何编辑我的resolv.conf文件?”),如果这就是你的意思。
jdthood

1
请不要推荐这个。在文件的顶部,“请勿手动编辑此文件-您的更改将被覆盖”。
Cerin 2014年

我想指出的是,手动编辑/etc/resolv.conf会在重新引导时覆盖更改,但是,手动编辑/etc/resolvconf/resolv.conf.d/head不会在重新引导时覆盖更改,但是在重新启动时可能会覆盖安装resolvconf,这很可能是出现警告的原因。
肯(Ken)

1

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

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

静态接口的DNS配置应为添加到适当的iface节中的“ dns-nameservers”,“ dns-search”和“ dns-domain”条目/etc/network/interfaces

阅读以获得更多信息。

`此外:

您可以安装名为的gui工具gnome-network-admin来设置DNS。试试吧 :

sudo apt-get install gnome-network-admin

3
(1)不,不要在/etc/resolvconf/resolv.conf.d/tail中添加“名称服务器”选项。这是无效的(因为其他“名称服务器”选项优先)且次优(因为它是静态配置,而该配置应反映网络情况)。(2)不,请不要使用gnome-network-admin。它不能与resolvconf一起正常工作。请参阅错误#60518(bugs.launchpad.net/ubuntu/+source/gnome-system-tools/+bug/60518)。
jdthood 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.