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

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

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

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

我以为我可以通过删除环回接口并按照/etc/network/interfaces说明添加 eth0 接口来解决这个问题jontsai 的 posterous 博客

我曾尝试过类似的事情:

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

然后事情会暂时正常运作,最终 resolv.conf 中的名称服务器会再次恢复。

PS 我也发布了这个ubuntu论坛


编辑:除了 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

答案1

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

首先,安装该resolvconf包。

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

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

答案2

(这个答案包含调查发生了什么的方法。如果您使用这些方法收集并提供更多信息,我可能能够提供实际的解决方案。)

似乎自发更新的一个可能触发因素/etc/resolv.conf是您的 DHCP 租约续订时。检查您获得的 DHCP 租约期限(我认为这应该出现在系统日志中/var/log/syslog)。

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

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

审计日志位于/var/log/audit/audit.log。您将看到文件的修改时间和修改文件的程序名称。

如果您resolvconf安装了该软件包,网络管理器可能会影响其运行。请尝试关闭所有网络接口,然后停止网络管理器 ( sudo service network-manager stop),然后重新启动它。

答案3

打开终端并输入

sudo chattr +i /etc/resolv.conf

+i 确保文件在启动时不会被重置,即使是 root 也是如此。

撤消上述操作

sudo chattr -i /etc/resolv.conf

更多

man chattr

答案4

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

向此文件添加任意条目:

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

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

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

相关内容