WSL 2 通过 Windows v2rayN 代理上网指南
先在 Windows 中确认 v2rayN 和所用节点可用,再判断 WSL 的网络模式。原文是 NAT 网络下的配置记录,不能把其中的主机 IP 和局域网开放要求套到所有环境。
第一部分:确认代理监听与网络模式
记录 v2rayN 实际的 HTTP / mixed 监听端口,例如原文的 10810。端口不是固定值,也不要把 HTTP 端口当成 SOCKS5 端口,除非它确实是支持两种协议的 mixed 入口。
| WSL 网络方式 | 从 WSL 访问 Windows 代理 |
|---|---|
| NAT | 通常使用 Windows 在虚拟网络中的主机地址,并允许来自该网络的连接 |
| 镜像网络 | 可尝试 127.0.0.1 及实际代理端口 |
| 自动代理 | 支持的 Windows / WSL 版本可通过 autoProxy 继承 Windows HTTP 代理信息 |
需要局域网监听时,只对需要的虚拟网段或客户端开放防火墙来源;不必统一允许所有公用网络。配置界面与核心进程名称可能随 v2rayN 版本变化,以实际监听和连接测试为准。
第二部分:在当前 WSL 终端测试
NAT 模式
在 WSL 的 Bash 中获取默认 IPv4 网关:
PROXY_HOST=$(ip -4 route show default | awk 'NR==1 {print $3}')
printf 'Windows host: %s\n' "$PROXY_HOST"
确认地址非空。如果存在多条路由、VPN 或自定义网络,默认网关不一定就是可用的 Windows 代理入口,需要结合当前网络核对。
镜像网络
使用支持 localhost 互访的镜像模式时,可先设置:
PROXY_HOST=127.0.0.1
以上两种地址选择其一。设置实际的 HTTP 代理端口,并做显式代理测试:
PROXY_PORT=10810
PROXY_URL="http://${PROXY_HOST}:${PROXY_PORT}"
curl --proxy "$PROXY_URL" --connect-timeout 10 -I https://example.com
这个地址示例先演示无认证入口。若代理要求认证,会出现 407 等错误;使用实际认证参数单独测试:
curl --proxy "$PROXY_URL" --proxy-user 'your_user:your_password' --connect-timeout 10 -I https://example.com
用户名和密码是占位内容。真实认证信息不要贴到共享日志中。
第三部分:设置终端环境
对已验证可用的入口设置:
export http_proxy="$PROXY_URL"
export https_proxy="$PROXY_URL"
export no_proxy="localhost,127.0.0.1,::1,${PROXY_HOST}"
export NO_PROXY="$no_proxy"
HTTPS 目标经 HTTP 代理连接时,https_proxy 的值也可以是 http://...。环境变量只影响采用这些变量的当前终端和子进程,不等于所有 Linux 网络流量均被接管。
若入口需要认证,先构造带认证的 URL,再导出环境变量。用户名和密码中的 @、:、/ 等应分别做 URL 编码,例如:
from urllib.parse import quote
host = "172.30.96.1" # 替换为已经验证的主机地址
port = 10810
user = quote("your_user", safe="")
password = quote("your_password", safe="")
print(f"http://{user}:{password}@{host}:{port}")
将得到的地址作为 PROXY_URL,再执行上面的导出步骤。含认证的 URL 属于凭据,不要打印到共享启动日志。
确认工作正常后,才考虑把需要的配置写入 ~/.bashrc / ~/.zshrc。不要在启动文件中每次执行 git config --global;NAT 地址变化时也要重新获取并测试。
取消本次环境设置:
unset http_proxy https_proxy no_proxy NO_PROXY
若此前另设了 all_proxy / ALL_PROXY,也要检查它们是否仍影响连接。取消这些变量不会自动清除 Git、APT 或服务自身的持久配置。
第四部分:APT 与 Git
APT 可以先用单次选项验证,无需立刻写系统配置:
sudo apt -o Acquire::http::Proxy="$PROXY_URL" -o Acquire::https::Proxy="$PROXY_URL" update
需要长期配置时,再编辑 /etc/apt/apt.conf.d/99proxy,填写已验证的地址。固定写入 NAT 网关后,WSL 网络变化可能使该配置失效;不要同时留下多份互相覆盖的代理文件。
Git 的 HTTP(S) 传输可以使用 http.proxy,不需要另造 https.proxy 配置键。例如只影响一次命令:
git -c http.proxy="$PROXY_URL" ls-remote https://github.com/git/git.git HEAD
SSH 形式的仓库地址不使用这里的 HTTP 代理设置,需要单独处理 SSH 连接。
第五部分:验证与排错
- 连接被拒绝:检查地址、端口、v2rayN 监听范围和对应核心是否运行。
- 超时:检查路由、防火墙和代理上游,而不是直接关闭全部防火墙。
- 407:检查认证及 URL 编码。
- curl 能访问但某个工具失败:检查该工具是否采用环境变量、已有独立配置是否覆盖了它。
curl 获得一次响应不代表全部配置完成;需要分别验证实际使用的 APT、Git 或应用。微软的网络模式、版本条件及自动代理说明见官方 WSL 网络文档。
附:手机连接 Windows V2RayN 代理教程
本教程将指导您如何将手机(安卓或iPhone)通过 Wi-Fi 连接到您电脑上正在运行的 V2RayN 代理。
核心原理:手机和电脑必须在同一个局域网(连接同一个Wi-Fi)。手机将电脑视为一个代理服务器,通过电脑的局域网IP地址和V2RayN端口进行连接。
第一步:查找您 Windows 电脑的局域网 IP 地址
使用 Windows 实际联网网卡的局域网地址。家庭网络常见 192.168.x.x,也可能是 10.x.x.x 或其他私网网段,不能只凭前缀区分它与 WSL 网关。
- 在 Windows 上,按下
Win + R键,输入cmd并回车,打开命令提示符。 - 输入以下命令:
ipconfig - 在输出信息中找到 “无线局域网适配器 WLAN” 或 “Wireless LAN adapter Wi-Fi” 部分。记下其 “IPv4 地址”,例如
192.168.1.105。
第二步:在手机上配置代理
对于 iPhone (iOS)
iOS 系统原生支持带认证的 HTTP 代理,配置非常简单。
- 确保您的 iPhone 已连接到和电脑相同的 Wi-Fi。
- 进入 设置 -> 无线局域网 (Wi-Fi)。
- 点击您当前连接的 Wi-Fi 名称右边的 “i” 图标。
- 滑到页面最底部,找到并点击 “配置代理”。
- 选择 “手动”。
- 在 “服务器” 栏,输入您电脑的局域网 IP (例如
192.168.1.105)。 - 在 “端口” 栏,输入 V2RayN 的端口
10810。 - 开启 “鉴定” (Authentication) 开关。
- 在 “用户名” 中输入
v2rayn填写的用户名。 - 在 “密码” 中输入
v2rayn填写的密码。 - 点击右上角的 “存储”。
对于安卓 (Android)
不同 Android 版本和厂商的 Wi-Fi 设置可能不同;如果没有代理认证字段,需使用支持相应认证方式的客户端。
- 原生方法 (如果您的代理无需认证):
- 进入 设置 -> WLAN,长按您连接的 Wi-Fi,选择“修改网络”。
- 在高级选项中找到“代理”,设为“手动”。
- 输入电脑的IP和端口。
- (此方法对您当前带认证的设置无效,仅供参考)
- 推荐方法 (使用第三方App,支持认证):
- 在 Google Play 商店或其它应用市场搜索并安装一个支持 HTTP/SOCKS 认证代理的 App,例如已有的 v2rayNG;按当前版本的界面和协议支持配置。
- 以 V2rayNG 为例 (更推荐,因为它本身就是 V2Ray 客户端):
- 打开 V2rayNG,点击右上角的 “+” 号,选择 “手动输入[Socks]”或“[Http]”。
- 别名:随便填,例如
公司电脑。 - 地址(服务器):输入您电脑的局域网 IP (例如
192.168.1.105)。 - 端口:输入
10810。 - 用户名:输入
v2rayn填写的用户名。 - 密码:输入
v2rayn填写的密码。 - 其他设置可保持默认,点击右上角的 “√” 保存。
- 回到主界面,点击您刚创建的配置将其选中,然后点击屏幕底部的 V 形图标启动连接。
第三步:验证手机连接
在手机上配置好代理后,打开手机浏览器,访问 ipinfo.io 或 whatismyip.com 这类网站。如果测试请求显示为预期代理出口,说明该请求经过了代理;不能据此保证所有 App、UDP 或系统流量都采用同一代理。手机设置与 WSL 设置要分别验证。
评论将在接近此处时加载,也可点击立即加载。