当我在具有不同 dhcp 服务器的不同网络之间切换时,我的resolv.conf
文件不会改变(其他设置如ip
和gw
会改变)。
解决方法是手动删除resolv.conf
并运行dhclient
。
我的接口文件如下所示:
猫/等/网络/接口
auto lo iface lo inet loopback
如何永久修复它?
答案1
我之前遇到过同样的问题,这是因为包resolvconf
没有安装。尝试使用
sudo apt-get install resolvconf
然后编辑 resolvconf 文件并通过以下方式重新启动网络
sudo /etc/init.d/networking restart
您的 /etc/network/interfaces 文件是什么样的?
我也从之前与您的类似的帖子中的这个答案中获得了提示。https://askubuntu.com/a/58802/49237
DHCP 租约续订时,可能会触发 /etc/resolv.conf 看似自发的更新。检查您获得的 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),然后重新启动它。
答案2
从 /etc/network/interfaces 中没有 iface 定义这一事实来看,我推断您正在使用 NetworkManager 来配置您的接口。
最初的问题可能是 NetworkManager 中的连接配置错误,例如,选择“仅自动(DHCP)地址”而不是“自动(DHCP)”作为“方法”。
还请考虑一下,由于某种原因,您的符号链接 /etc/resolv.conf -> ../run/resolvconf/resolv.conf 可能丢失了。请参阅错误 #1000244。修复该问题的方法是运行“dpkg-reconfigure resolvconf”。
删除 resolvconf 并不是最好的解决方案。这样做意味着您依赖 DHCP 客户端中的旧版支持来直接处理 /etc/resolv.conf。目前这样做可能有效,但引入 resolvconf 正是为了使这种干预变得有序。
答案3
我通过删除 resolvconf 来修复此问题。