在WSL上开启IPv6

最近在折腾IPv6,很多IPv6的命令,在 WSL下没法执行。

比如 ssh root@<ipv6> 或者 curl -6 ipv6.google.com,都是提示不支持IPv6,但实际上Windows是有IPv6地址的。

于是搜索了下,也是有很多人吐槽,有挺多英文版的”都2023年了,WSL还是不支持IPv6”等吐槽。

但最近,WSL 2023年9月的更新,引入了(实验性的)IPv6支持。

当然,还有一些别的特性,一并介绍如下:

  1. autoMemoryReclaim 特性允许 WSL 虚拟机通过在使用期间回收缓存内存来减少内存使用。
  2. Sparse VHD 特性会在使用 WSL 时自动缩小它的虚拟硬盘。
  3. 镜像组网模式(Mirrored mode networking)增强了网络兼容性,并为 WSL 引入了新特性(IPv6支持等)。
  4. dnsTunneling 特性修改了 WSL 解析 DNS 请求的方式,以提高网络兼容性。
  5. 防火墙(firewall)特性将 Windows 防火墙规则应用于 WSL,并为 WSL 虚拟机提供高级防火墙控制。
  6. autoProxy 特性使 WSL 能够自动使用来自 Windows 的代理信息,从而提高网络兼容性。

目前来看,前三点都是比较有用的。我们看下如何开启。

要启用这些功能,请在 Windows Home目录中创建一个 .wslconfig 文件 (例如C:\Users\<yourusername>\.wslconfig),并将以下部分添加到该文件中。

1
2
3
[experimental]
autoMemoryReclaim=gradual
networkingMode=mirrored

设置好后,关闭WSL虚拟机(wsl --shutdown)。

然后,检查下自己有哪些WSL虚拟机,并检查状态 wsl --list --all --verbose

然后开启 Sparse VHD 特性:wsl --manage Debian --set-sparse true

然后运行WSL虚拟机即可。

然后就可以看到了,IPv6是支持的了:

作者

Robert Lu

发布于

2024-03-31

许可协议

评论