由于近日笔者经常用Python下载各种模型,终要解决困扰已久的wsl2与Windows主机代理不互通的问题。笔者浪费了半个下午后终于搞定,在得力助手Gemini的帮助下,主要步骤如下:
- Windows的
.wslconfig设置 - v2rayN的核心设置
- Windows的防火墙设置
- wsl2的旧设置清理
- wsl2的
~/.bashrc设置 - wsl2的
curl -v测试
参考网站:
Advanced settings configuration in WSL | Microsoft Learn
WSL2 使用 V2RayN 局域网 proxychains 代理方案 · Issue #2653 · 2dust/v2rayN
记一次用wsl2中共享宿主机的代理-v2rayN - 沉迷于学习,无法自拔^_^
.wslconfig
访问Windows下的个人账户文件夹,按下
Win + R,输入%UserProfile%并回车检查是否有
.wslconfig文件。如果没有,新建一个文本文件并命名为.wslconfig将以下内容粘贴到
.wslconfig中:1 2 3 4 5 6 7[wsl2] # 开启镜像网络模式 networkingMode=mirrored # 允许 WSL2 访问 Windows 本地服务 localhostForwarding=true # 自动同步代理设置(可选true/false) autoProxy=true需注意的是:
autoProxy这个参数决定了wsl2代理的方式,设置为true可以不再配置~/.bashrc,但是问题在于:- 当我们使用
env | grep -i proxy命令,会看到很多奇怪的和网络有关的变量,虽然确实能成功实现代理。 - 不能在wsl2中开关代理,导致很多流量都通过代理来走
后面我们将其设置为
false,以便于在wsl2内部可以方便地控制代理的开关,保证wsl2系统的清晰透明。- 当我们使用
在Windows终端中输入
wsl --shutdown关闭wsl2
v2rayN
- 在v2rayN(撰文时版本为V7.15.7)的基础设置中,启用“允许来自局域网的连接”以及“为局域网开启新的端口”(可选)
- 在v2rayN客户端的主界面左下角能看到为互联网开放的端口,笔者这里是
10810 - 这里系统代理是“自动配置系统代理”,路由模式是“绕过(Whitelist)”
- 然后选好节点,保持v2rayN的进行
FireWall
- 在 Windows 搜索框输入“防火墙”,选择 Windows Defender 防火墙
- 点击 “允许应用或功能通过 Windows Defender 防火墙”。
- 找到或添加
v2rayN.exe和其核心程序(如v2ray.exe或xray.exe),确保 专用 和 公用 都勾选上。通常路径分别在v2rayN\和v2rayN\bin\xray下 - 在防火墙高级设置中,新建一个入站规则,允许端口
10810的 TCP 流量(与v2rayN相对应)
wsl2
清理旧设置
| |
确保在第一步已开启镜像网络模式并重启好wsl2。当然这步也不是必须的,因为后面~/.bashrc会自动处理这些就变量。
~/.bashrc
| |
在与Gemini多次实验后,得出以下内容用于添加到~/.bashrc底部:
| |
保存以上内容后,输入:
| |
然后再:
| |
应该就会出现以下内容,表示连接成功:
笔者同时也用ping去测试了一下,虽然不成功,但不影响使用。
| |
笔者再次尝试下载模型,果然成功:
| |
再不成功的解决方案
最有效的方法的就是在完成了上面步骤后,wsl2中输入:
| |
然后把输出的结果交给AI,它会告诉你的。