前言
工作需求导致需要使用到WSL2,git的时候出现网络原因无法拉取。故记录一下走完整个WSL2代理的流程
WSL1 和 WSL2 网络的区别
在 WSL1 时代,由于 Linux 子系统和 Windows 共享了网络端口,所以访问 Windows 的代理非常简单。例如 Windows 的代理客户端监听了 8000 端口,那么只需要在 Linux 子系统中执行如下命令,就可以让当前 session 中的请求通过代理访问互联网。
export ALL_PROXY="http://127.0.0.1:8000"
但是 WSL2 基于 Hyper-V 运行,导致 Linux 子系统和 Windows 在网络上是两台各自独立的机器,从 Linux 子系统访问 Windows 首先需要找到 Windows 的 IP。
具体流程
这里使用到的魔法软件是clash-Verge,可以在GitHub上下载到
clash-verge Github地址
自己配置好代理之后,就可以进行WSL2的代理配置了。
选择好代理,选择全局模型、开启代理,然后在软件的配置页面选择:
打开局域网连接,端口配置为默认的7890即可。然后点击局域网连接旁边的网络图标,查看主机的IPV4地址:
临时配置
进入WSL2的操作系统当中,执行:
export http_proxy="192.168.0.1:7890"
export https_proxy="192.168.0.1:7890
永久配置
如果你需要永久设置这些环境变量,可以将这些设置添加到shell 配置文件中(如 ~/.bashrc 或 ~/.zshrc),在 WSL 中依次运行:# 将 http 代理地址永久写入WSL的环境变量
echo 'export http_proxy="192.168.0.1:7890"' >> ~/.bashrc
# 将 https 代理地址永久写入WSL的环境变量
echo 'export https_proxy="192.168.0.1:7890"' >> ~/.bashrc
# 重启环境变量
source ~/.bashrc
测试
测试之前记得打开魔法软件的全局代理和系统代理
然后执行:
# 测试 http 链接
curl -I http://example.com
# 测试 https 链接
curl -I https://example.com
如下,说明配置成功了,enjoy yourself~~~