WSL 中使用 V2 代理的配置方法
在使用 Windows 上的 V2 代理软件时,可能会遇到 WSL 无法通过 localhost
访问代理的问题,提示如下错误:
wsl: 检测到 localhost 代理配置,但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理。
localhost
代理服务。
这是因为 WSL 默认运行在 NAT 模式 下,与 Windows 处于不同的网络命名空间中,导致 WSL 无法访问 Windows 的 🧩 问题原因分析
原因 | 说明 |
---|---|
NAT 模式 | WSL 默认使用 NAT 网络模式,与 Windows 网络隔离 |
无法访问 localhost |
WSL 无法直接访问 Windows 的 localhost 代理(如 V2Ray 监听在 127.0.0.1:1080 ) |
代理类型 | V2Ray、Shadowsocks 等通常监听在 127.0.0.1 ,而非 0.0.0.0 |
Mirrored
✅ 解决方案:修改 WSL 网络模式为 .wslconfig
文件
🔧 步骤一:创建或编辑 .wslconfig
应该放在 Windows 的用户目录下:
C:\Users\<YourUsername>\.wslconfig
替换
<YourUsername>
为你的实际用户名。
如果文件不存在,请新建一个,并写入以下内容:
[experimental]
autoMemoryReclaim=gradual
networkingMode=mirrored
networkingMode=mirrored
:启用“镜像”模式,允许 WSL 共享 Windows 的网络设置(包括代理)autoMemoryReclaim=gradual
:优化内存回收(可选)
🔄 步骤二:重启 WSL
在 Windows 命令行中执行:
wsl --shutdown
然后重新启动 WSL:
wsl
🌐 步骤三:在 WSL 中设置代理
现在 WSL 已经可以访问 Windows 的 localhost
代理了。你可以手动设置环境变量来使用代理。
export http_proxy="http://127.0.0.1:10808"
export https_proxy="http://127.0.0.1:10809"
如果你使用的是 V2Ray,默认端口通常是
10808
或10809
,请根据你的代理软件配置调整。
⚠️ 注意事项
-
确保代理监听在
0.0.0.0
而非127.0.0.1
如果你的代理软件只监听127.0.0.1
,那么即使 WSL 设置了localhost
代理也无法访问。你需要将代理配置为监听0.0.0.0
,以便 WSL 可以访问。例如,在 V2Ray 配置文件中,将监听地址改为:
"listen": "0.0.0.0", "port": 1080
-
临时设置代理 如果不想每次登录都手动设置,可以将代理配置写入 shell 配置文件(如
~/.bashrc
或~/.zshrc
)。
📚 总结
问题 | 解决方式 |
---|---|
WSL 无法访问 Windows 的 localhost 代理 |
修改 .wslconfig ,设置 networkingMode=mirrored |
代理监听在 127.0.0.1 |
修改代理监听地址为 0.0.0.0 |
设置 WSL 代理 | 手动设置 http_proxy 和 https_proxy 环境变量 |