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

jon*_*sai 34 networking resolv.conf

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

$ cat /etc/resolv.conf
nameserver 192.168.16.1
domain localdomain
search localdomain
Run Code Online (Sandbox Code Playgroud)

我以为我通过摆脱环回接口并在 eth0 接口中添加jontsai 的海报博客/etc/network/interfaces上的说明来修复它

我试过这样的事情:

$ sudo ifconfig eth0 down
$ sudo ifconfig eth0 up
$ sudo /etc/init.d/networking restart
$ sudo dhclient
Run Code Online (Sandbox Code Playgroud)

然后事情会暂时起作用,最终 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
Run Code Online (Sandbox Code Playgroud)

没有这样的文件 /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
Run Code Online (Sandbox Code Playgroud)

Aze*_*ale 16

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

首先,安装resolvconf软件包。

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

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


Gil*_*il' 9

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

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

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

sudo auditctl -w /etc/resolv.conf -p w
Run Code Online (Sandbox Code Playgroud)

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

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


Pet*_*kas 8

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

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

supersede domain-name "my.domain.com";
prepend domain-search "my.domain.com";
Run Code Online (Sandbox Code Playgroud)

通过对此进行更改,您实际上可以对您的 resolv.conf 文件进行相当多的控制。

希望能帮助到你。

  • 这将是最干净的解决方案,但由于某种原因,它在几年前停止在我的系统上工作。从那以后,我一直在禁用 resolvconf 脚本或 chattr +i /etc/resolv.conf 。 (2认同)

tan*_*.01 5

打开终端并输入

sudo chattr +i /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)

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

要撤消上述操作

sudo chattr -i /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)

更多

man chattr
Run Code Online (Sandbox Code Playgroud)


小智 4

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

#!/bin/sh
make_resolv_conf(){
}
Run Code Online (Sandbox Code Playgroud)

它用负责刷新的同名替换标准函数resolv.conf