resolv.conf不断被某些东西重置

我需要帮助搞清楚为什么我的resolv.conf不断改变这一点,导致我无法访问外部互联网,只能访问本地网络:

 $ cat /etc/resolv.conf nameserver 192.168.16.1 domain localdomain search localdomain 

我想我通过摆脱loopback接口并在/etc/network/interfaces中的eth0接口添加jontsai的后期博客中的指令来修复它 。

我尝试过这样的事情:

 $ sudo ifconfig eth0 down $ sudo ifconfig eth0 up $ sudo /etc/init.d/networking restart $ sudo dhclient 

事情会暂时起作用,最终resolv.conf中的名称服务器会再次被恢复。

PS我也在ubuntuforums上发布了这个。


编辑:除了NetworkManager之外,还有至少一个其他程序正在写入resolv.conf ,我知道这一点,因为当我刷新NetworkManager时,生成的resolv.conf文件有一个注释,显示# Generated by NetworkManager ,以及它不断改变。

所以我想这个:

while true; do echo listening; lsof | grep /etc/resolv.conf; echo sleeping; sleep 1; done


编辑2:

添加文件输出:

 $ cat /etc/network/interfaces auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp 

没有/etc/NetworkManager/NetworkManager.conf这样的文件

 $ sudo cat /etc/NetworkManager/system-connections/Auto\ Ethernet [connection] id=Auto Ethernet uuid=#######omitted####### type=802-3-ethernet autoconnect=true timestamp=1314377063 [ipv4] method=auto ignore-auto-routes=false ignore-auto-dns=false dhcp-send-hostname=false never-default=false [802-3-ethernet] speed=0 duplex=full auto-negotiate=true mtu=0 [ipv6] method=ignore ignore-auto-routes=false ignore-auto-dns=false never-default=false 

您可以对/etc/resolv.conf进行静态添加。 这些添加可以覆盖自动添加的内容。

首先,安装resolvconf包。

然后,按Alt + F2并运行gksudo nautilus 。 如果要添加到文件的开头,请打开/etc/resolvconf/resolv.conf.d/head ; 如果要添加到最后,请打开/etc/resolvconf/resolv.conf.d/tail 。 进行更改,保存/关闭文件,然后运行sudo resolvconf -u以应用更改。

(很抱歉,我不记得文件开头或结尾的设置是否具有最高优先级。)

我有完全相同的问题 – 每次重新启动服务器时都会重写resolv.conf。

它是由DHCP引起的。 要将resolv.conf设置为我想要的,我编辑了/etc/dhcp/dhclient.conf并添加了以下内容:

 supersede domain-name "my.domain.com"; prepend domain-search "my.domain.com"; 

您可以通过对此更改来实际控制resolv.conf文件。

希望能帮助到你。

(这个答案包含调查正在发生的事情的方法。如果您使用这些方法收集并提供更多信息,我可以提供实际的解决方案。)

对于/etc/resolv.conf看似自发更新的可能触发器是续订DHCP租约。 检查你获得DHCP租约的时间(这应该出现在系统日志中,我想在/var/log/syslog )。

你可以使用auditd 安装auditd 找出修改文件的内容。 启动守护进程( sudo service auditd start )并告诉它监视对该文件的修改:

 sudo auditctl -w /etc/resolv.conf -pw 

审核日志位于/var/log/audit/audit.log 。 您将看到文件被修改的时间以及修改它的程序的名称。

如果安装了resolvconf软件包,网络管理器可能会踩到它的脚趾。 尝试关闭所有网络接口,然后停止网络管理器( sudo service network-manager stop ),然后重新启动它。

打开终端并输入

 sudo chattr +i /etc/resolv.conf 

+ i注意文件即使是root也不会在启动时重置。

撤消上述内容

 sudo chattr -i /etc/resolv.conf 

更多

 man chattr 

我通过在/etc/dhcp3/dhclient-enter-hooks.d创建一个名为disable_make_resolv_conf的文件来禁用resolv.conf的更新

 #!/bin/sh make_resolv_conf(){ } 

它用与resolv.conf刷新相同的名称替换标准函数。

我运气好的另一个选择是使用resolvconf

将任何条目添加到此文件:

 /etc/resolvconf/resolv.conf.d/base 

它们将被添加到/etc/resolv.conf

感谢Ask Ubuntu的post: 如何在resolv.conf中包含不会在重启时丢失的行?

迟到了,但我会发布我的案例,因为它与上述所有内容不同。

在我的例子中,/ /etc/resolv.conf/var/run/NetworkManager/resolv.conf的符号链接,由于某种原因cat /etc/resolv.conf给我错误没有这样的文件或目录(也许是因为它是空的? )

如果我用vi打开它并添加nameserver xxxx它可以工作,但在重启时会被清除。

我尝试编辑/etc/network/interfaces并添加dns-nameservers xxxx ,更改了/etc/dhcp/dhclient.conf并删除了request domain-name-servers ,也编辑了prepend domain-name-servers xxxx

未安装Resolvconf二进制文件, NetworkManager.conf没有任何相关内容。 但每次我重新启动机器时,都没有域服务器。

我不知道原因是什么,但它似乎与这是一个由GNS3启动的VBox机器这一事实有关,因为在VBox设置中,我不得不在没有创建界面的情况下离开它。 显然,当我启动机器时,GNS3会动态创建一个“UDP接口”,前提是我从GNS3启动它。

所以,为了让我无休止地搜索,我只是将echo nameserver xxxx> /etc/resolv.conf添加到/etc/profile ,问题解决了(没有解决,但解决了hehe)。 但如果有人遇到这种情况,知道这种情况会发生什么可能会很有趣。

只需在ifcfg-ethX文件中输入条目即可

DNS1 = 192.168.XX

DNS2 = 192.168.XX

DOMAIN = yourdomain.com

然后,在重新启动服务或重新启动框后,网络管理器会将这些记录发布到resolv.conf文件中。