附:WSL 完整配置教程(侵删,仅作分享)
概述:
- WSL 有两个网络模式,分别为 默认网络模式:NAT 以及 镜像模式网络
- NAT模式是WSL1 以及 WSL2 的默认网络模式
- 仅有WSL2.0及以上 ,同时, Windows 11 版本 22H2 或更高版本用户 可以使用镜像模式网络
镜像模式网络解决代理配置:
请确保你的电脑 是 WSL2.0 及以上 Windows 11 版本 22H2 或更高版本用户
如果想升级 到 WSL2: 见 附
- 在C:\Users\your_user_name : 下 新建txt文件 并改名为 .wslconf
- 输入一下代码:
# 推荐的一些配置项如下
[wsl2]
# 是否强制 WSL2/WSLg 子系统使用 Windows 代理设置(请根据实际需要启用)
autoProxy=true
# WSL2/WSLg DNS 代理隧道,以便由 Windows 代理转发 DNS 请求(请根据实际需要启用)
dnsTunneling=true
# WSL2/WSLg 子系统的 Windows 防火墙集成,以便 Hyper-V 或者 WPF 能过滤子系统流量(请根据实际需要启用)
firewall=true
# 启用 WSLg GUI 图形化程序支持
guiApplications=true
# 启用 IPv6 网络支持
ipv6=true
# 启用 localhost 网络转发支持
localhostForwarding=true
# 限制 WSL2/WSLg 子系统的最大内存占用
memory=4GB
# 启用 WSL2/WSLg 子系统嵌套虚拟化功能支持
nestedVirtualization=true
# 启用镜像网络特性支持
networkingMode=mirrored
# 启用 WSL2/WSLg 子系统页面文件通报,以便 Windows 回收已分配但未使用的内存
#pageReporting=true
# 设置 WSL2/WSLg 子系统的逻辑 CPU 核心数为 8(最大肯定没法超过硬件的物理逻辑核心数)
processors=8
# 实验性功能
[experimental]
# 启用空闲内存自动缓慢回收
autoMemoryReclaim=gradual
# 启用 WSL2/WSLg 子系统和 Windows 宿主之间的本地回环互通支持
hostAddressLoopback=true
# 启用 WSL2/WSLg 子系统虚拟硬盘空间自动回收
sparseVhd=true
# 和 dnsTunneling 配合使用,决定是否使用 Windows DNS 缓存池
useWindowsDnsCache=false
第三步:
使用管理员权限在 PowerShell 窗口中运行以下命令,以配置 Hyper-V 防火墙设置,从而允许入站连接:
Set-NetFirewallHyperVVMSetting -Name ‘{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}’ -DefaultInboundAction Allow
或
New-NetFirewallHyperVRule -Name MyWebServer -DisplayName “My Web Server” -Direction Inbound -VMCreatorId “{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}” -Protocol TCP -LocalPorts 80
wsl官网 详情 以及 参考链接
最后再 cmd 输入:wsl --shutdown //重启wsl配置
再打开 wsl即可配置完成
想知道详情 以及 参考链接
镜像模式网络说明:
主要起作用的配置为一下:
- networkingMode=mirrored
# 启用镜像网络特性支持
- autoProxy=true
# 是否强制 WSL2/WSLg 子系统使用 Windows 代理设置(请根据实际需要启 )
- dnsTunneling=true
# WSL2/WSLg DNS 代理隧道,以便由 Windows 代理转发 DNS 请求(请根据实际需要启用)
- firewall=true
# WSL2/WSLg 子系统的 Windows 防火墙集成,以便 Hyper-V 或者 WPF 能过滤子系统流量(请根据实际需要启用)
镜像模式网络 配置失败 基本原因:
我个人遇到的原因 由以下,基本按这个流程走一遍,什么奇奇怪怪的配置问题都能解决
- wsl 或者windows版本不对
- 网络适配器vEthernet (WSL) 消失了 ,当我在cmd: ipconfig 时,没有出现vEthernet (WSL) 。因为我重置了我的windows网络,以及一些奇奇怪怪的操作,导致vEthernet (WSL)不见。
- 对于 “2” 的解决办法 :把 wsl 删除,并且重装 update 即可
cmd输入:
wsl --uninstall //删除
wsl --update //重装
windows代理 设置问题。把你windows 上的代理软件设置重置。以及右下角设置代理 调整,注意要 match 你的 代理软件 的 端口(port)(像我用clash 的默认端口就是7890)
防火墙问题。如果你曾经修改过入站或出站规则,并且实在改不好的话,那还是重置吧,上网搜一堆办法重置。