为什么每次都会重新生成我的resolv.conf文件?


17

我的/etc/resolv.conf文件被再生每一次,让我失去谷歌DNS服务器,当我重新连接我的3G调制解调器。

为了更改DNS设置,我查看了http://code.google.com/intl/fr-FR/speed/public-dns/docs/using.html

dhclient.conf的很大(58行),所以我将其发布在pastebin上

但是,这里是dhclient.conf没有注释行或空白行的整体:

option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
send host-name "<hostname>";
request subnet-mask, broadcast-address, time-offset, routers,
    domain-name, domain-name-servers, domain-search, host-name,
    netbios-name-servers, netbios-scope, interface-mtu,
    rfc3442-classless-static-routes, ntp-servers;
prepend domain-name-servers 8.8.8.8, 8.8.4.4;

我使用的wvdial不是Network Manager。


不幸的是,我对此一无所知wvdial。在这一点上,我怀疑它或这里涉及另一个尚未发现的软件包。您是否知道是否安装了其他与网络相关的应用程序或工具,这些应用程序或工具可能以某种方式触及DNS,DHCP,接口等?
belacqua 2011年

Answers:


6

在12.04中,默认情况下安装了resolvconf。以下是有关如何对一些常见用例进行DNS配置更改的快速摘要:

对于使用的静态配置ifup,请在中使用dns-nameserversdns-search输入/etc/network/interfaces

对于使用的静态配置NetworkManager,请选择,Automatic (DHCP) addresses only Method然后在连接编辑器的Additional DNS serversAdditional search domains字段中输入地址和域名。

要覆盖需要resolvconf的默认配置,使用baseheadtail/etc/resolvconf/resolv.conf.d/。如上所述,仅在这些文件中输入地址和域名作为临时措施,因为它们确实属于其他位置。

不建议禁用resolvconf,但是您可以用/etc/resolv.conf常规文件替换符号链接。

有关更多信息,请参阅StéphaneGraber的博客文章


4

如果您要做的只是将Google DNS服务器保留在resolv.conf中,则可以编辑
/etc/dhcp3/dhclient.conf和添加:

prepend domain-name-servers 8.8.8.8;
prepend domain-name-servers 8.8.4.4;

您所拥有和我在此处显示的内容之间的唯一区别是,根据您提到的文档,两个名称服务器都放在同一行上。

除非我缺少任何东西,否则您的dhclient.conf并不是问题。在这一点上,我假设问题与wvdial有关。

从这里尝试一下 ubuntuforums以下方法

gksudo gedit /etc/ppp/peers/wvdial

删除参数usepeerdns并保存文件。码:

gksudo gedit /etc/wvdial.conf

添加这些行:

check DNS = no
auto DNS = no

@jgbelacqua我在长齿状线中尝试过,但是没有起作用:P
Jakh Saidlikp 2011年

@Jakh我假设将前置行移到顶部附近也失败了吗?(这就是我的设置方法。)
belacqua 2011年

@jgbelacqua是的,我也尝试过;]
Jakh Saidlikp 2011年

@Jakh-您是否尝试编辑该request subnet-mask, broadcast-address, time-offset, routers, domain-name, domain-name-servers, domain-search, host-name, netbios-name-servers, netbios-scope, interface-mtu, rfc3442-classless-static-routes, ntp-servers;行以删除那里的名称服务器?
belacqua 2011年

@jgbelacqu现在请尝试一下,让您
知道

4

在没有NetworkManger的情况下通过CLI设置名称服务器的最佳方法是,使用静态地址或独立于连接:

安装resolvconf软件包。

sudo nano /etc/resolvconf/resolv.conf.d/head

(忽略可怕的警告。/etc/resolv.conf是自动生成的,因此存在警告,因此在生成/etc/resolv.conf时会将其放入/etc/resolv.conf中。)到文件末尾,加

 nameserver <ip_of_nameserver>

Ctrl x并回答“是”以保存文件。最后,重新生成/etc/resolv.conf,以便立即应用更改:

 sudo resolvconf -u

应该补充的是,在resolv.conf中放置静态名称服务器地址通常不是一个好主意。请阅读/usr/share/doc/resolvconf/README.gz。
jdthood 2012年

0

您可以设置domain-name-serversdhclient.conf选项。


检查他的pastebin-看起来他已经有了这个。
belacqua 2011年

谢谢,我没有注意到。顺便说一句,您的解决方案可能是正确的,因此请考虑将其发布为答案而不是评论。
亚当·伯特

你好@adam,你能更清楚
一点吗

0

我使用以下命令解决了相同的问题:

echo "nameserver 212.217.0.1" >> /etc/resolvconf/resolv.conf.d/head
ln -s /etc/resolvconf/resolv.conf.d/head /etc/resolv.conf
resolvconf -u
/etc/init.d/networking restart

1
您可能已经用这种方法解决了问题,但这是完全错误的配置。您最终将/etc/resolv.conf符号链接到一个静态文件,该文件恰好是resolvconf的配置文件之一。如果要禁用resolvconf,则只需删除符号链接/etc/resolv.conf并在其中放置一个静态文件,就会简单得多。
jdthood 2012年

-1

您可能已经安装了数据包resolvconf。在这种情况下,只要出现接口,就会更新resolv.conf。您可以使用/etc/resolv.conf.tail文件添加静态条目,有关更多信息,请参见resolv.conf的手册页。


我没有安装该软件包
Jakh Saidlikp 2011年

resolvconf程序更新/etc/resolv.conf,但仅当/etc/resolv.conf是指向../run/resolvconf/resolv.conf的符号链接时才可以。之所以引入resolvconf软件包,是因为许多其他程序相互独立地踩在/etc/resolv.conf上,从而导致混乱。请阅读/usr/share/doc/resolvconf/README.gz。因此,从更新/etc/resolv.conf的事实来看,并没有(在2011年3月询问该问题时)安装了resolvconf。pppd很可能正在重写文件。(但是,从Ubuntu 12.04开始,resolvconf是基本系统的一部分。)
jdthood 2012年

-1

我遇到了完全相同的问题,我的移动提供商提供的DNS服务器相当差,所以我想使用Google的DNS。而且,NetworkManager在处理移动宽带连接方面做得很差,因此wvdial是必需的。

事实证明,这/etc/resolv.conf是一个ubuntu 12.10甚至甚至是符号链接12.04。这是我完成sudo unlink /etc/resolv.conf之后的工作 ,您可以创建一个新resolv.conf使用vim或您选择的编辑器,并添加google的名称服务器或您喜欢的任何其他名称服务器。保存并完成。

如果您害怕破坏某些内容,可以通过执行以下操作来记录现有符号链接 ls -la /etc/resolv.conf在之前unlinking

希望能帮助到你。


@Downvoter,请谨慎评论。如果我的回答确实是错误的建议,我将很乐意将其删除。请不要让我知道我在做什么错。谢谢
nikhil
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.