Advanced configuration reference

v2rayN 进阶配置手册:订阅、路由、DNS 与 TUN

面向已经完成首次连接、需要管理多组节点或精细控制流量路径的用户,集中说明订阅分组、服务器过滤、路由规则、DNS、TUN、FakeDNS、多订阅和自定义出站。

如果尚未完成客户端安装、订阅导入和第一次连接,应先阅读入门指南。该页面负责建立最短可用路径;本手册则作为系统查阅资料,解释设置之间的依赖关系、适用边界和排错顺序。客户端安装入口集中在下载页,常见异常的简短答案可在 FAQ 中查找。

以下内容以桌面端 v2rayN 为主要操作对象,同时说明 v2rayNG 与 v2flyNG 在概念上的对应关系。不同构建中的菜单名称可能略有变化,但订阅、路由、DNS、入站和出站的处理逻辑保持一致。修改复杂配置前,先记录当前可用节点、系统代理状态与原始设置,便于逐项回退。

01 / Configuration model

配置模型与可回退的变更方法

先区分四个配置层级

v2rayN 的界面设置最终会组合成内核运行配置。排查问题前,应先区分服务器、订阅、客户端行为和内核配置四个层级。服务器记录包含地址、端口、用户标识、传输方式与安全参数;订阅负责批量提供和更新服务器记录;客户端行为包括系统代理、托盘操作、自动更新和界面过滤;内核配置则处理入站监听、DNS、路由与出站。一个节点可以通过延迟测试,并不代表系统代理、DNS 或路由一定正确,因为这些环节位于节点连接之外。

图形界面中的“当前服务器”通常只是默认代理出站的来源。路由规则可能把一部分请求交给直连或阻断出站,TUN 也可能接管原本不读取系统代理的程序。因此,判断某项设置是否生效时,不能只观察节点是否变色或托盘图标是否变化。应同时确认客户端运行状态、代理模式、目标程序的连接方式以及规则命中结果。

建立最小可用基线

进行进阶调整前,先建立一套可重复验证的基线:保留一个已知能够连接的服务器,将路由恢复到简单规则,暂时关闭 TUN 与 FakeDNS,只启用系统代理,然后用浏览器访问普通 HTTPS 页面。该状态能够工作后,再按“订阅过滤、路由、DNS、TUN、FakeDNS”的顺序逐层增加配置。一次只改变一个层级,变更后立即复测,能够显著缩短定位范围。

建议为每次试验记录四项信息:修改了什么、修改前的值、预期结果、实际结果。记录不需要复杂工具,一段本地文本即可。遇到无法连接时,先撤销最后一次变更,而不是同时切换节点、修改 DNS、重装客户端和清理系统网络。多项动作一起执行会破坏可复现性,也无法确认真正原因。

理解生成配置与手写配置的边界

v2rayN 适合通过界面维护常见参数,界面生成的配置也更容易随服务器切换自动更新。手写 JSON 适用于需要额外出站、特殊 DNS 策略或细粒度路由的场景,但必须考虑客户端重新生成配置时是否会覆盖修改。若某项能力能够通过路由设置、DNS 设置或自定义配置入口完成,应优先使用对应入口,不要直接改动临时运行文件。

配置片段必须保持 JSON 语法完整:属性名与字符串使用半角双引号,数组项目之间需要逗号,最后一项不能多写逗号。域名、路径和正则表达式还可能涉及反斜杠转义。保存后若内核立即退出,优先查看日志中最早出现的解析错误;后续连接失败往往只是前一项解析错误的连锁结果。

{
  "routing": {
    "domainStrategy": "AsIs",
    "rules": [
      {
        "type": "field",
        "ip": ["geoip:private"],
        "outboundTag": "direct"
      }
    ]
  }
}

按现象确定检查入口

浏览器可用而其他程序不可用,先检查程序是否读取系统代理,再考虑 TUN;域名打不开但直接访问目标地址有响应,先检查 DNS;只有部分网站异常,检查路由顺序和域名规则;订阅更新后节点消失,检查过滤表达式与分组;启用 FakeDNS 后局域网名称异常,检查排除范围与 DNS 接管边界。按照现象选择入口,比从头重置所有设置更可靠。

完成一组稳定配置后,应保留配置导出或界面截图,并记录使用的模式。配置备份只保存本地设置,不等同于订阅服务本身;订阅地址失效时,备份无法生成新的服务器记录。对订阅地址、服务器凭据和自定义配置文件应按敏感信息处理,不放入公开文档,也不要把运行日志原样发送到公开区域。

02 / Subscription groups

订阅分组与服务器过滤

分组解决的是管理问题

订阅分组用于区分服务器来源、用途和更新节奏,而不是改变协议本身。导入多条订阅后,如果全部服务器混在一个列表中,节点名称重复、地区标记不一致和倍率说明会使筛选结果难以判断。较稳妥的做法是按来源建立分组,每条订阅设置明确备注,再通过过滤条件形成临时视图。分组名称应描述来源或用途,不要依赖容易变化的节点数量。

订阅地址应通过客户端的订阅分组设置保存。新增后先手动执行一次更新,确认服务器记录能够解析,再设置自动更新间隔。若首次更新失败,应先检查地址是否完整、复制时是否带入空格、网络是否能够访问订阅端点。不要在首次失败后连续创建多条相同分组,否则后续更新会产生重复服务器,增加清理成本。

备注、分组名与服务器名各有用途

分组备注由用户维护,适合标记来源;分组名用于列表归类;服务器名通常由订阅提供方生成,更新时可能发生变化。需要长期稳定筛选时,不应只依赖完整服务器名,而应选择相对稳定的关键词组合,例如地区缩写、协议名或用途标签。若订阅方改变命名规则,过滤结果也会改变,因此每次大规模更新后都应确认筛选视图仍包含预期服务器。

服务器过滤通常分为包含与排除两类。包含条件缩小显示范围,例如只显示名称中带有某个地区标记的记录;排除条件用于移除维护、剩余流量、到期提示等非服务器条目。过滤只影响视图时,不会删除原始记录;删除操作则会直接移除本地服务器。执行批量删除前,要先确认当前操作对象是过滤结果还是整个分组。

管理对象 适合记录的内容 更新后的稳定性 常见误区
订阅备注 来源、用途、维护说明 由用户控制,较稳定 备注过短导致来源难以区分
分组 一条订阅对应的一批服务器 通常保持不变 多个来源使用相同分组名
服务器名 地区、线路、倍率、协议 可能随订阅更新变化 把完整名称当作永久标识
过滤条件 临时筛选和排除规则 取决于命名规则 误认为过滤等于删除

过滤表达式从简单条件开始

如果客户端入口支持正则表达式,应先使用普通关键词验证范围,再逐步增加组合条件。正则中的圆括号、方括号、点号和加号都有特殊含义,直接复制服务器名称可能改变匹配结果。需要匹配多个普通关键词时,可以使用竖线表达“任意一个”,例如 HK|SG|JP。需要排除“剩余流量”“套餐到期”等提示项时,先单独测试每个关键词,再合并条件。

包含示例:
HK|SG|JP

排除示例:
剩余流量|套餐到期|官网|维护

协议筛选示例:
VMess|VLESS|Trojan

过滤条件不应承担自动选路职责。它适合缩小可见列表,但不会持续判断节点质量,也不会替代真连接延迟测试。筛选后应在目标集合内执行真连接延迟测试,排除握手失败的记录,再结合实际下载或网页访问选择服务器。ICMP Ping、真连接延迟和下载测速的差异可参考延迟测试说明

更新、覆盖和移除策略

订阅更新通常按分组刷新记录。若更新后出现大量重复项,先确认是否导入了相同地址的多个分组,再检查客户端的更新行为是覆盖旧记录还是保留手工修改。对订阅生成的服务器直接改名或改参数,可能在下次更新时被覆盖。需要长期保留的手工服务器应放在独立分组,不与自动更新订阅混合。

移除订阅时,需要区分“删除订阅配置”和“删除该订阅已生成的服务器”。只删除订阅地址可能留下旧服务器,这些记录不会继续获得参数更新;只删除服务器而保留订阅,下次更新又会重新生成。停用某个来源时,先停止自动更新,再删除对应服务器,最后移除订阅分组。操作完成后检查当前活动服务器,避免它仍指向已经删除的记录。

在 v2rayNG 或 v2flyNG 中,订阅管理入口与桌面端布局不同,但处理顺序相同:为来源设置备注,单独更新,确认解析结果,再选择活动配置。移动网络切换频繁时,不宜设置过短的自动更新周期;更新失败时保留已有服务器,先判断是网络临时不可达还是订阅地址本身发生变化。

03 / Routing rules

路由规则实战:匹配条件、顺序与出站

规则按照顺序决定出站

路由的核心任务是把连接交给指定出站。常见出站包括代理、直连和阻断,自定义配置还可以增加其他代理链路。规则由匹配条件和目标出站组成:当域名、地址、端口、网络类型或入站标签满足条件时,将连接交给对应的 outboundTag。多数实现按规则从上到下匹配,较具体的规则应放在较通用的规则之前,否则前面的宽泛条件会提前接管请求。

一套容易维护的基础顺序是:先处理明确需要阻断的目标,再处理局域网与私有地址直连,然后放置业务上明确的域名或地址规则,最后设置兜底行为。兜底可以由默认出站承担,不一定需要写成覆盖全部目标的规则。若在规则顶部使用过宽的域名匹配,后续分流条目将没有机会生效。

域名匹配与地址匹配不是同一步

域名规则在连接仍保留域名信息时最清晰,例如 domain:example.com 可匹配该域名及其子域范围,full:example.com 用于精确主机名,regexp: 则适合确实需要模式匹配的场景。正则规则解析成本和维护成本更高,普通域名能够表达时不应优先使用正则。站点依赖多个静态资源域名时,应逐项确认,不要根据主页域名推断所有请求都会命中同一规则。

地址规则在目标已经解析为 IP 时使用,可匹配单个地址、CIDR 网段或内置分类。geoip:private 常用于私有地址直连,避免局域网打印机、存储设备和路由管理页面被送入代理。域名解析结果可能随时间与地区变化,把动态站点的当前地址写成永久规则通常不稳定;能用域名表达的业务条件,应优先使用域名规则。

{
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      {
        "type": "field",
        "domain": ["full:telemetry.example.com"],
        "outboundTag": "block"
      },
      {
        "type": "field",
        "ip": ["geoip:private"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "domain": [
          "domain:docs.example.com",
          "full:api.example.net"
        ],
        "outboundTag": "proxy"
      }
    ]
  }
}

domainStrategy 如何改变匹配过程

AsIs 表示优先按请求中的原始域名处理,不主动为路由匹配解析地址;IPIfNonMatch 表示域名规则未匹配时,再解析地址并尝试地址规则;IPOnDemand 会在规则判断需要地址时更早触发解析。选择策略时要结合 DNS 配置。若路由依赖地址分类,而策略始终不解析地址,对应规则可能不会命中;若过早解析,又可能增加 DNS 查询或改变域名分流链路。

一般场景可以从 AsIs 开始,只有明确需要基于解析地址继续判断时再使用 IPIfNonMatch。修改后重点观察同一域名是否产生不同 DNS 请求、是否命中预期出站。不要把策略名称理解为“速度档位”,它改变的是匹配阶段和解析时机,不保证某个值在所有网络环境中更快。

条件 适合场景 注意事项
domain 站点、接口与域名分类分流 请求必须保留可供匹配的域名信息
ip 私有网段、固定服务地址 动态地址不适合长期手工维护
port 明确端口范围的服务 现代应用可能同时使用多个端口
network 区分 TCP 与 UDP 阻断 UDP 可能影响实时通信和解析
inboundTag 按入口来源实施不同策略 标签必须与实际入站名称一致

规则验证应观察完整请求

验证路由不能只测试首页是否打开。一个页面可能同时请求主站、图片、接口和身份认证域名,不同请求可能走不同出站。先用一个具体目标建立单条规则,重启内核后查看日志中的目标、命中结果与出站标签。确认单条规则有效后再扩展域名范围。若日志中只有地址没有域名,应回到 DNS 与嗅探设置检查域名信息是否仍可获得。

规则不生效时依次检查四项:规则是否位于正确顺序,匹配语法是否符合内核格式,目标出站标签是否存在,实际连接是否由当前内核接管。浏览器自带的安全 DNS、应用内置代理或已建立的长连接都可能绕开刚刚修改的链路。测试前关闭并重新打开目标程序,必要时清理其连接缓存,而不是只刷新页面。

路由规则应保持可读。几十条零散域名比少量按业务归类的规则更难审查,也更容易发生前后覆盖。完成配置后,从顶部逐条回答“匹配什么、交给哪个出站、为什么必须位于这里”。无法明确回答的条目通常需要拆分、改名或移除。

04 / DNS

DNS 配置优化与解析链路排查

先画清楚谁在发起查询

DNS 异常经常被误判为节点失效。实际链路可能包含系统解析器、浏览器安全 DNS、v2rayN 内核 DNS、TUN DNS 接管以及远端解析。不同程序若走不同解析入口,同一域名可能获得不同结果。优化前先确定目标程序是否由系统解析、查询是否进入内核、内核向哪台服务器发送请求,以及解析结果如何参与路由。

仅启用系统代理时,浏览器可能自行解析域名,也可能把域名交给代理入口,具体取决于代理类型和程序实现。启用 TUN 后,系统 DNS 请求通常更容易被统一接管,但仍需正确设置 DNS 地址、路由与排除项。浏览器单独启用安全 DNS 时,其查询可能作为普通 HTTPS 流量发送,表面上看不到传统的 53 端口请求。

内核 DNS 的服务器与查询规则

内核 DNS 配置可以定义多个服务器,并按域名范围选择。普通 UDP DNS 配置简单,但请求路径取决于网络与路由;基于 HTTPS 的 DNS 通过 HTTPS 连接查询,需要先解决服务器域名的初始解析问题;使用固定地址可以减少启动依赖,但地址变化时需要维护。选择方式时应考虑可达性和依赖链,不应只按名称判断优劣。

DNS 服务器也可以带有域名过滤条件。这样做的目的通常是让特定域名走指定解析器,而不是把所有查询随机分配给多个服务器。若多个服务器的域名范围互相重叠,应明确优先关系。默认服务器负责处理没有特殊要求的域名,专用服务器只覆盖必要范围,配置会更容易验证。

{
  "dns": {
    "hosts": {
      "router.internal": "192.168.1.1"
    },
    "servers": [
      {
        "address": "https://dns.example/dns-query",
        "domains": ["domain:service.example"]
      },
      "1.1.1.1",
      "localhost"
    ],
    "queryStrategy": "UseIP"
  }
}

示例中的域名仅用于展示结构,实际配置必须换成可访问的解析服务。hosts 用于少量固定映射,适合本地设备或测试环境,不适合维护大量公网域名。错误的固定映射会绕过正常更新,因此设置后要记录用途。localhost 会回到系统解析器,若系统解析器又把请求交回内核,可能形成循环,使用前必须确认链路方向。

查询策略与地址族

queryStrategy 控制返回地址类型。UseIP 允许按环境获取可用地址,UseIPv4 只请求 IPv4,UseIPv6 只请求 IPv6。只有在网络确实具备对应连接能力时,返回的地址才有意义。系统获得 IPv6 地址并不自动说明出站链路能够稳定访问所有 IPv6 目标;若表现为部分站点等待后回退,可以临时限制到 IPv4 验证是否与地址族有关。

地址族问题应通过对照测试确认,而不是永久关闭某一类地址作为通用做法。分别记录解析结果、连接目标和失败阶段。如果 DNS 能返回地址但 TCP 或 UDP 建连失败,问题位于解析之后;如果只有某个解析器超时,则检查该解析器的访问路径。日志中的“解析失败”和“连接拒绝”代表不同阶段,应分开处理。

现象 优先检查 验证方法
域名失败,固定地址可连接 DNS 服务器与查询路径 比较系统解析和内核日志
首次访问慢,随后正常 DNS 超时与地址族回退 重启程序后重复记录时间点
局域网名称无法解析 本地 DNS 与排除规则 直接查询网关提供的解析器
仅浏览器表现不同 浏览器安全 DNS 与连接缓存 关闭独立解析后进行对照

缓存清理只用于验证

修改 DNS 后,系统、浏览器和内核都可能保留旧结果。Windows 可在终端执行 ipconfig /flushdns 清理系统缓存,但该命令不会清除浏览器自身缓存,也不会终止已有连接。更可靠的测试流程是保存配置、重启内核、关闭目标程序、清理必要缓存,再重新发起请求。频繁清理缓存不能修复错误配置,只适合确认旧结果是否仍在影响测试。

ipconfig /flushdns

nslookup example.com

nslookup example.com 1.1.1.1

nslookup 适合比较系统默认解析器与指定解析器返回结果,但它不一定经过应用实际使用的内核 DNS 链路。因此命令结果正常而浏览器仍失败时,应继续检查浏览器和代理入口。若启用了 TUN 或 FakeDNS,普通查询工具看到的结果还可能是接管后的映射地址,需要结合对应章节理解,不能按传统 DNS 结果单独判断。

05 / TUN mode

v2rayN TUN 模式:接管范围与系统差异

TUN 解决哪些程序不读取代理的问题

系统代理依赖应用主动读取代理设置。浏览器和部分桌面程序通常支持这种方式,但一些游戏启动器、命令行工具、后台服务或使用自定义网络栈的程序可能直接连接。TUN 模式通过虚拟网络接口接管系统流量,使这些程序的连接也能进入内核。它改变的是流量入口,不是服务器协议,也不会让原本失效的节点恢复连接。

是否启用 TUN 应由应用需求决定。仅使用能够正确读取系统代理的程序时,系统代理配置更简单,排错范围也更小。只有明确发现某个程序不经过代理入口,或需要统一处理 TCP、UDP 与 DNS 时,再启用 TUN。将 TUN 作为默认排错动作,容易把路由、权限、虚拟接口和 DNS 问题同时引入。

启用前确认权限与冲突项

TUN 需要创建或控制虚拟网络接口,并调整路由。Windows 环境中可能需要提升权限;macOS 与 Linux 也需要系统允许相应网络操作。若客户端提示接口创建失败,先查看权限和驱动状态,不要反复切换节点。企业网络管理软件、其他虚拟网络工具和已运行的同类代理程序可能同时修改路由,测试时应只保留一个接管者。

启用前记录系统默认网关和 DNS,关闭其他网络接管工具,然后启动 v2rayN 的 TUN 模式。成功后先测试一个普通网页,再测试原先不读取系统代理的程序。若所有网络立即中断,应先关闭 TUN 恢复基础连接,再检查虚拟接口是否创建、默认路由是否改变、DNS 是否指向预期入口。不要在断网状态下继续叠加 FakeDNS 和复杂路由。

平台 重点检查 常见影响因素
Windows 运行权限、虚拟接口、系统路由 其他虚拟网卡与安全策略
macOS 网络扩展授权、DNS 与默认路由 系统权限未确认或旧接口残留
Android 系统 VPN 授权与应用排除 省电策略、同时运行的网络应用
Linux TUN 设备权限、路由表与 DNS 网络管理服务重写配置

严格路由、自动路由与 MTU

自动路由用于把需要接管的流量导向 TUN 接口;严格路由通常会进一步限制可能绕过该接口的路径。具体选项名称可能随构建变化,但判断原则相同:先使用默认自动路由验证基本接管,再根据泄漏路径或局域网需求调整严格程度。严格路由启用后,如果局域网资源不可访问,应检查私有网段是否保留直连,而不是直接增加全局代理规则。

MTU 决定虚拟接口可承载的数据包大小。值过大时,某些链路可能出现网页部分加载、上传卡住或特定连接超时;值过小则增加分片和额外开销。遇到“能连接但大请求失败”时,可以在记录原值后分档降低 MTU 做对照。不要仅凭单次测速判断,至少测试小网页、较大文件传输和需要持续连接的应用。

排除局域网与客户端自身流量

TUN 路由通常需要让私有网段保持直连,否则打印机、网关管理页面和局域网服务可能被错误送入代理。常见私有地址范围可通过 geoip:private 规则统一处理。若本地网络使用了非典型地址范围,还需按实际网段补充。域名形式的局域网服务同时依赖本地 DNS,只有地址直连而 DNS 被远端解析时,名称仍可能无法使用。

客户端自身到代理服务器的连接也必须避免再次进入同一代理出站,否则会产生流量回环。成熟的默认配置通常会处理这一点,自定义路由或自定义出站时仍要确认服务器地址采用直连路径。表现为内核启动后不断重连、日志重复出现同一服务器目标时,应检查是否发生自代理循环。

关闭 TUN 后的恢复检查

正常关闭客户端时,虚拟接口与临时路由应随之撤销。若异常退出后网络仍不可用,先重新打开客户端并正常关闭 TUN,再检查系统默认路由和 DNS 是否恢复。重启系统可以清理部分临时状态,但不应替代原因定位。反复出现残留时,应检查多个网络工具是否同时管理接口,并从日志中确认退出阶段是否报错。

移动端的 v2rayNG 与 v2flyNG 通过系统提供的网络接管接口工作,应用排除、后台限制和省电策略会直接影响持续连接。桌面端的 TUN 设置不能原样套用到 Android,但路由和 DNS 的分析方法一致:先确认流量是否进入客户端,再确认规则命中与出站,最后检查系统是否在后台终止连接。

06 / FakeDNS

FakeDNS 的工作方式、适用场景与边界

FakeDNS 保存域名与连接的对应关系

FakeDNS 在接管 DNS 查询后,为域名返回一个保留地址池中的临时地址,并记录该地址与原始域名的映射。当应用连接这个临时地址时,内核根据映射恢复域名,再执行域名路由和远端连接。它的主要价值是为那些先在本地解析、随后只携带地址发起连接的程序保留域名信息,使域名规则仍有机会生效。

FakeDNS 返回的地址不是目标服务器的真实公网地址,因此不能脱离内核单独使用。查询与后续连接必须进入同一个接管链路,映射才成立。如果 DNS 查询经过 FakeDNS,但连接绕过 TUN,应用会尝试直接访问临时地址并失败;反过来,连接进入 TUN而查询由其他解析器完成,也无法利用映射恢复域名。

适合启用的场景

当 TUN 已稳定工作,但日志中大量连接只显示地址、域名路由难以命中时,可以考虑 FakeDNS。它也适用于希望减少本地真实解析、让域名在代理链路中继续处理的场景。启用前必须先确认普通 TUN、DNS 接管和基础路由可用,否则新增的地址池与映射机制会让故障现象更难解释。

普通系统代理场景通常不必为了“更快”单独启用 FakeDNS。很多代理入口本身可以接收域名,域名信息没有丢失。FakeDNS 也不是缓存加速器,其核心作用是映射和还原。是否改善连接取决于原来的域名处理问题,不能把它视为所有环境都应启用的性能选项。

{
  "dns": {
    "servers": [
      {
        "address": "fakedns",
        "domains": ["geosite:geolocation-!cn"]
      },
      "localhost"
    ]
  },
  "fakedns": [
    {
      "ipPool": "198.18.0.0/15",
      "poolSize": 65535
    }
  ]
}

示例展示常见结构,实际支持方式取决于客户端所用内核与配置入口。198.18.0.0/15 是常用于基准测试的保留网段,可作为映射池,但仍应确认本地网络、其他虚拟网络或企业路由没有占用相同范围。地址池发生冲突时,可能表现为特定内网服务无法连接或路由把真实目标误当成 FakeDNS 地址。

局域网、分流与排除

局域网名称、打印机发现和路由器内部域名通常依赖本地 DNS,不适合统一交给 FakeDNS。应让私有域名和本地域名后缀走本地解析,并让私有地址直连。若局域网使用自定义后缀,需要显式加入排除范围。只排除私有地址不一定足够,因为名称解析发生在获得地址之前。

FakeDNS 与域名分流配合时,规则应在域名被恢复后判断。若连接日志始终只显示映射地址,说明还原链路没有完成,应检查 DNS 查询和连接是否由同一实例处理、地址池是否一致、TUN 是否接管目标应用。不要通过添加映射地址段的代理规则掩盖问题,这会让所有临时地址进入代理,却仍然失去原始域名的规则价值。

现象 可能原因 处理方向
解析得到映射地址但无法连接 后续连接未进入 TUN 检查应用排除与系统路由
局域网域名失效 本地查询被 FakeDNS 接管 增加本地域名与解析器规则
域名规则仍未命中 映射未还原或规则顺序错误 查看连接日志与出站标签
启用后部分网段异常 映射池与现有网络冲突 核对路由表和地址占用

缓存生命周期与测试方法

FakeDNS 映射有容量和生命周期。应用长期保持旧映射地址,而内核已经重启或映射记录被替换时,旧连接可能失败。测试配置变更时应重启目标程序,必要时清理其 DNS 缓存,让查询和连接在同一轮运行中重新建立。只重启内核而保留应用的旧连接,容易得到不一致结果。

验证时可以选择一个具有明确域名规则的测试目标。先在未启用 FakeDNS 时记录日志中的目标形式,再启用后重新发起全新连接,确认 DNS 返回映射地址、内核恢复域名、规则命中预期出站三个阶段都出现。任何一个阶段缺失,都应在该阶段修复,而不是继续增加规则。

关闭 FakeDNS 后,应同时恢复对应 DNS 服务器配置,并让应用重新解析域名。仅移除地址池而保留 fakedns 解析入口会导致配置不完整。若需要长期在启用与关闭之间切换,建议保存两套完整配置,而不是每次手动修改多个分散选项。

07 / Multiple subscriptions

多订阅管理、更新节奏与冲突处理

每个来源保持独立生命周期

多订阅管理的目标不是把更多服务器堆入同一列表,而是让不同来源能够独立更新、停用和审查。每条订阅应使用唯一备注与分组,不要把两个地址配置成相同名称。这样在某一来源更新失败、节点命名变化或需要暂停时,可以只处理对应分组,不影响其他已验证的服务器。

建议把手工服务器单独放在“本地维护”分组。订阅更新通常以远端内容为准,直接修改订阅生成的服务器可能在下一次刷新时被覆盖。需要临时调整某个参数时,先复制服务器到手工分组,再进行修改,并在名称中标记用途。原始订阅记录保留不动,便于和远端参数对照。

错开更新而不是频繁轮询

自动更新间隔应根据订阅变化频率设置。过短间隔会增加无效请求,也可能在网络切换时连续产生失败记录。多个订阅不必在同一时刻更新;先手动确认每个来源可独立更新,再启用合理周期。笔记本从休眠恢复、网络刚切换或代理内核尚未连接时,首次自动更新可能失败,应等待网络稳定后手动重试。

更新订阅时,订阅请求本身走直连还是代理取决于客户端设置与当前网络。若一个订阅只能通过当前代理访问,就形成了对现有可用节点的依赖。此时至少保留一个已验证且不会在更新前被清理的服务器。不要在获取新内容之前先删除全部旧记录,否则一次临时更新失败就会失去恢复路径。

处理同名服务器与重复内容

不同来源可能使用相同服务器名称,甚至提供参数相同的记录。名称相同不代表配置相同,不能仅按显示文本批量删除。应结合分组、地址、端口、协议和传输参数判断。若客户端支持按分组查看,先限制在一个来源内执行操作。跨分组去重前,先确认重复记录是否承担备用来源作用。

同一订阅被重复导入时,最明显的现象是每次更新都产生两批相似记录。处理前暂停相关分组的自动更新,确认哪条订阅配置需要保留,然后删除多余分组及其生成的服务器。完成后重新更新保留分组,并检查当前活动服务器是否仍存在。直接在总列表中逐条删除无法解决重复订阅的根因。

场景 保留策略 清理策略
来源临时更新失败 保留上次可用记录 确认地址失效后再移除
相同地址重复导入 保留备注清晰的一条 删除多余分组及对应记录
订阅记录需要手工修改 复制到本地维护分组 不改动自动更新原记录
长期停用某个来源 先切换活动服务器 停更、删记录、删分组

服务器选择应与分组管理分离

分组用于来源管理,延迟测试用于判断连接阶段,实际使用还要考虑带宽、稳定性和目标服务。不要因为某个分组最近更新,就默认其中所有服务器都可用。每次更新后先执行真连接延迟测试,排除无法完成代理握手的记录,再对少量候选进行实际访问。具体选择思路可参考节点选择说明

自动选择功能如果依赖定期测试,应理解测试目标、超时和切换条件。测试地址不可达会让全部服务器被错误判断,超时过短会排除高延迟但可用的线路,切换过于频繁则会中断已有连接。先手动验证测试目标能够通过多个服务器访问,再考虑自动化。需要持续会话的应用通常更看重稳定,而不是每次选择最低的单次延迟。

订阅迁移与本地记录

更换设备时,应分别处理订阅地址、手工服务器、路由规则和 DNS 设置。只迁移订阅可以重新生成远端服务器,但不会自动带回本地自定义规则;只复制运行配置又可能包含临时生成内容,后续难以更新。迁移后按来源逐条更新,确认分组与服务器数量合理,再导入自定义规则。

订阅地址和服务器凭据都属于敏感配置。用于排错的截图应隐藏完整地址、用户标识和令牌。日志提交前也要检查请求参数与服务器信息。公开示例使用 https://example.com/sub?token=xxxx 这类明显假值,不应把真实订阅内容写入脚本、网页或共享笔记。

当多订阅体系已经稳定,日常维护只需要检查失败更新、异常重复和长期不可用记录。不要为了列表整齐频繁重建全部分组。保留清晰的来源边界、可回退的活动服务器和少量说明,比追求完全自动化更容易长期维护。

08 / Custom outbound

自定义出站、链式连接与完整诊断

出站标签是路由与连接方式的接口

内核通过出站定义连接如何离开本机。常见的 proxydirectblock 分别表示使用当前代理服务器、直接连接和阻断。自定义出站可以增加本地 SOCKS 服务、特定直连参数或其他受支持协议,再由路由规则通过标签选择。标签必须唯一,规则中的 outboundTag 必须与出站的 tag 完全一致。

增加出站前先明确用途:是让某类请求交给本机另一项服务,还是为特定目标设置独立连接路径。没有对应路由规则的自定义出站不会自动接管流量;标签拼写错误时,内核可能拒绝加载配置或在请求阶段报错。名称应使用稳定、可读的英文短词,避免用服务器名称作为标签,因为服务器名称可能随订阅更新变化。

{
  "outbounds": [
    {
      "tag": "local-socks",
      "protocol": "socks",
      "settings": {
        "servers": [
          {
            "address": "127.0.0.1",
            "port": 1081
          }
        ]
      }
    },
    {
      "tag": "direct",
      "protocol": "freedom",
      "settings": {}
    },
    {
      "tag": "block",
      "protocol": "blackhole",
      "settings": {}
    }
  ]
}

示例把特定流量交给本机 127.0.0.1:1081 的 SOCKS 服务。使用前必须确认该端口确实有服务监听,并且不会再把流量转回当前 v2rayN 入站。两个本地服务互相指向会形成循环,表现为连接不断建立又立即失败。自定义端口也不要与 v2rayN 已使用的本地 HTTP、SOCKS 或 API 端口冲突。

链式连接需要明确每一跳

链式连接会增加故障点和握手成本,只应在明确需要时配置。每一跳都应能够单独验证:第一跳从本机到中间出站可达,中间出站能够访问下一目标,DNS 解析发生在预期位置。若链路中的任意一跳依赖前一跳提供的 DNS 或路由,应记录依赖关系,避免启动阶段互相等待。

测试链式连接时先用简单目标,不要同时启用复杂域名规则。日志应能显示请求进入哪个入站、匹配哪条规则、选择哪个出站以及在哪一阶段失败。连接超时表示的范围较广,可能是端口未监听、路由不可达或后续目标无响应;认证失败则优先检查对应出站的凭据和协议参数。不要通过延长所有超时来掩盖确定性的配置错误。

按层次读取日志

完整诊断可以分为六层:客户端进程是否启动,内核配置是否解析,入站端口或 TUN 是否接管请求,DNS 是否得到可用结果,路由是否选择预期出站,出站是否完成连接。日志中最早出现的错误通常最接近根因。内核配置解析失败时,后面的“代理不可用”没有独立诊断价值;DNS 已失败时,也不应先调整服务器测速参数。

日志级别应在排错期间临时提高,问题确认后恢复常规级别。详细日志可能包含目标域名、服务器地址和本地路径,分享前需要清理敏感内容。截取日志时保留错误前后的时间段和操作步骤,不要只复制最后一行。一次明确的复现过程比大量无关日志更容易定位。

层次 正常迹象 失败时优先动作
配置解析 内核持续运行且无语法错误 检查 JSON 结构、字段和标签
流量入口 入站日志出现目标请求 检查系统代理、TUN 与应用设置
DNS 返回符合策略的地址或映射 检查解析器可达性与循环
路由 命中预期规则和出站标签 检查顺序、条件和域名信息
出站连接 完成握手并持续传输 检查服务器参数与下一跳
应用表现 请求内容完整返回 检查缓存、长连接和应用内代理

建立可复现的诊断流程

遇到“V2Ray 无法连接”时,先记录发生时间、当前服务器、代理模式、是否启用 TUN、是否启用 FakeDNS以及受影响程序。然后选一个最小测试目标,关闭与问题无关的自定义规则,重新发起连接。若基础连接恢复,再按原顺序逐项启用设置,直到错误再次出现。该方法能够把复杂问题收敛到单个变更。

如果所有服务器同时失败,应优先检查本机网络、订阅是否刚更新、系统时间、DNS 与客户端运行状态,而不是逐个修改服务器参数。只有某个服务器失败时,再比较同分组其他记录和该服务器的协议参数。只有某个应用失败时,先确认应用是否进入当前代理入口。更多短问题可转到常见问题页逐项核对。

长期维护与升级检查

客户端和内核更新后,先用原有基础配置启动,再检查自定义字段是否仍被支持。不要在更新客户端的同时重构全部路由与 DNS。若配置无法加载,查看字段弃用或格式变化相关日志,把问题缩小到具体片段。下载与客户端选择统一从本站下载页进入,桌面平台优先使用 v2rayN,Android 可根据内核需求选择 v2rayNG 或 v2flyNG。

每隔一段时间审查订阅分组、过滤条件、路由条目、DNS 专用规则和自定义出站。删除已经无法说明用途的临时规则,确认局域网排除仍与当前网络一致,并检查自动更新是否持续成功。进阶配置的目标不是增加选项数量,而是让每一层行为都可解释、可验证、可回退。

v2rayN下载