..

Windows 11 WSL2 使用Clash代理

前提

因为一些不可描述的原因,我们需要在WSL2中使用代理,这里使用Clash。

WSL + Clash

新版本的WSL 2网络模式默认是NAT,这一点可以从WSL2 Settings中查看。 在常规启用Clash的情况下,我们打开WSL 2 Ubuntu终端,会提示如下问题:

wsl: 检测到 localhost 代理配置,但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理。

我们在Ubuntu中尝试curl -I https://www.google.com 果然无法成功连接。 接着尝试开启Clash Tun模式,接管所有流量,依然无法成功连接。

Mirrored模式

我们将WSL2网络模式切换为Mirrored模式,参见 使用 WSL 访问网络应用程序 ,然后执行 wsl –shutdown 关闭WSL2后重启,成功连接。

curl -I https://www.google.com
HTTP/1.1 200 Connection established

WSL2 Ubuntu开发容器中测试

启动VS Code DevContainer, 在容器中执行curl -I https://www.google.com 测试也没有问题。

VS Code DevContainer

Clash Verge Tun模式的问题

Clash For Windows不更新后,改用了Clash Verge,碰到了在Tun模式下无法通过https访问网络的问题。

首先查看C:\Users\bmm.wslconfig文件。

[wsl2]
networkingMode=mirrored
dnsTunneling=true
autoProxy=true

然后查看Clash Verge的配置,确保启用局域网访问。

Clash Verge 启用局域网配置

紧接着测试,发现依然无法通过https访问网络,在clash verge rev的github issue中查阅,移除DNS劫持配置后问题解决。

Clash Verge 移除DNS劫持配置

参考资料