WSL2 今天史诗级更新

2023 年 9 月 19 日
 hez2010

今天 WSL2 更新了 2.0.0 版本,详细更新内容见: https://github.com/microsoft/WSL/releases/tag/2.0.0

总结一下主要是:

  1. 支持自动回收内存
  2. 支持自动释放 WSL2 虚拟硬盘空间
  3. 支持和 Windows 使用相同的网络(镜像网络)
  4. 支持 DNS Tunneling
  5. 支持 Windows 设置的代理
  6. 支持 Windows 防火墙
  7. 支持 Multicast

需要至少 Windows 11 23H2 ,目前还没有发布正式版本,不过可以考虑加入 Insider 的 Release Preview 或者 Beta 通道,更新系统之后运行 wsl --update --pre-release 升级 WSL ,然后就可以在 %userprofile%\.wslconfig 里面设置以下内容:

[experimental]
autoMemoryReclaim=gradual # 可以在 gradual 、dropcache 、disabled 之间选择
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true

然后你会发现,WSL2 和 Windows 主机的网络互通而且 IP 地址相同了,还支持 IPv6 了,并且从外部(比如局域网)可以同时访问 WSL2 和 Windows 的网络。这波升级彻底带回以前 WSL1 那时候的无缝网络体验了,并且 Windows 防火墙也能过滤 WSL 里的包了,再也不需要什么桥接网卡、端口转发之类的操作了。

47372 次点击
所在节点    程序员
194 条回复
tsanie
2023 年 10 月 10 日
@worldquant #178 我是 22H2 正式版 22621.2361 ,然后安装了个 23H2 启用包 KB5027397 ,版本号更新为 22631.2361

启用包就 180K ,安装后更新通道还是在正式版,没有加入 insider program

https://z1.ax1x.com/2023/10/10/pPxICtg.png
infinityv
2023 年 10 月 13 日
我是 beta 通道 当前是 22H2 22621.2428 ,更新到 23H2 一直失败(下载进度卡 0%然后失败)报错“我们目前找不到为你的版本发布的任何更新”。不知道咋办
skrbug
2023 年 10 月 18 日
我碰到个奇怪的问题,wsl2 + easyconnection 好像没办法一起配合使用
sunmoon1983
2023 年 11 月 8 日
```
PS C:\Users\Abc> wsl -u root
wsl: Unknown key 'experimental.autoMemoryReclaim' in C:\Users\Abc\.wslconfig:2
wsl: Unknown key 'experimental.networkingMode' in C:\Users\Abc\.wslconfig:4
wsl: Unknown key 'experimental.dnsTunneling' in C:\Users\Abc\.wslconfig:5
wsl: Unknown key 'experimental.firewall' in C:\Users\Abc\.wslconfig:6
wsl: Unknown key 'experimental.autoProxy' in C:\Users\Abc\.wslconfig:7
```
TomCN
2023 年 11 月 10 日
今天更新了 23H2 ,正式版可以用了

==========================================================================
$ curl -svo /dev/null https://google.com
* Uses proxy env variable no_proxy == '192.168.*,172.31.*,172.30.*,172.29.*,172.28.*,172.27.*,172.26.*,172.25.*,172.24.*,172.23.*,172.22.*,172.21.*,172.20.*,172.19.*,172.18.*,172.17.*,172.16.*,10.*,127.*,localhost'
* Uses proxy env variable https_proxy == 'http://127.0.0.1:10809'
* Trying 127.0.0.1:10809...
* Connected to (nil) (127.0.0.1) port 10809 (#0)
* allocate connect buffer!
* Establish HTTP proxy tunnel to google.com:443
> CONNECT google.com:443 HTTP/1.1
> Host: google.com:443
> User-Agent: curl/7.81.0
> Proxy-Connection: Keep-Alive
>
< HTTP/1.1 200 Connection established
<
TomCN
2023 年 11 月 10 日
@TomCN #185 不过有个问题,代理变更之后,Windows 会收到“在主机上检测到 Http 代理更改。请重启 WSL 以应用更改。”

要是能实时变更就好了,希望后续更新能够改善~
nextone
2023 年 11 月 17 日
WSL 2.0.9 发布了,Windows 10 22H2 能用吗
qwqaq
2024 年 2 月 27 日
@sunmoon1983 #104 @lblblong #2 @lilei2023 #26 @qing18 #47

Windows 10 21H2 (19044.4046) 亲测能用 WSL2

官方文档里提的版本要求是:Windows 10 version 2004 and higher (Build 19041 and higher) or Windows 11

https://learn.microsoft.com/en-us/windows/wsl/install
qwqaq
2024 年 2 月 27 日
#188

😅 但是 `networkingMode=mirrored`、`firewall`、`dnsTunneling`、`autoProxy` 文档里说 Win10 不能用:

https://learn.microsoft.com/en-us/windows/wsl/wsl-config

> Entries with an * after the value type are only available on Windows 11.
>
> Entries with an ** after the value type require Windows 11 version 22H2 or higher.
Shook
2024 年 2 月 29 日
请问应用了新版以后,可以 ping google.com 但是无法 curl 'http://google.com' 应该咋办啊?
ayiyaha
2024 年 3 月 9 日
@leeyuzhe 171 天过去了,2024-03-09,idea 访问 wsl 的项目还是 127.0.0.42,还有这个问题, 只能通过 remote wsl 连接,但那个有点占内存,唉
ThisDay
2024 年 3 月 11 日
set `wsl.proxy.connect.localhost` registry value 这个可以,但还是有别的奇奇怪怪的问题,比如 kafka 在 mirrored 模式下老是获取不到客户端 ip 。。。
ayiyaha
2024 年 3 月 16 日
@leeyuzhe 目前是 network mirror 模式, registry 里设置了`wsl.proxy.connect.localhost` true 也不管用, 都是报错"connect refused: 127.0.0.42:xxx", 好像还是通过 resolv.conf 找宿主机 ip
ThisDay
2024 年 4 月 11 日
@ayiyaha #193
在.wslconfig 里面加这个
[experimental]
hostAddressLoopback=true

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/975098

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX