背景介绍

在使用WSL进行开发时,经常会遇到WSL内部无法使用Windows已配置的网络环境的问题, 尤其是VPN共享问题。本文介绍如何让WSL和Windows共享相同的网络配置 ,特别适合需要在开发环境中使用特定网络设置的场景。

具体步骤

1. 更改为mirrored模式

版本要求 : Windows 11 22H2 及以上, 详看官方文档

打开windows user目录下的.wslconfig文件,更改内容如下:

[wsl2]
nestedVirtualization=true
networkingMode=mirrored
[experimental]
autoMemoryReclaim=gradual
firewall=true
autoProxy=true

注意:在powershell里执行 wsl --shutdown 来使得.wslconfig被加载生效,后再用 wsl 来重启即可

参数说明:

  • networkingMode=mirrored:启用WSL的Mirrored模式,使得WSL的网络完全与主机共享
  • nestedVirtualization=true:确保WSL支持虚拟化功能(虽然不直接影响网络,但在某些场景下有用)
  • firewall=trueautoProxy=true:启用WSL的实验性网络功能,确保规则和代理设置更好地继承主机环境

网络同步检查

能否正确同步网络配置的关键点之一是出口IP是否一致:

  1. 在Windows中,可以通过浏览器访问 http://ifconfig.me 来查看Windows的出口IP
  2. 在WSL里使用 curl ifconfig.me 来查看出口IP

如果出口IP一致,那么多半已经是mirrored模式了。

额外检查:

进入WSL后使用:

ip addr
ip route

并且对照Windows中:

ipconfig

的结果,来确定是否进入了mirrored模式。

2. 使用网络代理工具的透明代理模式

如果你使用网络代理工具(如常见的开源代理管理工具 Clash verge),可以直接打开其透明代理/TUN模式(注意系统代理也要打开)。

打开后在powershell输入 ipconfig 能看到虚拟网卡信息,它会让所有流量都通过这个中转而使用配置好的网络环境。

例如你会看见诸如以下的内容 :

在WSL里输入 ip route 来检查WSL的默认网关是否和Windows里这个未知适配器Meta一致。 如果一致,恭喜你,已经成功了!

验证连通性

WSL中输入:

ping -c 3 www.bing.com

如果成功接收三个数据包,那么说明配置成功。

技术原理解释

1. 网卡、网关是什么?它们和ipconfig/ifconfig/ip route的关系

网卡(Network Interface Card, NIC) 是你连接网络的"物理"或"虚拟"设备,比如:

  • 有线网卡(Ethernet)
  • 无线网卡(Wi-Fi)
  • 虚拟网卡(如WSL虚拟适配器)

你用 ipconfig(Windows)或 ifconfig / ip a(Linux/WSL)看到的eth0、wlan0、Ethernet adapter都是网卡。

网关(Gateway) 是你的计算机连接外部网络的"出口"。 一般指的是路由器的地址,比如你家的路由器IP是192.168.1.1,那么它就是网关。

可以理解为: 你 = 计算机,网卡 = 你的网口,网关 = 把你引导出门去上网的"门"。

ipconfig、ifconfig、ip route的作用:

命令 用途
ipconfig Windows上查看IP、网关、DNS信息
ifconfig Linux/WSL上查看网卡IP(已过时)
ip a 替代ifconfig,更现代更详细
ip route 查看路由表,包括默认网关是谁

ip route时,看到的一般是:

default via 192.168.1.1 dev eth0

意思是:出网走eth0,网关是192.168.1.1

2. WSL的Mirrored模式是什么?为什么能共享网络环境

Mirrored mode是WSL的一种网络适配模式(WSL2默认是NAT)。

默认(旧)模式下:

  • WSL是个"虚拟子网",像个虚拟机,走自己内部的虚拟NAT
  • 所以WSL的流量不会直接共享Windows上的网络配置

Mirrored模式的特点:

  • 将WSL的网络"镜像"到Windows上,WSL里的虚拟网卡直接桥接Windows网络
  • 也就是说:WSL使用和Windows几乎一样的网络栈,可以共享网络环境

这就是WSL开启mirrored模式后能"共享网络配置"的根本原因。

3. 为什么仅开启mirrored模式还不够?为什么还要开启透明代理模式?

常见代理工具的工作方式主要有两种:

规则模式:

  • 只监听某个代理端口(如7890)
  • 只有手动设置代理的程序才会使用代理(WSL默认不会走)

透明代理/TUN模式:

  • 创建一个虚拟网卡
  • 将所有流量强制转发到代理工具里处理(包括WSL)
  • 不需要每个程序单独设置代理

所以为什么透明代理模式很重要:

  • mirrored模式只能让WSL流量"可达"Windows网络,即出口IP地址、DNS解析域等变得一致
  • 但并不能让它自动走代理,那部分流量依旧不会被代理工具处理
  • 透明代理模式会捕获WSL的出站流量,并通过配置好的网络中转出去

两者配合,才能让WSL流量自动使用Windows配置的网络环境。

总结

问题 解答
网卡/网关是什么? 网卡是连接网络的设备,网关是默认的出网口。通过ipconfig/ifconfig/ip route查看。
WSL mirrored模式? 让WSL的网络和Windows"共享",可以访问相同的网络环境。
为什么还要透明代理模式? mirrored只是让WSL能访问Windows网络,透明代理模式才能让它"自动使用代理"。

查看WSL的官方文档可获取更多详细信息。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐