2013-03-12 49 views

回答

2

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

0

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

+0

我试过你链接到的解决方案,但它不起作用。看起来网络管理器是这样做的,因为/etc/resolv.conf中的第一行显示为:“#由NetworkManager生成”。一般来说,有没有办法知道编辑/etc/resolv.conf的程序? – mkhezr 2013-03-12 17:55:13

0

我用下面一行: chattr命令+我在/etc/resolv.conf

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

让我知道它的工作.. 。

0

网络管理器可以配置为使用手动输入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检测到网络已启动,第二个修复未应用 - 它们都是修复应用所必需的。

10

正如你在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 

然后重新生成的resolv.conf和resolvconf:

sudo resolvconf -u 
2

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

    我不使用 resolvconf
  • ,只是普通的/etc/resolv.conf
  • 使用chattr +i锁定resolv.conf似乎太hacky。我需要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上适用于我。

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部分删除了相同的部分。

0

如果服务器实例的网络接口受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”。替换您的特定信息。

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