如何防止/etc/resolv.conf在Ubuntu 11.10重启后被覆盖?

时间:2013-03-12 17:37:53

标签: networking dns ubuntu-11.10 dhcp

我正在使用Ubuntu 11.10并在/etc/resolv.conf中手动配置DNS服务器,但在重新启动后它会以某种方式被覆盖。我该如何防止这种情况?

感谢。

8 个答案:

答案 0 :(得分:11)

正如你可以在resolv.conf的标题中看到的那样:

Dynamic resolv.conf file for glibc resolver generated by resolvconf

因此,生成了resolv.conf,如果要在重启后保留resolvconf配置,则必须编辑/etc/resolvconf/resolv.conf.d/base。在该文件中,像在resolv.conf中一样输入您的信息。

nameserver 8.8.8.8

然后使用resolvconf重新生成resolv.conf:

sudo resolvconf -u

答案 1 :(得分:3)

在阅读其他答案后,由于以下原因,我仍然需要不同的东西:

  • 我没有使用resolvconf,只是简单/etc/resolv.conf
  • 使用chattr +i锁定resolv.conf似乎过于苛刻。我需要Puppet在必要时自由更改。

我发现best solution使用其记录的钩子覆盖了dhclient的默认行为。

使用以下内容在/etc/dhcp/dhclient-enter-hooks.d/nodnsupdate创建新文件:

#!/bin/sh
make_resolv_conf() {
    :
}

然后使文件可执行:

chmod +x /etc/dhcp/dhclient-enter-hooks.d/nodnsupdate

现在当dhclient运行时 - 无论是重启还是手动运行sudo ifdown -a ; sudo ifup -a - 它都会加载此脚本nodnsupdate。此脚本会覆盖名为make_resolv_conf()的内部函数,该函数通常会覆盖resolv.conf,而不会执行任何操作。

这对我在Ubuntu 12.04上有用。

答案 2 :(得分:2)

我认为NetworkManager正在覆盖/etc/resolv.conf文件。就我而言,我的DNS服务器列出的顺序是我想要改变的。您可以通过编辑连接IP4V设置通过NetworkManager执行此操作。

答案 3 :(得分:0)

你有DHCP客户端这样做。请按照instructions覆盖它。

答案 4 :(得分:0)

我使用以下行:     chattr + i /etc/resolv.conf

撤消使用:     chattr -i /etc/resolv.conf

让我知道它是否有效......

答案 5 :(得分:0)

可以将NetworkManager配置为使用手动输入的IPv4配置,或仅从DHCP IP /网络掩码/路由器获取 - 在这种情况下,它不应该更改/etc/resolv.conf

但是,人们可能希望在/etc/resolv.conf中拥有自己的设置 - 比如名称服务器或域搜索;我只需要一个域,我通过添加一个包含以下内容的文件/etc/NetworkManager/dispatcher.d/99my_fix来完成:

#!/bin/bash rc=/etc/resolv.conf; le="search my.domain" grep -q domain $rc && ! grep -q "$le" $rc && echo "$le" >> $rc

当然我chmod-ed + x吧。设置/etc/resolv.conf后,NetworkManager会调用它,如果有必要,我的脚本会修复它;第一个grep检测到网络已启动,第二个没有应用修复 - 它们都是应用修复所必需的。

答案 6 :(得分:0)

我有同样的问题,我编辑了我的`/etc/dhcp/dhclient.conf'文件通过添加域名和域名服务器

.row-fluid

192.168.56.103是我的运行bind9的vm,我的域名是local.com

我也从supersede domain-name "local.com"; supersede domain-name-servers 192.168.56.103;部分删除了它。

答案 7 :(得分:0)

如果服务器实例的网络接口由DHCP控制,则只要重新启动网络服务,dhclient程序就会覆盖/etc/resolv.conf文件。

您可以通过编辑“/etc/dhcp/dhclient.conf”文件并为域名域名搜索和<添加替代语句来解决此问题。 strong>域名服务器如下:

supersede domain-name "mydomain.com";
supersede domain-search "mydomain.com"
supersede domain-name-servers 8.8.8.8;

在这种特殊情况下,名称服务器位于“8.8.8.8”,域名为“mydomain.com”。替换您的特定信息。

请注意,每一行都以分号结尾,域名用双引号括起来。