之前使用 WSL2 时,如果主机开启了代理,WSL2 会提示:
wsl: 检测到 localhost 代理配置,但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理。
然而,从 2023 年 9 月的史诗级更新开始,WSL2 已经支持和宿主机共享 IP 等全新功能1 。
具体配置方法如下:
-
先关闭 WSL :
wsl --shutdown
确认 WSL 版本 ≥2.1.5 且 Windows11 至少为 23H2:
wsl --version
如果 WSL 版本不满足条件,需要升级:
wsl --update
-
更新 WSL 配置文件。在宿主机的
C:\Users\[用户名]\
文件夹下新建.wslconfig
文件,并编辑内容为:[wsl2] dnsTunneling=true firewall=true networkingMode=mirrored autoProxy=true [experimental] autoMemoryReclaim=dropcache sparseVhd=true
如果你使用的是 pre-release 版本,
dnsTunneling
可能已经默认开启了2。 -
查看你使用的发行版的名字:
wsl --list
然后启用稀疏 VHD 允许 WSL2 的硬盘空间自动回收:
wsl --manage [发行版名字] --set-sparse true
-
启动 WSL,删除之前配置的代理。例如删除
.bashrc
中的相关语句、取消 git 代理等:git config --global --unset http.proxy git config --global --unset https.proxy
-
在
C:\Users\[用户名]\.docker\daemon.json
中添加:"iptables": false
-
在宿主机 VSCode 的设置中搜索
Remote: Auto Forward Ports
,关闭掉。
现在,打开宿主机的代理,并在 WSL 中测试一下是否成功修改:
wget www.google.com
Comments