跳到主要内容

WSL 2 通过 Windows v2rayN 代理上网


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 网关。

  1. 在 Windows 上,按下 Win + R 键,输入 cmd 并回车,打开命令提示符。
  2. 输入以下命令:
    ipconfig
  3. 在输出信息中找到 “无线局域网适配器 WLAN” 或 “Wireless LAN adapter Wi-Fi” 部分。记下其 “IPv4 地址”,例如 192.168.1.105。

第二步:在手机上配置代理

对于 iPhone (iOS)

iOS 系统原生支持带认证的 HTTP 代理,配置非常简单。

  1. 确保您的 iPhone 已连接到和电脑相同的 Wi-Fi。
  2. 进入 设置 -> 无线局域网 (Wi-Fi)。
  3. 点击您当前连接的 Wi-Fi 名称右边的 “i” 图标。
  4. 滑到页面最底部,找到并点击 “配置代理”。
  5. 选择 “手动”。
  6. 在 “服务器” 栏,输入您电脑的局域网 IP (例如 192.168.1.105)。
  7. 在 “端口” 栏,输入 V2RayN 的端口 10810。
  8. 开启 “鉴定” (Authentication) 开关。
  9. 在 “用户名” 中输入 v2rayn填写的用户名。
  10. 在 “密码” 中输入 v2rayn填写的密码。
  11. 点击右上角的 “存储”。

对于安卓 (Android)

不同 Android 版本和厂商的 Wi-Fi 设置可能不同;如果没有代理认证字段,需使用支持相应认证方式的客户端。

  1. 原生方法 (如果您的代理无需认证):
    • 进入 设置 -> WLAN,长按您连接的 Wi-Fi,选择“修改网络”。
    • 在高级选项中找到“代理”,设为“手动”。
    • 输入电脑的IP和端口。
    • (此方法对您当前带认证的设置无效,仅供参考)
  2. 推荐方法 (使用第三方App,支持认证):
    • 在 Google Play 商店或其它应用市场搜索并安装一个支持 HTTP/SOCKS 认证代理的 App,例如已有的 v2rayNG;按当前版本的界面和协议支持配置。
    • 以 V2rayNG 为例 (更推荐,因为它本身就是 V2Ray 客户端):
      1. 打开 V2rayNG,点击右上角的 “+” 号,选择 “手动输入[Socks]”或“[Http]”。
      2. 别名:随便填,例如 公司电脑。
      3. 地址(服务器):输入您电脑的局域网 IP (例如 192.168.1.105)。
      4. 端口:输入 10810。
      5. 用户名:输入 v2rayn填写的用户名。
      6. 密码:输入 v2rayn填写的密码。
      7. 其他设置可保持默认,点击右上角的 “√” 保存。
      8. 回到主界面,点击您刚创建的配置将其选中,然后点击屏幕底部的 V 形图标启动连接。

第三步:验证手机连接

在手机上配置好代理后,打开手机浏览器,访问 ipinfo.io 或 whatismyip.com 这类网站。如果测试请求显示为预期代理出口,说明该请求经过了代理;不能据此保证所有 App、UDP 或系统流量都采用同一代理。手机设置与 WSL 设置要分别验证。


文章作者: 0xdadream
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 0xdadream !
赏
评论

评论将在接近此处时加载,也可点击立即加载。

  目录