我使用的是 Ubuntu 11.10,我在 /etc/resolv.conf 中手动配置了 DNS 服务器,但在我重新启动后它会以某种方式被覆盖。我怎样才能防止这种情况?
谢谢。
我使用的是 Ubuntu 11.10,我在 /etc/resolv.conf 中手动配置了 DNS 服务器,但在我重新启动后它会以某种方式被覆盖。我怎样才能防止这种情况?
谢谢。
正如您在 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
阅读其他答案后,由于以下原因,我仍然需要一些不同的东西:
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 上对我有用。
我认为 NetworkManager 正在覆盖 /etc/resolv.conf 文件。在我的情况下,我想更改我的 DNS 服务器的列出顺序。您可以通过 NetworkManager 编辑您的连接 IP4V 设置来完成此操作。
我使用以下行: chattr +i /etc/resolv.conf
撤消使用:chattr -i /etc/resolv.conf
让我知道它是否有效...
您有 DHCP 客户端执行此操作。按照这些说明覆盖它。
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 检测到网络已启动,第二个检测到未应用修复 - 它们都是应用修复所必需的。
我遇到了同样的问题,我通过添加域名和域名服务器编辑了我的“/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
部分中删除了相同的内容。
如果您的服务器实例的网络接口由 DHCP 控制,则 dhclient 程序将在网络服务重新启动时覆盖您的 /etc/resolv.conf 文件。
您可以通过编辑“/etc/dhcp/dhclient.conf”文件并为domain-name、domain-search和domain-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”。替换您的特定信息。
请注意,每一行都以分号结尾,域名用双引号括起来。