解决 WSL Ubuntu 中 /etc/resolv.conf 自动重置问题
解决 WSL Ubuntu 中 /etc/resolv.conf 自动重置问题
-
-
- 前言
- 问题描述
- 问题原因
- 尝试过的命令及分析
- 解决方案:修改 `wsl.conf` 禁用自动生成
- 总结
-
前言
在使用 Windows Subsystem for Linux (WSL) 的 Ubuntu 子系统时,你可能会遇到 /etc/resolv.conf
文件被自动重置的问题。即使你手动删除或修改了这个文件,它仍然会被恢复到默认配置,例如被设置为 nameserver 192.168.31.2
。 本文将深入探讨这个问题的原因,并提供有效的解决方案,同时回顾一些可能无效的尝试性操作,帮助你彻底解决 WSL Ubuntu 中的 DNS 配置困扰。
问题描述
正如用户遇到的情况,即使执行 sudo rm /etc/resolv.conf
删除了 /etc/resolv.conf
文件,或者使用 sudo tee /etc/resolv.conf <<< "nameserver 192.168.31.111"
尝试手动设置 nameserver
,重启 WSL 后,/etc/resolv.conf
文件仍然会被重置为包含 nameserver 192.168.31.2
的内容。 这导致用户自定义的 DNS 设置无法生效,影响网络访问。
问题原因
这个问题的根源在于 WSL 的网络配置机制。 WSL 默认被设计为与 Windows 主机网络环境紧密集成。 为了简化网络配置,WSL 会自动生成 /etc/resolv.conf
文件,并使其 镜像 Windows 主机当前的 DNS 设置。 这意味着,每次 WSL 启动或网络环境发生变化时,WSL 都会重新生成 /etc/resolv.conf
,覆盖任何手动修改。
因此,仅仅删除或临时修改 /etc/resolv.conf
文件是无法持久解决问题的。我们需要 阻止 WSL 自动生成该文件,并采取其他方式来配置 DNS。
尝试过的命令及分析
为了更好地理解问题,并帮助读者避坑,我们先回顾一下用户尝试过的一些命令,并分析其效果:
ls -l /etc/resolv.conf
- 作用: 列出
/etc/resolv.conf
文件的详细信息,包括权限、所有者、大小和修改时间等。 用于确认文件是否存在以及基本属性。
cat /etc/resolv.conf