系统教程 · 线性学习与按章查阅

V2Ray 系统教程:
从核心概念到日常维护

客户端安装、订阅导入、代理模式、路由分流与 TUN 配置,按依赖关系逐步展开。

首次连接可先阅读快速上手,完成一次最小配置后再回到本页。本手册解释设置背后的条件、边界与排错顺序,适合系统学习,也适合遇到问题时按章节查阅。

阅读顺序:先建立单一客户端、单一节点的可用基线,再增加订阅管理和分流规则,最后处理 TUN 与自动化。每次修改保留恢复方法,不同时调整多个互相关联的设置。

核心概念:客户端、内核与连接路径

界面设置与实际执行

开始配置前,先区分图形客户端、代理内核和远端服务三个对象。客户端负责显示节点、保存订阅、生成配置并管理系统集成;内核读取配置,接收本地请求,按照路由选择出口;远端服务则接收协议连接并继续处理目标访问。界面能够打开,只能说明客户端程序运行,不能据此判断内核已经启动,也不能证明远端参数正确。

Project V 是理解这套生态的起点,V2Fly 与 Xray 是相关内核家族。v2rayN、v2rayNG、v2flyNG 属于图形客户端,而不是协议名称。客户端支持哪些字段,既受其界面实现影响,也受实际调用的内核能力影响。遇到订阅可以导入但无法启动的情况,应查看活动内核和生成配置,不能仅凭客户端名称推断所有特性都可使用。

入口、路由与出口

一次连接可以按入口、路由、出口拆解。入口接收浏览器或其他应用交来的流量,常见形式是本机 HTTP 或 SOCKS 监听。路由根据目标域名、地址、端口等条件选取出口。出口可能是代理、直连或阻断。远端连接失败与本机入口没有收到请求,是两类不同问题;前者查节点与网络,后者先查应用是否使用了对应入口。

配置中的标签用于关联这些模块,不是随意添加的备注。某条规则指定一个出口标签时,出口列表必须存在同名项目,大小写也要一致。客户端界面可能隐藏了这些关联并自动生成标签,因此阅读内核示例时要先识别结构,而不是直接把一个片段粘贴进任何文本框。自定义配置与图形设置各自管理哪些内容,也需要提前确认。

{
  "inbounds": [
    {
      "tag": "local-socks",
      "listen": "127.0.0.1",
      "port": 10808,
      "protocol": "socks",
      "settings": { "udp": true }
    }
  ],
  "outbounds": [
    {
      "tag": "direct",
      "protocol": "freedom",
      "settings": {}
    }
  ],
  "routing": {
    "domainStrategy": "AsIs",
    "rules": [
      {
        "type": "field",
        "inboundTag": ["local-socks"],
        "outboundTag": "direct"
      }
    ]
  }
}

协议与传输的不同职责

VMess、VLESS 和 Trojan 描述代理连接的协议方式;传输层决定这类连接怎样承载在网络上;TLS 与 REALITY 又涉及连接安全及握手条件。它们不能任意拼接。导入节点时,需要把地址、端口、身份字段、传输类型和安全参数视为一个整体,任何一项与服务端不一致都可能使连接失败,单独更换协议名称通常无法修复问题。

DNS 也不是独立于这条路径之外的附属选项。应用可能先解析域名,再把地址交给代理;也可能保留域名,由内核或远端继续处理。路由能否看到原始域名,取决于请求形式、代理协议和相关设置。看到目标变成地址时,不应立即认定域名规则损坏,而应先确认解析发生在哪一层,以及请求是否仍包含可用于匹配的域名信息。

学习阶段建议把一次测试限定为一个应用访问一个已知目标。记录所用入口、当前节点、活动模式和结果,再判断请求停在哪一层。上面的配置是仅直连的结构示例,可以说明模块关系,不代表已经具备远端代理能力。涉及真实服务的认证信息应从可信来源取得,不要从其他教程中复制一组看似完整但与自身服务不符的字段。

选择客户端:平台、内核与管理方式

先按设备选择,再核对能力

桌面设备优先选择 v2rayN,再依据操作系统和处理器选择安装入口。它适合集中管理订阅、查看连接日志和调整路由。Android 设备优先考虑采用 Xray 内核的 v2rayNG;需要 V2Fly 生态配置时,再评估 v2flyNG。选择标准应是现有节点所需能力、系统条件以及日常操作方式,而不是只比较界面外观或把客户端名称当作性能结论。

安装之前应确认节点实际需要的协议与安全参数。普通导入成功并不表示客户端已经完整识别所有扩展字段,尤其需要留意 REALITY、公钥、服务器名称、指纹与流控等内容。可先向配置提供方确认目标客户端和内核要求,再对照导入后的编辑页检查。若界面没有相应字段,不要用不相干的输入框临时替代,也不要删除字段后直接尝试长期使用。

客户端适用平台优先核对
v2rayNWindows、macOS、Linux处理器架构、界面类型、系统集成权限
v2rayNGAndroidXray 特性、VPN 授权、后台限制
v2flyNGAndroidV2Fly 配置兼容性、订阅字段

桌面安装形式与处理器架构

Windows 下载入口包含 Desktop 桌面版与经典 WPF 版。前者采用新一代跨平台界面,后者保留经典界面体系;两者在菜单位置和操作细节上可能不同。初次配置只选一种建立基线,避免同时启动两套程序争用本地端口。迁移时应逐项确认订阅、路由和系统代理设置,不把复制程序目录直接等同于完成全部配置迁移。

macOS 需要区分 Apple Silicon 与 Intel。应通过系统的设备信息确认芯片类型,再选择对应安装入口,不以机器购买年份单独推断。Linux 除处理器架构外,还需要匹配发行版使用的包管理形式,通常分别选择 deb 或 rpm。架构与安装格式是两个条件;包管理器能够识别文件,并不意味着其中的可执行程序适合当前处理器运行。

Android 的 arm64 安装包适合多数较新的主流设备,通用包用于架构不明确或需要覆盖更多设备的情况。最终仍应以系统支持情况为准。若系统拒绝安装,先检查架构、可用空间和已有应用的签名关系,而不是连续下载不同文件碰运气。覆盖安装遇到签名冲突时,先导出设置并确认备份可用,再决定是否卸载旧应用。

配置管理习惯也影响选择

若需要在多台设备间使用同一订阅,应同步订阅来源和必要参数,而不是期待客户端数据库可以直接跨平台通用。系统代理、虚拟网络接口、应用排除列表和文件路径都具有平台差异。桌面可用的自定义脚本或路径不能原样搬到手机。迁移时先导入节点并完成单节点测试,然后重新建立本机的代理模式和路由,能减少隐蔽的环境依赖。

客户端和内核升级也不一定同步发生。界面出现某个开关,不代表当前运行的内核已经支持对应行为;反过来,内核支持的字段也未必全部在界面中开放。对高级功能,应先阅读当前客户端的设置说明,再检查启动日志所显示的运行环境。无法确定时保留默认值,以已经验证的协议组合为基线,不为了追求选项齐全而频繁更换程序。

具体入口见客户端下载页,横向取舍见客户端对比。下载前把操作系统、处理器架构、所需内核能力和配置来源记下来,安装后就能用同一张清单核对。只有当前客户端确实缺少必要能力时才考虑更换;如果问题只是端口、订阅或系统授权,切换客户端往往只会重复相同的配置错误。

安装与基线:先确认本机环境

安装前的环境记录

安装前先记录当前网络是否可用、系统是否已有代理设置,以及是否运行其他会创建虚拟接口的程序。关闭不需要的旧客户端,但不要随意删除网络适配器或修改系统服务。保留原先的代理地址、端口和自动配置状态,便于出现问题时恢复。若设备受组织策略管理,应先确认允许的安装与网络配置方式,不通过反复提升权限绕过限制。

通过下载页的平台入口选择匹配的安装形式,安装后首次只启动一份客户端。程序目录、用户配置目录与缓存目录可能分开保存,升级或移动程序前需要确认真正的数据位置。不要把包含订阅与身份信息的配置目录放入公开共享位置;桌面同步工具自动上传整个目录,也可能把原本只应保存在本机的连接资料一并带走。

首次启动与权限分层

首次运行时,先确认主窗口能正常显示,再查看内核能否启动。普通本地代理通常不需要为了日常操作长期以最高权限运行;TUN、路由修改等功能可能另需授权或辅助服务。权限应按功能逐项增加,而不是把所有启动失败都归因于权限不足。系统弹出提示时,先阅读所请求的能力,确认与当前操作一致后再允许。

Windows 上应留意系统代理是否由其他工具持续覆盖;macOS 上需要辨别应用启动许可与网络相关授权的区别;Linux 上则应确认图形会话、托盘环境及包依赖是否满足要求。这些差异影响系统集成,却不改变节点字段本身。若主窗口可用但托盘入口缺失,可以先从窗口完成配置,不要把界面集成问题直接当成远端连接故障处理。

Android 首次启动连接时通常需要确认 VPN 授权。授权前先保存节点,授权后查看应用是否进入运行状态。若设备已经有其他 VPN 会话,系统可能要求切换现有会话,应先明确两者用途,避免来回争用。后台运行策略也需记录,但首次测试先保持应用前台,排除电池管理的干扰,待基本连接确认后再处理锁屏和后台行为。

监听地址与端口占用

本地监听优先使用回环地址,让入口只接收本机请求。只有明确需要其他设备接入时,才评估局域网监听、认证和防火墙范围。端口号只是入口标识,不是节点服务端端口的副本;两者可以不同。若日志提示地址已被占用,先退出另一份客户端或查明占用者,再修改本地监听端口,并同步修改手动配置了该端口的应用。

{
  "inbounds": [
    {
      "tag": "local-http",
      "listen": "127.0.0.1",
      "port": 10809,
      "protocol": "http",
      "settings": {}
    }
  ]
}

这里展示的是入口片段,不是完整代理配置。它说明监听范围、端口、协议和标签的关系;实际使用时应由客户端结合出口等内容生成完整配置。不要把 HTTP 入口填入只接受 SOCKS 的应用字段,也不要看到两个端口相邻就认为可以互换。若应用有独立代理设置,要同时确认代理类型、地址和端口,三项都一致才算接入正确。

建立基线时,先不启用复杂路由、流量探测或 TUN。确认日志没有启动错误,随后导入一个已知有效节点,用遵循系统代理的应用测试一次。记录成功时的设置并保留恢复入口。若必须调整多个选项才能运行,应按调整顺序补记原因;否则日后升级或迁移时,很难分辨哪些设置是必要条件,哪些只是排错过程中留下的临时改动。

订阅导入:来源、格式与节点核对

区分订阅地址与分享链接

订阅地址是获取一组节点资料的入口,分享链接通常描述单个节点,原生 JSON 则描述内核配置结构。三者不应混用。把完整 JSON 填进订阅地址栏,或把一个分享链接当成可定时更新的订阅源,都可能导致导入失败。导入前先识别内容类型,再使用客户端对应的订阅管理、剪贴板导入或自定义配置入口,避免让格式错误被误判成网络故障。

订阅链接通常含有可识别账户的访问凭据,取得后应按敏感资料管理。不要把完整地址放进公开截图、日志讨论或共享文档,也不要上传到不明转换页面。需要求助时,可以说明协议类型和报错位置,并隐藏身份字段、域名中具有识别作用的部分以及查询参数。编码后的字符串仍可能还原出原始内容,不能把编码当作访问保护措施。

建立分组并执行首次更新

在客户端的订阅管理中新增分组,填写便于识别的名称和来源地址,再执行更新。不同界面可能使用不同菜单文字,但逻辑都是先保存来源,再获取并解析内容。更新后确认节点出现在预期分组,而不是只看弹出的成功提示。如果分组为空,应先检查来源是否返回有效内容,再看解析日志,暂时不要反复重装客户端或修改全部网络设置。

订阅更新与代理连接是两次不同的网络请求。更新可能采用直连,也可能使用当前代理,取决于客户端选项和系统环境。如果更新依赖一个已经失效的活动节点,就会出现无法取得新节点的循环。此时应确认更新所使用的路径,在允许的网络条件下调整更新方式,并保留原有分组;不要先清空所有节点,使后续排查失去可用的参照。

解析完成后,打开一个节点的编辑页,核对服务器地址、端口、协议、身份字段、传输方式和安全设置。节点显示名称只供识别,不参与连接是否正确的判断。特别留意服务器名称与连接地址可能不同,传输路径与请求头也各有含义。不要因为字段看起来重复就删除;有些字段分别服务于网络寻址、握手验证和应用层请求,承担的是不同职责。

导入之后的验证与更新边界

将一个节点设为活动配置后,先确认内核可以重新启动,再用固定应用和固定目标验证。列表中的测试结果只能说明某种测试方法的结果,不能覆盖全部真实应用行为。若客户端测试可用而浏览器失败,应检查浏览器入口;若启动阶段已经报错,则先检查字段兼容性。把导入、启动和实际访问分开观察,比连续切换节点更容易定位问题。

订阅更新可能覆盖由订阅生成的节点条目,因此手动修改节点前要明确哪些字段会在下次更新时还原。确有长期自定义需求时,可使用客户端提供的独立配置或复制方式,并给副本清楚命名。订阅原始条目和本地副本分开管理,能够减少误覆盖。删除分组之前先确认活动节点是否来自该分组,避免更新后当前选择指向已经不存在的条目。

遇到认证失败、内容为空或格式无法识别,应分别处理。认证失败检查来源凭据与账户状态;内容为空检查响应是否实际包含节点;格式错误核对客户端支持的导入形式。完整配置中还可能含本地路径与特定出口标签,不能像单节点链接一样直接复用。更详细的格式关系见订阅链接格式解析,理解结构后再决定是否转换。

代理模式:应用接入与内核分流

系统代理不等于流量全部接管

系统代理用于向支持该机制的应用提供代理地址。浏览器通常能够使用,但有些程序保留独立设置,另一些程序根本不读取系统代理。开启后只有部分应用发生变化,首先应查各应用的接入方式,而不是立即更换节点。判断时将本地代理是否运行与系统是否指向它分开:内核运行正常,但系统仍指向旧端口,也会造成看似全部失效的现象。

手动代理是直接在应用中填写本机入口,便于隔离测试,也适合只让一个应用接入。此时系统代理可以保持原状,但应用中的协议类型、地址和端口必须匹配内核监听。应用若同时存在自动配置、扩展代理和手动代理,应确认最终生效的是哪一层。排错时暂时只保留一个明确入口,避免多层覆盖使界面显示与实际行为不一致。

接入范围与出口选择分开理解

客户端界面中的全局、规则、直连等名称,通常描述出口选择策略;系统代理与 TUN 则主要影响应用如何把流量交给客户端。这是两个维度。全局代理不会自动让所有应用读取系统代理,TUN 接管也不意味着所有目标必须走远端。先决定哪些应用需要接入,再决定这些流量如何分流,能够避免把入口问题误当作路由问题反复调整。

初次验证建议使用简化的代理出口策略,让已接入的测试应用先通过所选节点访问目标。成功后再切换到日常分流规则,并用同一目标比较日志变化。若简化策略有效而规则策略失败,优先检查规则顺序、默认出口和 DNS 条件。如果两种策略都失败,则回到节点与入口检查,不要继续堆叠规则来掩盖尚未解决的基础连接错误。

设置维度解决的问题常见误判
系统代理支持该机制的应用使用哪个本地入口认为所有程序都会遵循
应用手动代理单个应用如何接入入口协议或端口填错
路由策略接入后的请求选择哪个出口把规则模式当作系统接管
TUN通过虚拟接口处理被接管的流量认为启用后无需 DNS 与路由配合

验证结果应覆盖真实操作

验证时固定测试应用、目标和活动节点,分别观察域名解析、建立连接以及实际内容加载是否完成。一个页面能够打开,不足以证明其他应用的 UDP 请求或长连接也正常。反过来,某个目标不可达也不代表全部连接失败,应换一个已知可用目标作对照。每次只改变模式或节点其中一项,才能把结果变化与具体设置联系起来。

桌面应用若内置独立代理功能,应留意它是否把域名交给代理解析。不同请求形式可能让内核看到域名,也可能只看到已经解析的地址,这会影响后续域名规则。不要为了使单个应用工作而立即更改全系统 DNS;先检查应用自身的代理与解析行为。必要时使用客户端日志确认请求是否到达本地,以及记录的目标究竟是什么形式。

局域网访问也需要单独验证。打印设备、文件共享和本机服务可能依赖私有地址或本地域名,如果规则把这些请求送到远端,常会出现外部页面正常而本地资源失效。先确认资源本身在未接入代理时可用,再为明确的本地范围安排直连。不要把所有未知地址都加入直连,也不要使用宽泛规则修复一个单独设备,否则可能改变其他目标的预期路径。

退出客户端前先恢复或清除由它设置的系统代理,再停止内核,可降低系统仍指向失效端口的概率。如果程序意外结束,重新启动后检查代理状态,必要时在系统设置中恢复原先配置。完成本章后,应能回答一个应用是否接入、接入哪个入口、最终使用哪个出口。无法回答其中任一项时,先补齐观察,不继续启用更复杂的接管功能。

路由分流:匹配顺序与 DNS 条件

把规则写成可解释的顺序

路由规则通常按顺序检查,命中后选择相应出口,因此具体例外应放在宽泛规则之前。规划时先写出目标行为:本地资源直连、指定域名使用某个出口、其余请求按默认策略处理。不要先收集大量规则再猜测结果。每条规则都应能够说明匹配对象、选择出口和存在理由;当两条规则覆盖同一目标时,要能解释为什么前一条应当优先。

下面的配置是完整的仅直连演示,用于观察规则结构,并不包含远端代理节点。第一条处理私有地址,第二条处理分类域名,最后一条为进入该入口的其余请求提供兜底。实际搭建直连与代理分流时,应由客户端建立有效代理出口,再把相应规则指向其真实标签。不能只写一个代理标签而不定义出口,也不能假设标签名称跨客户端完全相同。

{
  "inbounds": [
    {
      "tag": "local-socks",
      "listen": "127.0.0.1",
      "port": 10808,
      "protocol": "socks",
      "settings": { "udp": true }
    }
  ],
  "outbounds": [
    {
      "tag": "direct",
      "protocol": "freedom",
      "settings": {}
    }
  ],
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      {
        "type": "field",
        "ip": ["geoip:private"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "domain": ["geosite:cn"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "inboundTag": ["local-socks"],
        "outboundTag": "direct"
      }
    ]
  }
}

域名策略不是 DNS 服务器配置

domainStrategy 位于 routing 对象中,不属于单条规则。它控制路由匹配过程中何时解析域名以参与地址规则判断。AsIs 保持原有目标形式;IPIfNonMatch 在域名匹配未得到结果时尝试地址匹配;IPOnDemand 在遇到需要地址信息的规则时可能触发解析。具体行为还需结合当前内核与完整规则理解。

路由域名策略不负责独立定义查询哪个 DNS 服务器,也不等同于应用的解析设置。应用已经把域名解析成地址时,内核未必能够凭空恢复原始名称。反过来,内核为了地址规则解析域名,也不意味着实际连接一定使用同一个解析路径。因此排查 DNS 时,应分别确认查询发起者、查询出口、返回结果以及最终连接目标,避免把几个阶段合成一个含糊结论。

geosite 和 geoip 依赖对应数据文件与分类内容。出现分类不存在或数据加载失败时,先确认客户端使用的数据位置、文件是否齐备以及内核能够识别的格式。分类数据会变化,也不保证覆盖每个新域名;对于必须明确处理的业务域名,可以增加范围清晰的显式规则。增加例外后记录原因,定期复查,避免临时规则长期累积而互相遮挡。

用日志验证规则,而非只看网页

验证时为本地地址、明确域名和未命中目标分别准备测试,观察请求选择的出口标签。一个网页往往同时请求多个域名,不同资源可能命中不同规则,页面能显示不能证明所有请求路径一致。需要定位单条规则时,先用范围明确的目标测试,再恢复真实页面。记录规则修改前后的日志差异,比只比较体感速度更能说明规则是否真正生效。

还要检查兜底方式。某些内核配置在没有规则命中时使用出口列表中的首个出口,而客户端可能额外生成兜底规则。编辑界面中的排序不一定等于最终配置中的排列,尤其启用了预设规则时更应查看生成结果。不要为了调整默认路径随意重排所有出口;优先使用客户端提供的默认策略入口,并确认重新启动后的行为与预期相符。

配置出现异常时,先回到最小规则集,保留本地资源所需规则和一个明确兜底,再逐条加入例外。若某次加入后问题重现,就集中检查该条的条件与顺序。关于域名分类、地址分类和默认代理出口的组合,可以继续阅读路由规则配置实战。扩大规则规模之前,应先确保每一层都有可观察、可回退的验证方法。

TUN 与多平台:接管范围和恢复路径

启用前确认真正需求

TUN 通过虚拟网络接口处理被系统路由送入的流量,适合不能直接使用应用代理设置的场景。它增加了接口、路由、DNS 与权限之间的依赖,不应作为首次连接的默认排错手段。先用普通入口验证节点可用,再决定哪些应用确实需要接管。如果原本的问题只是系统代理端口填写错误,启用 TUN 只会引入更多变量,并不会自动修正这个错误。

启用前记录当前默认网络、DNS 设置以及其他虚拟接口的用途,同时关闭不必要的同类接管程序。多个程序都尝试修改默认路由时,可能互相覆盖或形成循环。需要共存时,必须明确谁负责入口、谁负责 DNS,以及哪些目标应绕过接管。没有清楚分工时,先让一个程序独立运行,完成验证后再逐项评估共存条件。

权限、路由与连接循环

桌面环境可能要求管理员权限、辅助服务或虚拟接口组件,具体取决于客户端实现和系统条件。开启失败时先看日志中的失败阶段:接口创建失败查权限与组件,路由写入失败查权限或冲突,接口已创建但无流量则查路由与排除条件。不要因一个授权提示未完成就重复安装,也不要通过同时开启多个相关开关来掩盖具体报错。

代理内核连接远端服务的流量,需要避免再次被自己的接管规则无限送回入口。客户端通常会处理必要的绕行,但自定义路由、接口绑定和其他网络工具可能破坏这一安排。若普通代理正常而 TUN 启用后立刻超时,优先检查回环、出口网络和远端地址的处理路径。不要直接把全部流量改成直连来验证,否则会同时改变测试条件与接管目标。

DNS 与局域网的独立验证

TUN 生效后仍需确认 DNS 查询走向。有些环境下系统查询会被接管,有些依赖特定 DNS 模式或客户端设置。能连接一个已知地址但不能解析域名,说明应优先检查名称解析,不是立刻否定远端节点。若启用了合成地址机制,还要确认映射、排除域名与路由配合;这类机制返回的地址不宜被误当作目标服务器的真实地址继续写入其他规则。

局域网设备、本机服务和远程管理连接需要单独检查。开启接管前应先保存必要工作,确保有本地恢复入口,避免在唯一的远程连接中直接试验可能改变默认路由的设置。对私有地址的绕行应结合实际网络范围,而不是只复制别人的排除列表。验证时既测试外部目标,也测试本地共享、设备管理页面和需要保留的系统网络功能。

Android 与桌面的不同观察点

Android 客户端通常通过系统 VPN 接口接入应用流量,这与桌面上独立的 TUN 开关不能简单逐项对应。系统授权、按应用选择和后台限制是主要观察点。使用应用范围设置时,应确认界面表达的是仅包含所选应用还是排除所选应用,保存后重新建立连接并测试。不要依据列表中的勾选状态猜测含义,应结合说明和实际请求日志确认。

锁屏后出现中断,应先比较前台与后台状态,再检查电池管理、后台运行限制和网络切换,而不是立即更换节点。桌面从有线切到无线、从休眠恢复时,也可能需要重新建立虚拟接口和路由。每次只测试一种环境变化,记录连接恢复情况。若仅在切网后异常,重点应放在接口状态与出口网络变化,而不是反复编辑已验证正确的认证字段。

日常维护:备份、更新与故障定位

保存可恢复的配置基线

日常维护首先是保留一份能够解释的可用配置,而不是不断增加设置。备份应覆盖订阅分组、手动节点、自定义路由、DNS 选择和必要的界面偏好,同时记录哪些内容由客户端自动生成。导出的资料可能包含访问凭据,应放在受控位置并限制共享。备份完成后检查能否识别其格式及适用客户端,不把一个无法恢复的文件当作已经完成的保障。

更新前记录当前可用状态和关键设置,结束重要连接,再更新客户端或相关组件。更新后先做与原来相同的基础测试,确认启动、订阅、入口和路由都正常,再启用新功能。界面调整后找不到旧菜单,应先检查设置组织方式是否改变,不立即重新填写所有参数。若升级引入异常,保留日志与配置差异,再按事先准备的恢复方法处理。

按失败阶段读取日志

故障定位先看时间顺序:程序是否启动、配置是否生成、内核是否运行、请求是否进入、远端是否建立连接、目标是否返回内容。日志中最早出现的相关错误通常比后续连锁报错更有价值。阅读时保留错误前后的上下文,不只截取一个红色单词。若需要提高日志详细程度,应只在复现期间启用,记录完成后恢复日常级别,避免长期堆积敏感请求信息。

内核启动失败时,优先检查 JSON 语法、字段位置、出口标签、数据文件和本地端口。此时网络尚未进入正常处理阶段,切换远端节点未必有帮助。端口占用应寻找同机程序,分类文件缺失应核对数据路径,字段不支持则核对内核能力。更具体的日志分支见内核启动失败排查,处理完一个确定错误后再重新启动观察。

现象优先检查暂缓操作
内核无法启动配置语法、端口、文件路径、字段兼容连续切换远端节点
运行但没有请求记录应用入口、代理端口、接管范围增加路由规则
域名失败而地址测试有响应解析路径、DNS 响应、域名匹配条件重装客户端
仅后台或切网后中断电池限制、接口状态、出口网络变化重写认证参数

速度问题需要分层比较

能够连接但表现变慢时,应区分节点负载、传输线路和本机设置。先固定应用与目标,在相近条件下比较不同节点,再检查是否只有某个时间段或网络环境出现问题。不要同时切换节点、传输参数和 DNS,否则即使恢复也难以判断原因。测试结果只对所用方法和当时环境有效,不能直接转换成对全部应用体验的长期结论。

本机层面先检查其他下载任务、资源占用和重复代理,再评估连接复用等高级选项。复用不是在所有协议和应用下都更合适,盲目开启可能改变故障表现。关于三层排查的具体顺序,可参阅连接速度慢的分层检查。日常不必频繁批量测试所有节点,先保证常用配置稳定,再按实际问题开展有目标的对照。

分享故障资料时应保留客户端名称、操作系统、发生阶段和脱敏报错,同时去掉订阅地址、身份信息以及不必要的访问记录。截图中还可能包含分组名称、服务器地址和账户相关内容,发送前需要逐项检查。对方如果只能看到一个超时提示而不知道入口与模式,很难给出有效判断;一份简短但结构完整的复现说明,比大量未整理截图更有帮助。

维护记录可以只用普通文本,写明修改项目、修改原因、测试目标、观察结果和恢复方式。发现临时设置不再必要时及时移除,避免几年后只能依赖一组无人理解的例外规则。每隔一段时间检查订阅分组是否仍使用、备份是否有效,以及系统代理是否与当前客户端一致。维护的目标是让故障范围可缩小、改动可解释,而不是让设置数量持续增加。

进阶路线:按问题增加配置复杂度

从可用连接走向可验证配置

完成前面章节后,进阶学习应围绕真实需求展开。需要精细控制业务路径,就深入路由与 DNS;需要管理不同设备,就研究配置迁移边界;需要处理特殊协议参数,就先核对内核能力。不要把所有高级开关同时开启作为学习完成的标志。一个能说明每条规则作用、能够复现测试并随时回退的简洁配置,比大量未经验证的选项更适合长期维护。

建议为每次实验建立四项记录:当前基线、准备验证的假设、唯一改动和预期结果。例如验证域名规则是否优先,可以保持节点与入口不变,只增加一条范围明确的规则,再观察出口日志。如果实际结果不符,先解释差异,不继续叠加第二个改动。这样能够把学习过程变成可重复实验,也能防止一次成功被误归因于同时修改的多个参数。

协议能力与内核差异

深入 VLESS、XTLS Vision 或 REALITY 时,应先理解各参数所属层次,再核对客户端和当前内核的支持情况。服务器地址、服务器名称、流控、公钥和短标识等字段不能因为名字相似就互相替换。仅讨论协议名称不足以判断节点可用,还要考虑具体传输组合与服务端配置。已有服务正常时,不应只为尝试新名词就把一组经过验证的参数整体改写。

V2Fly 与 Xray 的关系和能力边界,可结合两类内核特性对比继续阅读。学习重点不是给内核做笼统排名,而是明确一项功能由谁实现、配置结构有什么差别、当前客户端如何暴露该功能。切换内核前先准备兼容性检查清单,切换后重新验证启动、握手、分流与 DNS,不把旧内核上的成功直接当作新环境的保证。

自定义配置与图形界面的边界

使用自定义 JSON 前,应明确它是完整替代图形配置,还是仅合并一个局部片段。不同入口可能采用不同处理方式,重复定义入口、出口或标签会带来冲突。先通过最小直连示例熟悉结构,再逐项加入自己的有效节点与规则。不要把含有他人本地路径和特定标签的完整配置直接导入,也不要在无法确认合并顺序时同时维护两套相互覆盖的设置。

图形界面生成的配置适合查看实际结果,但不一定适合作为长期手工编辑位置。客户端下一次保存或切换节点时,可能重新生成文件并覆盖修改。需要持久化的高级设置,应放入客户端明确支持的自定义入口;没有对应入口时,先评估维护成本,而不是依赖每次启动后手动改文件。记录数据来源、生成过程和最终配置之间的关系,能避免修改看似保存却从未生效。

建立小规模回归检查

配置复杂后,应保留一组固定检查:普通域名是否可访问、本地资源是否保留直连、指定规则是否选择预期出口、未命中目标是否正确兜底、休眠或切网后是否恢复。每次升级或修改规则,都用同一组检查比较结果。无需追求覆盖所有网站,测试集只要能够代表自身关键场景,并能在失败时指向某个模块,就已经具有实际价值。

自动化也应建立在稳定流程上。订阅定时更新、自动启动和后台接管会减少重复操作,但也可能在无人观察时改变节点或系统状态。启用前确认失败后的行为,例如更新失败是否保留旧内容、启动时是否覆盖系统代理、异常退出能否恢复。先手动完成一次完整流程并测试恢复路径,再开启自动化,避免把未解决的问题变成周期性发生的后台故障。

本手册的终点是建立独立定位问题的顺序:确认环境,验证入口,核对节点,观察路由,检查解析,再评估接管与高级参数。需要重新建立最小连接时,可回到快速上手;需要更换设备安装形式时,查看客户端下载页;需要延伸案例时,从使用心得选择对应主题。让每次新增配置对应一个明确问题,并留下验证依据,才便于持续维护。