WSL 中使用 V2 代理的配置方法

在使用 Windows 上的 V2 代理软件时,可能会遇到 WSL 无法通过 localhost 访问代理的问题,提示如下错误:

wsl: 检测到 localhost 代理配置,但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理。

这是因为 WSL 默认运行在 NAT 模式 下,与 Windows 处于不同的网络命名空间中,导致 WSL 无法访问 Windows 的 localhost 代理服务。

🧩 问题原因分析

原因 说明
NAT 模式 WSL 默认使用 NAT 网络模式,与 Windows 网络隔离
无法访问 localhost WSL 无法直接访问 Windows 的 localhost 代理(如 V2Ray 监听在 127.0.0.1:1080
代理类型 V2Ray、Shadowsocks 等通常监听在 127.0.0.1,而非 0.0.0.0

✅ 解决方案:修改 WSL 网络模式为 Mirrored

🔧 步骤一:创建或编辑 .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,默认端口通常是 1080810809,请根据你的代理软件配置调整。

⚠️ 注意事项

  • 确保代理监听在 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_proxyhttps_proxy 环境变量