Featured image of post 解决WSL中的网络互通问题 实现主机与Linux子系统间的无缝连接

解决WSL中的网络互通问题 实现主机与Linux子系统间的无缝连接

当 WSL 2 环境下出现网络互通问题时,通常是由于网络代理配置未镜像到 WSL,或 NAT 模式下的网络配置导致的。本文将详细介绍如何通过编辑 .wslconfig 文件来优化 WSL2 的网络设置,解决主机与 WSL 子系统之间的网络连接问题。通过配置内存回收策略、网络模式、DNS 设置、防火墙选项等,确保 WSL2 和 Windows 主机之间实现无缝的网络连接。本文还提供了启用稀疏虚拟硬盘的步骤,帮助你有效管理 WSL2 的内存和磁盘使用,从而提高系统性能和资源利用率。

阅读时长: 3 分钟
共 1059字
作者: longlikun

解决办法

要解决 WSL2 网络互通问题并优化性能,可以通过编辑 .wslconfig 文件来实现。以下是详细步骤和参数说明:

步骤 1: 编辑 .wslconfig 文件

打开文件资源管理器,导航至 %UserProfile% 目录(通常是 C:\Users\你的用户名) 如果不存在,创建一个名为 .wslconfig 的新文件。 使用文本编辑器(如 Notepad)打开 .wslconfig,并输入以下配置:

[experimental]
autoMemoryReclaim=gradual  # 选择 gradual、dropcache 或 disabled
networkingMode=mirrored      # 设置为 mirrored 或 isolated
dnsTunneling=true            # 选择 true 或 false
firewall=true                # 选择 true 或 false
autoProxy=true               # 选择 true 或 false
sparseVhd=true               # 选择 true 或 false

参数说明

autoMemoryReclaim:控制 WSL 2 的内存回收策略

gradual:渐进式内存回收。WSL 会在需要时自动回收内存,但不会立即释放所有未使用内存。
dropcache:立即释放所有未使用内存。这可能会导致性能下降,但可以确保释放所有可用的内存。 disabled:禁用自动内存回收。这可能会导致内存泄漏,但可以提供最佳性能。

networkingMode:设置 WSL 2 的网络模式

mirrored:使用与 Windows 相同的网络设置。
isolated:为 WSL 分配独立的网络连接。

dnsTunneling:控制 DNS 请求的处理方式。

true:将所有 DNS 请求路由到 Windows DNS 解析器。
false:允许 WSL 使用自己的 DNS 解析器。

firewall:是否启用 Windows Defender 防火墙对 WSL 流量的筛选。

true:启用 Windows Defender 防火墙。
false:禁用 Windows Defender 防火墙。

autoProxy:是否自动使用 Windows 代理设置。

true:自动检测和使用 Windows 代理设置。
false:不使用 Windows 代理设置。

sparseVhd:是否使用稀疏虚拟硬盘 (VHD),节省磁盘空间但可能影响性能。

true:使用稀疏虚拟硬盘 (VHD)。这可以节省磁盘空间,但可能会导致性能下降。
false:使用固定大小的 VHD。这可以提供最佳性能,但需要更多磁盘空间。

步骤 2: 应用配置

保存 .wslconfig 文件的更改。 打开命令提示符或 PowerShell,执行以下命令以关闭并重启 WSL 服务:

wsl --shutdown

步骤 3: 启用稀疏虚拟硬盘

对于需要启用稀疏 VHD 的发行版,运行以下命令:

wsl --manage <发行版名称> --set-sparse true

将 <发行版名称> 替换为你的 WSL 发行版名称,如 ubuntu22.04,可通过 wsl --list查询版本。。

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

参考

GitHub Issue #10753
WSL 官方文档

关注我获取更多资讯

公众号
📢 公众号
个人号
💬 个人号
使用 Hugo 构建
主题 StackJimmy 设计