contribute上次修改:2026-10-07

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。