WSL2同步Windows的网络配置以及网络代理
本文介绍如何配置WSL2使用mirrored网络模式, 共享Windows主机的网络环境 (尤其vpn),解决开发中的网络不一致问题。通过启用mirrored网络模式,WSL可直接使用Windows的网络设置, 从而解决网络代理共享的问题。文章讲解了修改.wslconfig文件的步骤、配置验证方法,以及如何配合透明代理模式实现完整网络共享。同时解释了网络模式的工作原理及优势,适合需要在WSL中保持
背景介绍
在使用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=true
和autoProxy=true
:启用WSL的实验性网络功能,确保规则和代理设置更好地继承主机环境
网络同步检查
能否正确同步网络配置的关键点之一是出口IP是否一致:
- 在Windows中,可以通过浏览器访问 http://ifconfig.me 来查看Windows的出口IP
- 在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的官方文档可获取更多详细信息。
更多推荐
所有评论(0)