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

Networking 如何防止/etc/resolv.conf在Ubuntu 11.10中重新启动后被覆盖?,networking,dns,ubuntu-11.10,dhcp,Networking,Dns,Ubuntu 11.10,Dhcp,我使用的是Ubuntu11.10,我在/etc/resolv.conf中手动配置DNS服务器,但在我重新启动后它会被覆盖。我怎样才能防止这种情况 谢谢。您的DHCP客户端正在执行此操作。按照这些操作覆盖该文件。我认为NetworkManager正在覆盖/etc/resolv.conf文件。在我的例子中,我想改变的是我的DNS服务器的排列顺序。您可以通过NetworkManager编辑连接IP4V设置来完成此操作 我使用以下行: chattr+i/etc/resolv.conf 要撤消,请使用:

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


谢谢。

您的DHCP客户端正在执行此操作。按照这些操作覆盖该文件。

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

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

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


让我知道它是否工作…

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

但是,您可能希望在类似/etc/resolv.conf的名称服务器或域中有自己的设置进行搜索;我只需要一个域,我添加了一个文件/etc/NetworkManager/dispatcher.d/99my_fix,其中包含:

#/bin/bash
rc=/etc/resolv.conf;le=“搜索我的域名”
grep-q域$rc&!grep-q“$le”$rc&&echo“$le”>>$rc


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

如您在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
    似乎太老套了。我需要木偶在必要时自由地进行更改
I found使用其文档化的钩子覆盖了
dhclient
的默认行为

/etc/dhcp/dhclient enter hooks.d/nodnupdate
处创建一个新文件,包含以下内容:

#!/bin/sh
make_resolv_conf() {
    :
}
然后使文件可执行:

chmod +x /etc/dhcp/dhclient-enter-hooks.d/nodnsupdate
现在,当dhclient运行时——无论是在重新启动时还是在手动运行
sudoifdown-a时;sudo ifup-a
——它加载此脚本
nodnupdate
。此脚本覆盖名为
make_resolv_conf()
的内部函数,该函数通常会覆盖
resolv.conf
,而不执行任何操作


这在Ubuntu 12.04上对我很有效。

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

取代域名“local.com”;
取代域名服务器192.168.56.103

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


我也从
请求
部分删除了相同的内容。

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

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

supersede domain-name "mydomain.com";
supersede domain-search "mydomain.com"
supersede domain-name-servers 8.8.8.8;
在这种情况下,名称服务器位于“8.8.8.8”,域名为“mydomain.com”。替换您的特定信息


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

我尝试了您链接到的解决方案,但它不起作用。看起来网络管理器正在这样做,因为/etc/resolv.conf中的第一行显示:“由NetworkManager生成”。一般来说,是否有办法了解编辑/etc/resolv.conf的程序?