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 |