wsl无法联网主因是windows侧网络配置偏差,核心在于虚拟交换机、dns解析与主机网络三者协同异常;常见解决法包括关wifi/拔网线后重启wsl、禁用自动生成resolv.conf并手动设dns、卸载冲突虚拟网卡驱动、重置hns服务及彻底重装wsl环境。
wsl无法联网,多数不是linux系统本身的问题,而是windows侧的网络配置出了偏差。核心矛盾集中在wsl2依赖的虚拟交换机、dns解析机制、主机网络状态三者之间是否协同正常。下面几个方向覆盖了90%以上的实际故障场景。
关掉WiFi或拔掉网线再启动WSL
这是最常被忽略却最有效的“重置触发点”。WSL2在初始化网络时会尝试绑定当前活跃的物理网卡,若此时WiFi或有线连接处于不稳定握手状态(比如刚连上、信号弱、认证未完成),会导致HNS(Host Network Service)配置失败,报错如networkingMode Nat → VirtioProxy或Temporary failure in name resolution。
- 以管理员身份打开PowerShell,运行 wsl --shutdown
- 立即关闭WiFi(无线用户)或拔掉网线(有线用户)
- 执行 wsl 启动发行版,此时通常不再报网络配置错误
- 启动成功后,再重新打开WiFi或插回网线
- 运行 ip addr show eth0 或 ifconfig,确认已获取到172.x.x.x段IP
禁用自动生成的resolv.conf并手动指定DNS
WSL2默认会从Windows读取DNS并写入/etc/resolv.conf,但这个过程容易被杀毒软件、代理工具或旧版驱动干扰,导致文件内容为空、重复、或指向无效地址(比如nameserver 127.0.0.53)。
- 在WSL中运行:sudo tee /etc/wsl.conf
- 删除现有resolv.conf:sudo rm /etc/resolv.conf
- 新建固定配置:echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf(也可换为114.114.114.114或你的路由器IP)
- 重启WSL:wsl --shutdown,再重新进入
检查并清理冲突的虚拟网卡驱动
VMware、VirtualBox、Docker Desktop、甚至某些企业级安全软件会安装自己的虚拟网卡驱动,它们可能抢占HNS资源或注册表项,导致WSL2虚拟交换机创建失败,设备管理器里看不到WSL Virtual Switch,或看到带黄色感叹号的VMware Virtual Ethernet Adapter。
- 按 Win+X → 设备管理器,展开“网络适配器”
- 查找含 VMware、VirtualBox、VMSwitch、Hyper-V 的条目,右键→“卸载设备”,勾选“删除此设备的驱动程序软件”
- 以管理员身份运行PowerShell,执行:Restart-Service hns -Force
- 必要时重置网络栈:netsh winsock reset && netsh int ip reset,然后重启电脑
重置WSL网络环境(干净重建)
当上述方法都无效,说明WSL内部网络状态已严重错乱,比如/var/run/wsl/残留、虚拟交换机损坏、或wsl.conf被多处覆盖。
- 备份好WSL内重要数据(如/home下的项目)
- 在PowerShell中依次执行:wsl --unregister Ubuntu(替换成你的发行版名)、wsl --shutdown
- 前往“启用或关闭Windows功能”,取消勾选适用于Linux的Windows子系统和虚拟机平台,重启
- 重启后重新勾选这两项,再重启
- 最后运行:wsl --install,让系统从头部署干净环境











