最近似乎是windows wsl2进行了更新,可以看WSL2 的 2.0 更新彻底解决网络问题 - 知乎 (zhihu.com)这篇文章。
打开我许久没用的wsl,Ubuntu22wsl2
突然给了一个提示wsl: 检测到 localhost 代理配置,但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理。
一看到代理突然想起来,当时wls2
未更新镜像网络功能的时候,我用到了wls2
下的全局代理,可以看这篇文章为 WSL2 一键设置代理 - 知乎 (zhihu.com),在目前版本的使用过程发现这样的代理方式已经失效
ping google.com
PING google.com (172.217.163.46) 56(84) bytes of data.
^C
--- google.com ping statistics ---
33 packets transmitted, 0 received, 100% packet loss, time 33250ms
根据github上的issue回复,确实也是新版wsl2
的问题,可以看一下wsl 2.0.0 的Release 2.0.0 · microsoft/WSL (github.com)
按照issue上的解决方法
在Windows中的C:\Users\<your_username>
目录下创建一个.wslconfig文件,然后在文件中写入如下内容
[experimental]
autoMemoryReclaim=gradual # gradual | dropcache | disabled
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true
至于.wslconfig
的作用
.wslconfig
存储在你的 %UserProfile% 目录中。
用于在作为 WSL 2 版本运行的所有已安装的 Linux 发行版中全局配置设置。
只能用于 WSL 2 运行的发行版。 作为 WSL 1 运行的发行版不受此配置的影响,因为它们不作为虚拟机运行。
要访问 %UserProfile% 目录,请在 PowerShell 中使用 cd ~ 访问主目录(通常是用户配置文件C:\Users<UserName>
),或者可以打开 Windows 文件资源管理器并在地址栏中输入 %UserProfile%。 该目录路径应类似于:C:\Users<UserName>.wslconfig
WSL 将检测这些文件是否存在,读取内容,并在每次启动 WSL 时自动应用配置设置。 如果文件缺失或格式错误(标记格式不正确),则 WSL 将继续正常启动,而不应用配置设置。
下一步打开命令行输入下面命令关闭wsl,然后重新打开wsl就可以了
wsl --shutdown
如何没有恢复正常,可以考虑重置或者删去wsl
之前的网络代理配置
参考链接
为 WSL2 一键设置代理 - 知乎 (zhihu.com)