· 进阶知识 · 约 11 分钟

Claude Code搭配V2Ray:国内终端代理配置与访问指南

Claude Code在终端运行时遇到连接问题?本文介绍如何使用v2rayN配置本地代理,设置终端代理变量与分流规则,并排查超时、登录失败等常见情况,让开发者了解客户端、节点和命令行工具之间如何配合。

本文速览

Claude Code 在终端里运行时,不一定会自动采用浏览器或 Windows 的系统代理。本文以 v2rayN 为例,说明如何确认本地 HTTP 代理入口、在 PowerShell 中设置临时代理变量、检查分流与登录链路,并逐项排查超时和认证失败。端口以本机设置为准,文中的端口号仅作示例。

先理清终端请求经过哪些环节

Claude Code 的终端请求大致经过四层:命令行进程读取代理环境变量,变量指向本机代理入口,v2rayN 调用的 Xray 或 V2Fly 内核再按路由规则选择出口,最后由远端服务处理连接。任何一层不匹配,都可能表现为登录卡住、请求超时或无法访问服务。

v2rayN 的“系统代理”主要是为遵循操作系统代理设置的应用登记本地地址;终端程序是否读取该设置,取决于程序自身。给浏览器启用系统代理,不代表从 PowerShell 启动的 Claude Code 一定使用它。反过来,在 PowerShell 设置环境变量,也不会自动改变其他应用的代理方式。

启动终端进程 读取代理变量 连接本地入口 匹配路由规则 连接远端服务

因此应分开验证:先确认 v2rayN 的代理入口正在监听,再确认终端变量正确,最后检查内核是否接到目标请求。只看到 v2rayN 已启动,或只看到服务器列表中有节点,都不足以证明 Claude Code 的请求已经经过代理。

在 v2rayN 中确认本地代理入口

先在 v2rayN 选择一个当前可用的服务器,启动内核,并确认常规网页访问能够通过该节点完成。随后打开「设置」→「参数设置」,查找本地监听或入站端口相关设置。不同版本、桌面界面和配置方案的字段名称可能不同,应以本机实际显示为准。

环境变量中的代理地址需要与本地入站类型相符。Claude Code 通过常见的 HTTP 代理变量发送请求时,优先使用 v2rayN 提供的 HTTP 代理入口;不能把 SOCKS 入站端口直接假定为 HTTP 端口。HTTP 代理可以通过 CONNECT 转发 HTTPS 请求,因此变量值通常仍以 http:// 开头,并不表示目标网站要使用未加密的 HTTP。

127.0.0.1
本机回环地址示例,不是远端节点地址
10809
HTTP 代理端口示例,须核对本机设置
10808
常见本地端口示例,不保证对应 HTTP 入站

以上两个端口只是常见示例,不是 v2rayN 的固定默认值。若本机 HTTP 入站显示为其他端口,应使用那个实际值;如果只看到 SOCKS 入站,则回到入站设置确认是否有 HTTP 入口,不要仅因为某个端口能够连接就推断协议类型正确。

在 PowerShell 设置 Claude Code 代理变量

在 Windows 上,先打开一个新的 PowerShell 窗口,再把下面示例中的端口替换为 v2rayN 实际的 HTTP 代理端口。变量只对当前 PowerShell 会话及其后续启动的子进程有效;从这个窗口启动的 Claude Code 才会继承这些值。

$env:HTTP_PROXY = "http://127.0.0.1:10809"
$env:HTTPS_PROXY = "http://127.0.0.1:10809"
$env:NO_PROXY = "localhost,127.0.0.1"

claude

HTTP_PROXY 与 HTTPS_PROXY 都指向本地 HTTP 代理,是为了覆盖程序发起的不同目标请求;代理协议由 URL 中的 http:// 表示。NO_PROXY 列出的地址会绕过代理,适合本机回环请求。不要将订阅链接、令牌或认证信息写进公开脚本或截图。

先在同一个窗口检查变量是否写入成功,再启动程序:

Get-ChildItem Env:HTTP_PROXY, Env:HTTPS_PROXY, Env:NO_PROXY

如果要验证变量是否影响新进程,可以在同一窗口执行 claude。若使用 VS Code 等集成终端,确认其终端确实由设置了变量的会话启动;已运行的 IDE 不会自动取得后来在另一个 PowerShell 窗口设置的临时变量。修改端口后也要重新启动命令行进程,避免旧进程继续使用旧环境。

  1. 确认活动节点

    在 v2rayN 选择活动服务器并启动内核。先用浏览器或其他已知可用方式验证节点,不要在节点本身尚未连通时排查 Claude Code。

  2. 核对 HTTP 端口

    打开「设置」→「参数设置」,记录 HTTP 入站的本地地址和端口。示例中的 10809 不能直接视作你的实际端口。

  3. 写入会话变量

    在新的 PowerShell 中设置 HTTP_PROXY、HTTPS_PROXY 和按需使用的 NO_PROXY,将地址与端口改成实际值。

  4. 从此窗口启动

    检查变量后,在同一个 PowerShell 窗口运行 claude。从桌面快捷方式或另一个未设置变量的终端启动,不会继承当前会话设置。

  5. 逐层查看结果

    观察 Claude Code 提示、v2rayN 内核日志和本地监听状态。每次只修改一个变量或路由条件,再以相同命令复测。

若需要临时取消这些变量,可在当前 PowerShell 中执行 Remove-Item Env:HTTP_PROXY, Env:HTTPS_PROXY, Env:NO_PROXY -ErrorAction SilentlyContinue。关闭窗口也会结束这组会话变量。这样比一开始写入用户级或系统级环境变量更容易回退,也能避免其他开发工具意外沿用同一代理。

变量、代理类型与分流规则怎么配合

配置时要分清“终端如何找到代理”和“代理收到请求后如何出站”。前一项由环境变量决定,后一项由 v2rayN 所用内核的路由规则决定。若目标域名被规则判定为直连,即使 Claude Code 已连接本地 HTTP 入口,也可能没有按预期使用代理出口。

终端环境变量

HTTP_PROXY
http://127.0.0.1:端口
HTTPS_PROXY
http://127.0.0.1:端口
NO_PROXY
localhost,127.0.0.1
作用范围
当前会话启动的进程

端口必须对应本机 HTTP 代理入站;协议类型与端口都要核对。

内核路由规则

输入
内核收到的目标域名或地址
匹配
按当前规则顺序判断
出口
直连、代理或已配置的其他出口
检查位置
v2rayN 路由设置与内核日志

规则命中结果由本机配置决定,不会因设置终端变量而自动改变。

排查分流时,不要未经核对就把某个固定域名清单照抄到路由规则。服务端名称和登录流程可能随版本、账户类型或产品调整;更稳妥的做法是观察实际请求所对应的日志与目标,再针对确认过的域名设置规则。若规则使用 GeoSite 或 GeoIP 分类,也要确认当前数据文件包含相应集合,并且规则顺序没有被更早的匹配项截断。

命令行变量只影响识别这些变量的程序。某些辅助进程、浏览器登录页面或编辑器扩展可能由不同进程启动,代理继承情况也可能不同。因此,Claude Code 的终端请求成功,并不自动证明单独打开的浏览器也使用同一路径;浏览器登录成功也不能单独证明 CLI 请求已走代理。

超时、登录失败与本地拒绝的排查顺序

错误提示需要结合发生阶段判断。终端无法连接 127.0.0.1,优先查本地监听;本地连接成功但请求超时,再查节点、内核路由与远端网络;登录失败则还要区分代理连接错误和账户认证错误。不要看到“登录”二字就立即删除配置或更换节点。

报错:connect ECONNREFUSED 127.0.0.1:10809

原因:该地址端口没有可接受连接的本地服务,常见于端口写错、内核未启动或入站监听地址不同。

解法:回到 v2rayN 设置核对 HTTP 端口和监听地址;若更改过设置,重启内核后在 PowerShell 更新变量再复测。

报错:ETIMEDOUT 或请求超时

原因:连接在某个阶段未能及时完成,可能与节点不可用、远端连接受阻、路由走错出口或网络质量有关。

解法:先用同一节点验证普通代理,再查看对应时间的内核日志;确认请求是否到达本地入口及采用何种出站后,逐项检查节点和路由。

现象:CLI 登录失败,但浏览器能打开登录页

原因:浏览器与终端可能没有使用同一代理设置;也可能是登录回调、账户验证或会话状态问题,而非单纯的网页连通性问题。

解法:确认从设置变量的终端启动 CLI,并阅读完整错误内容。先通过浏览器完成页面访问只能证明该浏览器路径可用,不能替代 CLI 自身的连接验证。

现象:启用代理后反而无法访问本机服务

原因:本机地址可能也被交给代理,或被环境变量中的绕过列表遗漏。

解法:检查 NO_PROXY 是否包含实际使用的本机主机名或回环地址;按需扩展列表,不要把不相关的远端域名都加入绕过项。

Windows 上可用只读命令检查示例端口是否存在 TCP 监听。将 10809 换成本机 HTTP 端口:

Get-NetTCPConnection -LocalPort 10809 -State Listen -ErrorAction SilentlyContinue |
  Select-Object LocalAddress, LocalPort, OwningProcess

有输出表示当时存在对应 TCP 监听项,不代表远端节点可用,也不证明该监听一定是 HTTP 协议。没有输出则应检查端口值、内核运行状态和监听地址。若确认本地入口可连、浏览器代理正常而 CLI 仍失败,保留错误发生时间及相关日志片段,并遮住订阅地址、用户标识和认证凭据后再求助。

结论:从本地入口开始逐层验证

先确认端口正在监听,再确认 Claude Code 从设置了变量的终端启动,最后根据内核日志判断路由和远端连接。每次只改一个环节,才能知道哪个改动真正解决问题。

常见问题

v2rayN 已开启系统代理,为什么 Claude Code 仍然超时?

系统代理不保证终端程序会自动读取。先在 PowerShell 设置 HTTP_PROXY 与 HTTPS_PROXY,确认它们指向本机 HTTP 入站,再从同一窗口启动 Claude Code。

可以把代理变量设置成 socks5 地址吗?

不要默认 Claude Code 当前使用的网络组件支持 SOCKS。排查时优先使用 v2rayN 提供的 HTTP 代理入口,并在 URL 中使用 http://;如果要用其他类型,先核对程序版本对该类型的支持。

每次打开 PowerShell 都要重新设置吗?

本文设置的是当前会话变量,关闭窗口后会失效。确认配置稳定后,可以再考虑在用户环境中持久设置;修改后需重新打开终端,并检查其他工具是否也会继承代理。

浏览器能登录,是否说明终端代理已经正确?

不能。浏览器可能使用系统代理,而 CLI 使用自身环境变量。应分别确认浏览器设置、PowerShell 环境变量以及 v2rayN 内核日志中的连接记录。

下载v2rayN按平台选择客户端