wsl网路问题
现象
WSL 以 Mirrored(镜像)模式启动时偶发报错:
CreateInstance/CreateVm/ConfigureNetworking/0x8007054f
无法配置网络 (networkingMode Mirrored),回退到 networkingMode None
此时 Ubuntu 只有 lo 和 docker0,没有 eth0、默认路由和 /etc/resolv.conf,所以完全无法联网。重启 Windows 后可能暂时恢复。
排查结论
- Windows 的 Wi-Fi、IPv4/IPv6、DNS 和 HTTPS 均正常。
- WSL、HNS、Hyper-V 相关服务均在运行。
- HNS 创建了 Mirrored Network,却没有创建 Endpoint(连接 WSL 的虚拟网络端点)。
- 清除 Windows 系统代理、完全退出 v2rayN/sing-box后,错误仍然存在,因此代理不是根因。
- 重连 Wi-Fi、重启 HNS 和
vmcompute、删除并重建 HNS 临时网络对象后仍然失败。 - 改用 NAT 后,
eth0、默认路由和 DNS 均正常,国内网络及 Windows 上的 v2rayN 代理也能使用。
因此,真正问题是当前 Windows/WSL 的 Mirrored 网络创建流程异常,不是 Ubuntu、热点、DNS、VPS 或 v2rayN 配坏。
诊断日志保存在:
D:\Desktop\WSL-Diagnostic\WslLogs-2026-08-11_16-38-29.tar.gz
.wslconfig 的修改
文件位置:
C:\Users\Kristin\.wslconfig
最终使用更稳定的 NAT:
[wsl2]
networkingMode=nat
[experimental]
autoMemoryReclaim=dropcache
firewall=true
autoProxy=false
networkingMode=nat:WSL 使用独立虚拟网段,再由 Windows 转发网络。autoProxy=false:不自动复制 Windows 的代理设置,避免无效警告。
WSL 使用 Windows 代理
Windows 的代理是 127.0.0.1:10808。在 NAT 模式中,WSL 的 127.0.0.1 指向 Ubuntu 自己,并不指向 Windows,所以 autoProxy=true 无法直接使用该地址。
Windows 在 WSL NAT 网络中的地址可以从默认路由动态取得:
windows_host_ip=$(ip route | awk '/^default/ {print $3; exit}')
开启代理:
export http_proxy="http://${windows_host_ip}:10808"
export https_proxy="http://${windows_host_ip}:10808"
关闭代理:
unset http_proxy
unset https_proxy
可以把以上命令封装到
~/.bashrc的proxy_on和proxy_off函数中。
这里我这样:把它封装成两个简短命令:
proxy_on
proxy_off
在 Ubuntu 的 ~/.bashrc 中加入:
proxy_on() {
local windows_host_ip
windows_host_ip=$(ip route | awk '/^default/ {print $3; exit}')
export http_proxy="http://${windows_host_ip}:10808"
export https_proxy="http://${windows_host_ip}:10808"
echo "代理已开启:${windows_host_ip}:10808"
}
proxy_off() {
unset http_proxy
unset https_proxy
echo "代理已关闭"
}
然后执行一次:
source ~/.bashrc
以后需要代理时只输入:
proxy_on
关闭时:
proxy_off
更换 VPS 时只需在 v2rayN 中更换节点,并保持本地监听端口 10808,WSL 配置不需要修改。
留言区
不收集任何个人信息;昵称只绑定浏览器里的随机 Cookie。