WSL2内使用Windows的v2ray代理
WSL2内使用Windows的v2ray代理
在WSL2中使用install或git命令是总是因为网速问题失败,我们在部署配置环境时就最好需要使用代理,但WSL2 因为是通过虚拟机的方式实现,网络不再像 WSL1 一样与 Windows 共享,变成了一个新的网段,所以想使用宿主机的代理就比较麻烦,这里参考网上资料这里给出设置方法。
一、Windows内设置
v2ray客户端开启允许来自局域网的连接

二、WSL2内设置
1. 修改DNS服务器地址
修改由于使用代理不能再通过宿主机IP获取nameserver,这里在/etc/resolv.conf直接设置nameserver为GoogleDNS地址8.8.8.8或者其他可用的dns服务器地址。
| 1 | # This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf: | 
根据此注释可以看到这个文件是由 WSL 自动生成的。也就是每次自动生成就会覆盖掉我们对nameserver的修改,要停止自动生成此文件要在/etc/wsl.conf中设置generateResolvConf为false。
| 1 | [network] | 
2. 获取主机IP并设置代理
WSL2 会在首次启动时创建一个虚拟网卡用于提供 WSL2 的网络,默认情况下这个网段是动态,这里我们使用ip route命令在网络路由信息中找到主机在WSL2中映射的IP地址。

有了主机IP之后我们就可以通过v2ray中设置的端口设置代理了(v2ray中默认本地监听端口为10808)  
| 1 | export http_proxy='socks5://主机IP:<Port>' | 
设置完之后可以用curl -v google.com测试下。
3. 编辑bashrc配置文件实现代理命令
在主目录中找到bash的隐藏配置文件.bashrc,在文件后面加入以下代码,后面就可以使用proxy命令和unproxy命令实现代理或取消代理。
| 1 | 
 | 
三、测试效果
用户对 bashrc 所作的任何更改将在您下次启动终端时应用,如果想立即生效可以手动执行如下命令刷新:
| 1 | source ~/.bashrc | 
重启终端或刷新配置文件后

四、错误排查
如果配置不起作用或报错需排查以下:
1. DNS服务器地址设置错误
ping youtube.com 测试是否解析出IP(解析出IP之后最后全部丢包没关系,只要解析出域名对应的IP),否则需要验证是否正确配置DNS服务器地址。
2. 环境变量是否正确导出
通过输出echo $HTTP_PROXY查看环境变量是否正确导出
3. 防火墙是否开启
如在WSL2中ping主机不通,需在Windows系统中检查防火墙和网络保护界面中的防火墙设置,是否允许应用通过防火墙。
4. 主机端v2ray是否可用
如果检查各项配置都确认正确需检查主机端v2ray是否正常可用,可在windows terminal下运行curl youtube.com验证。
5. /etc/resolv.conf重启丢失
如果之前代理正常,WSL2重启之后代理不可用,需检查/etc/resolv.conf文件是否丢失或被重置为默认。
造成这种情况的原因有很多,但在WSL中大概率是被系统重置了,我们这里直接使用resolvconfig应用实现DNS信息管理
| 1 | apt-get install resolvconf | 
安装后配置/etc/resolvconf/resolv.conf.d/base文件
| 1 | nameserver 8.8.8.8 | 
配置好后使用resolvconf -u更新resolvconf应用并使用下面命令查看并启动服务。
| 1 | service resolvconf start | 
或直接配置好/etc/resolv.conf文件后使用chattr命令改变其文件属性不得任意更动文件。
| 1 | sudo rm /etc/resolv.conf | 









