type
status
date
slug
summary
tags
category
icon
password
背景
之前个人在WSL2(Ubuntu22LTS)中一直使用的是全局代理。
今天升级完WIN11之后,WSL2也显示需要升级才能使用。而WSL2升级之后,进入子系统却显示:
wsl: 检测到 localhost 代理配置,但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理。
全局代理
在WSL中(或者说WSL的默认设置中),Linux子系统和Window在网络上是两台各自独立的机器,从 Linux 子系统访问 Windows 首先需要找到 Windows 的 IP。
当通过在shell配置文件中加入了以下命令,设置了全局代理:
解决方案:设置WSL网络模式为Mirrored
途径1:图形界面
- 打开 WSL setting

- 设置网络模式为Mirrored

- 重启WSL
途径2:配置.wslconfig文件
- 在Windows中的
C:\Users\<your_username>
目录下创建一个.wslconfig文件,然后在文件中写入如下内容:
这和在图形界面中设置是一样的。实际上我使用图形界面设置完网络模式之后,就自动生成了这个配置文件。
- 重启WSL
解决方案2:设置关闭自动代理
保持NAT模式,但是关闭自动代理
途径1 图形界面:

途径2:配置.wslconfig文件



效果
设置为Mirrored模式后,可以发现子系统和Windows的网络胡同,并且IP地址相同了。自然也不同特地设置网络代理啥的。
但是要注意把之前已经失效的全局代理设置(如果有的话)关闭掉。
补充:推荐的WSL配置
以下是各个配置项的详细说明
autoMemoryReclaim
当设置为
gradual
时,在 WSL 空闲 5 分钟后,WSL 将开始慢慢释放 Linux 中的缓存内存,并将其作为空闲内存返还给 Windows 主机。此功能的工作原理是,WSL 通过检测 CPU 使用率是否在 5 分钟内持续低位,来判断是否处于空闲状态,随后开始通过使用 cgroup 的
memory.reclaim
功能回收缓存内存。WSL会回收虚拟机内存的固定部分,该部分的计算方式是,如果虚拟机内存全是缓存内存,经过 30 分钟后缓存内存将减少为零(例如:如果你的内存为 3000MB,我们每分钟回收 100MB)。设置为
dropcache
时,这将在检测到空闲后完全丢弃缓存,并且不需要任何 cgroup 修改。dnsTunneling
当 WSL 无法连接到互联网时,一个可能的原因是 DNS 请求被阻止。这是因为 WSL 虚拟机发送到 Windows 主机的 DNS 网络包被现有的网络配置阻止了。
DNS 隧道技术通过使用虚拟化功能直接与 Windows 通信来解决这个问题。
这样,我们就能在不发送网络包的情况下解析 DNS 请求,这将帮助我们在使用 VPN、特定防火墙设置或其他网络配置的情况下,仍然能够获得更好的网络连接。这个功能应当能改善网络兼容性,减少我们在 WSL 内无法连接网络的情况。
firewall(Hyper-V Firewall)
Hyper-V 防火墙允许你指定适用于 WSL 的防火墙设置和规则。此外,默认情况下,Windows 上所有现有的防火墙设置和规则将自动应用于你的 WSL 发行版。启用此功能后,你可以通过在 Windows 防火墙设置中创建新的防火墙规则,并看到它们立即应用到 WSL,或者你可以通过在 PowerShell 中运行以下命令,创建仅适用于 WSL 的新规则:
New-NetFirewallHyperVRule
。autoProxy
该功能旨在提高使用 HTTP 代理时的网络兼容性。目前,如果你在 Windows 上使用 HTTP 代理,它不会直接应用到你的 WSL 发行版。通常,如果你想在 WSL 中设置 HTTP 代理,你需要像在 Linux 系统上一样手动配置,否则可能会遇到连接问题。这个功能的目标是解决这个问题,通过自动使用 Windows 上的 HTTP 代理信息,在 Linux 中设置 HTTP 代理。
Automatic disk space clean up (Set sparse VHD)
这个设置会自动将任何新创建的 VHD 设置为稀疏 VHD,从而能够自动减少它们的大小。
此外,可以通过
wsl --manage <distro> --set-sparse <true/false>
命令,根据需要设置现有的发行版是否为稀疏 VHD。networkingMode=mirrored
默认情况下,WSL 使用基于 NAT(网络地址转换)的网络体系结构,或者说默认情况下
networkingMode=NAT
。这个设置将令WSL使用镜像网络模式。
启用 Mirrored 模式的优点:
- 支持 IPv6:WSL 中增强了对 IPv6 的支持。
- 连接 Windows 服务器:Linux 系统可以通过
localhost
地址127.0.0.1
直接连接 Windows 中的服务。
- 本地网络连接:可以直接从本地网络(LAN)上的其他设备连接到 WSL。
- VPN 兼容性:增强了 WSL 与 VPN 的兼容性。
- 支持多播:WSL 现在支持多播,这在之前是无法使用的功能。