WSL2 网络的最终解决方案

2025 年 9 月 27 日

随着 WSL 的更新,如今很多配置可以在 WSL 附带的 WSL Settings 中便捷修改,其中也包括网络部分。

如今我们需要区分和理解 mirroredvirtioproxy 模式:

  • mirrored 模式:把 Windows 主机的网络接口“镜像”(mirror)到 WSL 实例,使 WSL 内的网络配置几乎与主机保持一致。也就是说,WSL 与 Windows 在同一个网络环境里、使用相似的 IP 地址等。
  • virtioproxy 模式:利用一种 “代理 / 转发” 机制,在 WSL 与 Windows 主机之间建立 Virtio 通道或代理,负责把网络流量在 WSL 和主机网络之间转发。它不完全是镜像主机接口,而是做一种更灵活的代理。微软文档中把它作为一种可选网络模式。

以下内容已过时(2025 年 9 月 27 日)

解决

最新版的WSL2允许用户自行指定用于WSL2的网卡,不再需要脚本等方式固定WSL2地址,同时支持IPv6和外部访问。

使用方法很简单,在用户目录%USERPROFILE%下创建一个配置文件.wslconfig,内容为:

1
2
3
4
[wsl2]
networkingMode=bridged # 桥接模式
vmSwitch=my-switch # 你想使用的网卡
ipv6=true # 启用 IPv6

然后使用wsl --shutdown; wsl重启WSL2即可。

这里使用Hyper-V创建了一个名为WSLBridge的外部虚拟交换机给WSL2用,则配置文件为:

1
2
3
4
[wsl2]
networkingMode=bridged
vmSwitch=WSLBridge
ipv6=true

参考

WSL2 网络的最终解决方案 - 知乎 (zhihu.com)