4

我使用的是 Ubuntu 11.10,我在 /etc/resolv.conf 中手动配置了 DNS 服务器,但在我重新启动后它会以某种方式被覆盖。我怎样才能防止这种情况?

谢谢。

4

8 回答 8

13

正如您在 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
于 2015-02-26T10:36:16.673 回答
5

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

  • 我没有使用resolvconf,只是简单/etc/resolv.conf的。
  • 使用chattr +i锁定resolv.conf似乎太hacky。我需要 Puppet 在必要时自由地进行更改。

我发现的最佳解决方案覆盖了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 上对我有用。

于 2015-03-05T22:14:56.290 回答
2

我认为 NetworkManager 正在覆盖 /etc/resolv.conf 文件。在我的情况下,我想更改我的 DNS 服务器的列出顺序。您可以通过 NetworkManager 编辑您的连接 IP4V 设置来完成此操作。

于 2013-03-20T20:46:05.957 回答
0

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

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

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

于 2014-02-24T09:24:32.270 回答
0

您有 DHCP 客户端执行此操作。按照这些说明覆盖它。

于 2013-03-12T17:40:51.760 回答
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 它。NetworkManager 在设置 /etc/resolv.conf 后调用它,如果需要,我的脚本会修复它;第一个 grep 检测到网络已启动,第二个检测到未应用修复 - 它们都是应用修复所必需的。

于 2015-02-05T08:33:56.803 回答
0

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

supersede domain-name "local.com"; supersede domain-name-servers 192.168.56.103;

192.168.56.103 是我运行bind9的虚拟机,我的域名是local.com

我也从request部分中删除了相同的内容。

于 2016-04-02T09:57:05.490 回答
0

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

您可以通过编辑“/etc/dhcp/dhclient.conf”文件并为domain-namedomain-searchdomain-name-servers添加替代语句来解决此问题,如下所示:

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

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

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

于 2018-02-06T21:56:09.553 回答