在 WSL2 中使用 Clash for Windows 代理连接
本文最后更新于 2025 年 9 月 25 日 下午
本文撰写时基于的是 Ubuntu, 如果你使用其他发行版,则下文中的部分步骤与实际情况可能有所出入。
因为网络问题,在 WSL2 中配环境时通常会非常缓慢甚至失败。在整合了各方资料及个人实践后,我总结了在 WSL2 中通过 Clash for Windows 连接代理的方法,供大家参考。
当然,不限于 CFW,其他代理软件也是可以的
1. Clash 客户端内的操作
打开客户端的允许局域网连接 (Allow LAN) 开关,如图 1 所示。
记录下客户端内的端口 (Port),如这里是 16514. 一般默认端口为 7890.
2. 配置
方法一
这个方法需要 Windows 11 22H2 和 WSL 2.0.5 及以上版本,如果你不满足版本要求,请参考方法二。
你可以使用 winver 和 wsl -v 查看你的 Windows 和 WSL 版本。
如果你使用这个方法,你需要确保 Clash 客户端中设置的系统代理类型为 HTTP 而不是 PAC,否则无法代理 HTTPS 请求:
如果你确实需要使用 PAC 模式,请参考方法二,在 shell 的配置文件中添加:
1 | |
在开始菜单中搜索 WSL Settings, 在网络 > 网络模式处选择 Mirrored 即可:
关于镜像模式网络的更多信息请参考这里。
如果你的 WSL 版本低于 2.3.11, 则图形配置界面不可用。
你可以在 C:\Users\<UserName>\.wslconfig 文件中 (如果不存在就手动创建一个) 加入以下内容:
1 | |
不过需要注意,shell 的配置文件中不能再 export http_proxy=....
方法二
编辑终端配置文件 (如 .bashrc, .zshrc 等), 在文件末尾根据第 1 步记录的端口号,加入三行内容:
1 | |
如图 3 所示,修改完后保存即可。
运行 source ~/.xxxrc (配置文件名) 使文件修改生效,可以通过输入 echo $http_proxy 验证修改是否成功。
3. 使 root 用户保留先前设置的环境变量
在使用 sudo 执行命令时,之前设置的环境变量并不会生效,需要进一步设置。
输入 sudo visudo, 如果你使用 Ubuntu 20.04, 加入以下内容并保存,如图 4-1 所示。
1 | |

如果你使用 Ubuntu 22.04/24.04, 则你看到的内容应与图 4-1 不同。如下图所示,取消相应行的注释 (删除行首的 #) 即可.
4. 测试
输入 wget www.google.com, 可以发现连接成功,至此大功告成,如图 5 所示。
参考资料
为 WSL2 一键设置代理 (zhihu.com)
sudo保持前用用户的env环境变量 (chenyudong.com, 已失效)