WSL2 连不上网、访问不了磁盘?这样修
WSL2 让 Windows 跑起了完整的 Linux 内核,但它基于轻量虚拟机,网络与文件系统都经过一层转换,于是『ping 不通外网』『看不到 C 盘』『新建文件权限全是 777』成了高频问题。本文按这两类故障分别处理。
一、网络不通的常见原因
- WSL2 使用 NAT 网络,宿主连 VPN 或代理时常导致 DNS 解析失败。
- 执行
cat /etc/resolv.conf看 nameserver 是否为宿主网关。 - 被代理软件改写的
http_proxy环境变量也会阻断直连。
二、重置 WSL 网络
- 在 PowerShell 执行
wsl --shutdown完全关闭子系统。 - 重新打开终端,网络栈会被重建,多数断网自愈。
- 若 DNS 仍错,可在
/etc/wsl.conf中固定generateResolvConf=false并手动写 resolv.conf。
三、访问 Windows 磁盘的路径
- Windows 各盘自动挂载在
/mnt/c、/mnt/d下。 - 若某盘不见,确认未被『可移动磁盘』策略排除。
- 用
\wsl$反向从资源管理器访问 Linux 文件。
四、自动挂载与 fstab
- 编辑
/etc/wsl.conf,在[automount]下设置enabled=true。 - 需开机自挂其他盘,可在 Windows 侧用
wsl.conf的mount段声明。
五、文件权限与 metadata 选项
- 默认跨文件系统文件权限显示为 777,可在 automount 加
options=metadata。 - 这样 Linux 内
chmod才能真实生效,脚本可执行位不再丢失。
六、主机名解析与跨系统互访
- WSL2 内可用
hostname.local或\wsl$让 Windows 访问其服务。 - 反向从 Linux 访问 Windows 服务,用
host.docker.internal思路的localhost并不通,应填宿主 IP。 - 需固定 IP 时,可在
.wslconfig中配置网络段。
技术总结:WSL2 的网络与挂载都靠 wsl.conf 与宿主协同。断网先 wsl --shutdown 重建,磁盘可见性与权限靠 automount 的 metadata 选项修正,跨系统互访则需分清 localhost 与宿主地址。