先建立配置模型,再修改开关
V2Ray 图形客户端并不是单独的一套网络协议。v2rayN、v2rayNG 与 v2flyNG 负责订阅管理、节点选择、系统接管和界面操作,真正处理连接、路由与 DNS 的是客户端调用的内核。一次完整连接通常经过五个对象:应用流量进入本地入站,DNS 模块解析域名,路由模块按规则判断目标,出站模块选择直连、代理或阻断,最后由对应服务器或本地网络发送数据。进阶配置的核心不是打开更多选项,而是明确每一层的输入和输出。
排查时也应沿这条链路前进。浏览器无法访问目标站点,先确认流量是否进入客户端;已经进入但域名解析错误,再检查 DNS;解析正确却选择了错误线路,检查路由命中;路由命中正确但连接失败,才检查节点参数、服务器状态与本地网络。把所有问题都归因于节点,往往会掩盖系统代理、TUN 权限或 DNS 缓存造成的差异。相关的分层诊断方法可继续阅读速度慢的分层排查方法。
修改前记录有效状态
开始调整之前,保留一份能够正常连接的基线。记录当前订阅分组、活动服务器、系统代理状态、路由模式、DNS 模式和 TUN 状态。v2rayN 桌面端适合先关闭 TUN,仅启用系统代理并使用基础分流;这样链路短,错误来源容易定位。Android 端则先使用客户端提供的系统网络接管方式,确认单个节点可连接,再叠加自定义路由和 FakeDNS。每完成一类修改就重新连接并验证,不要同时改订阅、DNS、路由和 TUN。
验证不能只看客户端状态。客户端显示已启动,只表示本地服务或网络接口已经建立,不代表目标应用一定使用了该入口。浏览器一般遵循系统代理,部分终端程序需要单独设置代理环境变量,某些应用只会在 TUN 接管后进入客户端。建议准备三类测试:一个常用网页用于检查浏览器路径,一个 DNS 查询用于确认解析结果,一个终端请求用于确认命令行应用是否继承系统设置。系统代理不生效时,可按浏览器与终端分开排查中的顺序处理。
理解界面设置与生成配置的关系
图形界面中的“绕过局域网”“全局”“规则”“TUN”“FakeDNS”是配置生成器的上层选项。客户端会把订阅节点、用户规则和内核模板合并为运行配置,因此界面上的一项变更可能同时改动入站、DNS 与路由。手工配置片段只有放入客户端允许的扩展位置才会生效,直接改临时生成文件通常会在重启或切换节点后被覆盖。需要长期维护的规则,应保存到客户端的自定义路由、DNS 模板或配置文件入口中。
| 配置层 | 主要职责 | 典型异常 | 优先检查项 |
|---|---|---|---|
| 订阅与节点 | 提供服务器地址、端口、协议和传输参数 | 认证失败、连接超时 | 订阅更新时间、节点参数、网络可达性 |
| 入站接管 | 接收系统代理、应用代理或 TUN 流量 | 客户端启动但应用直连 | 系统代理、应用设置、TUN 权限 |
| DNS | 把域名转换为地址并向路由提供域名信息 | 解析超时、结果不符合预期 | 查询服务器、匹配域名、缓存 |
| 路由 | 把请求交给代理、直连或阻断出站 | 目标走错线路 | 规则顺序、域名策略、命中日志 |
| 出站 | 执行代理连接、直连或本地转发 | 握手失败、上游不可达 | 出站标签、服务器配置、上游端口 |
建立可回退的变更节奏
建议把调整拆成“保存基线、修改一项、重连、验证、记录结果”五步。规则文件应使用清晰名称,例如“基础分流”“工作网络补充”“TUN 专用 DNS”,避免出现大量无法辨认的副本。遇到异常时先回到基线,确认基础连接仍然成立,再逐项恢复高级设置。若回到基线后仍失败,问题更可能位于订阅、节点或本地网络,而不是刚才的路由表达式。
注意:示例配置用于解释结构。导入前应确认客户端支持对应字段,并将域名、端口和标签替换为自己的实际配置。不要把多段完整配置直接拼接,否则重复的顶层字段会使配置无法加载。
订阅分组与服务器过滤
订阅负责批量提供服务器,但服务器数量增加后,选择成本和误操作也会同步增加。有效的整理方法不是把所有节点放进一张长列表,而是先按来源分组,再按用途筛选。v2rayN 适合把默认分组、外部订阅和自建节点分开;v2rayNG、v2flyNG 则可利用订阅配置和备注字段区分来源。分组的边界应稳定,节点备注可以变化,但来源、用途与维护责任不应混在一起。
每个订阅应使用可识别的名称,例如“日常订阅”“测试线路”“自建服务”。名称只表达来源,不把当前节点状态写进名称,因为状态会随时间改变。手工添加的服务器单独保留,不要移动到自动更新的订阅组中,以免更新时难以判断它是否受订阅覆盖。对于不再使用的订阅,先停用自动更新并观察一段时间,再删除其分组;直接清空会同时失去原有备注与选择记录。
过滤器应解决什么问题
服务器过滤适合从长列表中缩小候选范围。常见维度包括备注关键词、协议类型、传输方式和订阅来源。过滤条件首先应保持可解释:输入一个关键词后,使用者能从服务器备注中看出为什么匹配。复杂正则表达式虽然灵活,但订阅命名稍有变化就可能漏选。稳定做法是要求同一订阅的备注具有一致格式,再以地区、用途或线路类别作为关键词。
筛选和路由是两件事。筛选决定界面中看到或批量测试哪些服务器,路由决定连接后某个请求走哪个出站。不要用服务器过滤代替流量分流,也不要因为某个节点被隐藏就认为它从配置中完全删除。部分客户端的过滤只改变列表显示,活动节点仍然可以继续工作;执行批量删除前应先确认当前选中项和分组范围。
关键词与正则的使用边界
简单关键词适合日常选择,例如按备注中的“工作”“自建”或协议名筛选。需要表达多个备选词时,可使用正则的选择符;需要排除测试节点时,可使用负向条件,但要先在小范围内验证。不同客户端的过滤入口和正则能力可能不同,复制表达式之前应确认它作用于服务器备注、地址还是完整显示名称。下面的表达式只展示通用思路,不依赖具体节点数量或速度数据。
工作|自建
^(?!.*测试).*
(VLESS|VMess|Trojan)
第一行匹配备注中包含“工作”或“自建”的条目;第二行排除包含“测试”的名称;第三行按显示名称中的协议词筛选。若订阅使用不同命名方式,应先查看真实备注再调整。过滤结果为空时,先去掉边界符和排除条件,确认基础关键词能匹配,再逐步增加约束。不要一开始就编写很长的表达式,否则难以判断是哪一段导致失配。
更新、去重与失效条目的处理
订阅更新应优先在单个分组内执行。更新后先看条目是否正常解析,再切换活动节点。相同服务器可能因备注不同而重复出现,也可能因为参数不同而只是地址相同;去重时不能只看域名和端口,还应比较用户标识、协议、传输方式、TLS 与路径等关键参数。自动去重适合完全一致的条目,参数存在差异时保留并重新命名更稳妥。
失效条目可分成临时不可达、参数错误和订阅撤销三类。一次连接失败不足以判定长期失效,应先切换本地网络或等待线路恢复;持续出现协议解析错误,则检查订阅是否使用了当前客户端不识别的字段;更新后从订阅中消失的条目通常由来源方撤销,不建议手工复制回自动分组。测速只用于比较当前网络条件下的响应,不能作为永久排序依据。
整理建议:先按来源分组,再用关键词筛选候选服务器,最后手动选择活动节点。分组解决维护问题,过滤解决查找问题,路由规则解决流量去向问题,三者不要混用。
三款客户端的分组侧重点
v2rayN 的桌面列表空间更大,适合管理多个订阅、批量更新和细化筛选,也是桌面平台的首选。v2rayNG 使用触屏列表,建议减少同时启用的订阅数量,把名称写短并保留明确前缀。v2flyNG 的管理方式与 Android 使用习惯相近,但内核家族不同,导入同一订阅后仍应确认协议和传输参数是否被完整识别。需要重新安装或更换平台时,从下载页按系统选择对应客户端。
完成整理后,应做一次可恢复性检查:记住当前活动订阅与服务器,手动更新单个分组,确认更新不会改变自建节点,再重启客户端验证选择是否保留。如果客户端在更新后切换了活动项,检查是否启用了自动选择或当前条目已被订阅替换。订阅地址属于持续访问凭据,不应写进公开截图、日志或共享规则文件;排错时只需说明订阅解析结果和错误类型。
V2Ray 路由规则实战
路由规则根据域名、IP、端口、网络类型、入站标签或协议特征,把连接送往指定出站。最常见的出站是代理、直连和阻断。规则通常按顺序匹配,先命中的规则先执行,因此同一目标同时满足多条规则时,顺序比规则数量更重要。设计规则前应先写出业务目标,例如“局域网直连、指定工作域名走专用出站、其余按基础规则处理”,再把目标翻译成匹配条件。
一套可维护的顺序通常从具体到宽泛:先处理需要阻断的明确目标,再处理局域网和私有地址,然后放置用户指定域名与专用出站,接着放置区域域名或 IP 规则,最后才是兜底。把大范围规则放在顶部,会让后面的细规则永远无法命中。修改后应查看客户端日志中的路由结果,而不是只凭目标网页是否打开判断。
域名匹配与域名策略
域名规则可以匹配完整域名、后缀域名或预定义域名集合。完整域名适合单个服务,后缀匹配会覆盖其所有子域名,使用时应评估范围。例如对 example.com 使用后缀规则,会同时影响 api.example.com 和 static.example.com。如果一个服务把网页、接口和静态资源分布在不同域名,只添加主域名可能出现页面框架加载但资源失败的情况。
domainStrategy 决定路由匹配时是否把域名解析成 IP。使用 AsIs 时,路由优先保留原始域名,不主动为 IP 规则解析;IPIfNonMatch 会在域名规则没有命中时解析,再尝试 IP 规则;IPOnDemand 会在可能需要 IP 匹配时更早触发解析。一般先使用 IPIfNonMatch,它能兼顾域名规则和 IP 规则,又避免所有请求都提前解析。若 DNS 设置不完整,依赖 IP 匹配的策略可能增加解析失败,因此路由与 DNS 必须一起验证。
基础规则结构
{
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
{
"type": "field",
"ip": [
"geoip:private"
],
"outboundTag": "direct"
},
{
"type": "field",
"domain": [
"full:intranet.example",
"domain:office.example"
],
"outboundTag": "direct"
},
{
"type": "field",
"domain": [
"domain:service.example"
],
"outboundTag": "proxy"
},
{
"type": "field",
"network": "tcp,udp",
"outboundTag": "proxy"
}
]
}
}
示例先把私有地址交给直连,再处理两个内部域名,然后指定一个服务走代理,最后用 TCP 与 UDP 规则兜底。full: 只匹配完整域名,domain: 匹配该域名及其子域。示例中的域名仅用于展示语法。实际使用时,出站标签必须与配置中的 tag 完全一致;标签拼写不同不会自动映射,通常会导致配置加载失败或规则无法找到目标出站。
端口、网络类型与入站标签
端口规则适合把特定服务交给指定出站,但端口并不等于应用。大量现代应用使用通用加密端口,仅靠端口无法区分业务。network 可区分 TCP 与 UDP,启用 TUN 后尤其要关注 UDP,因为 DNS、实时通信和部分传输会使用它。若选中的节点或上游出站无法处理 UDP,可为必要的 UDP 流量指定直连,也可以调整 DNS 传输方式减少依赖,但不能简单假设关闭 UDP 不影响应用。
inboundTag 可区分不同本地入口。例如为浏览器单独建立一个入站,为系统流量保留另一个入站,再通过路由送往不同出站。这种设计适合测试与隔离,但图形客户端是否暴露多个入站取决于配置模式。使用客户端生成配置时,先查看实际入站标签,不要照抄其他环境的名称。标签正确但规则不命中时,检查流量究竟从系统代理还是 TUN 入站进入。
验证规则是否命中
验证分三步。第一步把目标规则临时移到宽泛规则之前,避免被提前截获;第二步提高客户端日志可见度,重新连接并只访问一个测试目标;第三步检查目标域名、解析地址和最终出站标签。若日志只出现 IP 而没有域名,说明目标应用可能自行解析,或 DNS 请求没有经过客户端,此时域名规则可能无法工作,需要使用 TUN、调整 DNS 接管或补充 IP 规则。
规则修改后仍走旧线路,还要检查连接复用和缓存。浏览器可能保留现有连接,系统可能保留 DNS 结果,内核也可能复用已有会话。关闭目标应用的现有连接、清理必要缓存并重新连接客户端,再进行验证。不要连续刷新同一个已建立的会话来判断新规则。更多常见问题可在帮助中心按“使用技巧”和“故障排查”分类查询。
规则边界:大范围兜底规则必须放在末尾。每增加一条规则,都应写清匹配对象、目标出站和验证方法;无法解释用途的历史规则应先停用,而不是继续叠加例外。
DNS 配置优化与分流解析
DNS 配置决定域名如何获得地址,也影响域名规则和 IP 规则之间的衔接。系统 DNS、客户端内置 DNS、浏览器加密 DNS与应用自带解析可能同时存在,若查询没有经过预期路径,就会出现“路由写对但仍然走错出站”的现象。优化之前先确认查询来源:系统代理通常不会自动接管所有 DNS,TUN 模式更适合把系统查询统一送入客户端,但仍要处理浏览器或应用自行发起的加密查询。
DNS 分流的基本目标是让不同域名选择合适的解析服务器,并让查询本身通过正确出站发送。域名分类、查询服务器和路由出站是三个独立决策。某个域名被分配给特定 DNS 服务器,不代表其业务连接一定使用同一条出站;还需要路由规则做对应约束。反过来,只写业务路由而不处理解析路径,应用可能先取得不合适的地址,随后触发错误的 IP 规则。
服务器顺序与匹配范围
内核 DNS 可以配置多个服务器,并为服务器附加域名匹配列表。专用匹配应放在通用服务器之前。内部域名可指向局域网 DNS,指定外部域名可使用加密查询,其余域名交给默认服务器。若客户端支持 skipFallback 一类控制项,可阻止已匹配的域名继续向后备服务器查询;但启用前应确保专用服务器稳定,否则匹配域名没有可用结果时也不会自动获得后备答案。
{
"dns": {
"queryStrategy": "UseIP",
"servers": [
{
"address": "192.168.1.1",
"domains": [
"full:intranet.example",
"domain:office.example"
],
"skipFallback": true
},
{
"address": "https://dns.example/dns-query",
"domains": [
"domain:service.example"
]
},
"localhost"
]
}
}
示例把内部域名交给局域网解析服务器,把指定服务交给一个示例加密查询地址,其余请求使用本机解析。实际配置时,加密查询域名本身也需要能够解析并建立连接,形成的引导解析不能依赖尚未可用的同一条加密通道。解决方法是让系统或基础 DNS 先解析查询服务器域名,或直接使用客户端支持的引导机制。若日志持续显示查询服务器域名解析失败,应先处理这层依赖。
查询策略与地址族
queryStrategy 控制返回哪类地址。UseIP 允许使用可用地址族,UseIPv4 只请求 IPv4,UseIPv6 只请求 IPv6。选择应以本地网络和出站链路是否完整支持对应地址族为准。系统拿到 IPv6 地址但代理链路无法建立 IPv6 连接时,应用可能先等待失败再回退,表现为首次访问明显变慢。此时可以暂时使用 IPv4 策略验证,但长期方案仍应检查本地网络、节点出站和路由规则对 IPv6 的处理。
不要把所有解析问题都通过固定地址族掩盖。某些服务会根据地址族提供不同接入,局域网内部服务也可能只在特定地址族可用。调整后分别测试内部域名、常用公网域名和纯 IP 连接,确认没有破坏其他路径。若只有一个应用异常,检查它是否启用了独立 DNS 或连接优化功能,因为该查询可能根本没有进入客户端。
DNS 与路由如何配合
DNS 查询本身也是网络请求,需要路由决定直连还是代理。加密 DNS 使用普通 TCP 或 HTTPS 连接时,可以按服务器域名或 IP 指定出站。若查询经代理发送,确保代理出站在解析前已经具备可连接的服务器地址;订阅节点使用域名作为服务器地址时尤其要注意启动阶段的解析依赖。最稳妥的启动链路是让节点服务器域名可由基础 DNS 解析,再由已建立的代理处理后续专用查询。
路由使用 IPIfNonMatch 时,域名规则未命中会触发 DNS 解析,然后再匹配 IP 规则。此时 DNS 服务器返回的地址会直接影响路由结果。若同一域名存在多组地址,缓存结果变化可能让流量命中不同规则。应尽量优先使用稳定的域名规则,IP 规则用于区域集合、私有地址和确实需要按地址判断的目标,而不是为每个域名手工维护地址。
缓存、泄漏路径与验证方法
验证 DNS 时先关闭浏览器的独立解析选项,或明确把它纳入测试范围。重新连接客户端后清理系统与浏览器的相关缓存,再发起一次全新查询。日志中应能看到域名、选中的 DNS 服务器、返回地址以及后续业务连接的路由结果。只使用网页型检测工具无法说明所有系统查询路径,因为它观察到的是当前浏览器,而不是终端、后台服务和其他应用。
如果普通系统代理下 DNS 仍由本地网络处理,这是接管范围的差异,不一定是配置错误。需要统一接管更多应用时再启用 TUN,并为 DNS 设置明确入站与路由。若启用 TUN 后出现解析循环,检查 DNS 请求是否再次进入 TUN、是否缺少查询服务器的直连或代理例外,以及 FakeDNS 是否与真实解析规则重叠。完整的分流解析案例可继续查看V2Ray DNS 分流解析配置详解。
配置顺序:先让一个基础 DNS 稳定工作,再增加域名分组和加密查询,最后与 TUN、FakeDNS 联动。每一步都记录查询服务器、返回地址和业务出站,避免只看“网页能否打开”。
v2rayN TUN 模式的接管范围与设置顺序
TUN 模式通过虚拟网络接口接收更多系统流量,适合不读取系统代理、无法单独设置代理或需要处理 UDP 的应用。它与系统代理不是强弱关系,而是接管层级不同:系统代理依赖应用主动遵循代理设置,链路清晰且排错简单;TUN 在网络层捕获流量,覆盖范围更广,但同时引入路由表、虚拟接口、DNS 接管和系统权限等额外变量。首次配置应先证明系统代理可用,再启用 TUN。
v2rayN 是桌面平台的首选。启用 TUN 前确认客户端安装位置可写、系统允许创建虚拟接口,并关闭其他会修改系统路由或网络接口的同类工具。Windows、macOS 与 Linux 的授权方式不同,界面可能要求管理员权限或系统网络授权。权限被拒绝时,客户端本地代理仍可能正常启动,但 TUN 接口不会建立,因此要检查接口和路由,而不是只看主窗口的连接状态。
推荐启用顺序
第一步保留一个已验证可用的节点,路由使用基础规则,DNS 使用单一可靠配置。第二步退出可能冲突的网络工具,记录当前系统代理状态。第三步启用 TUN,等待虚拟接口和路由创建完成。第四步分别测试浏览器、终端和一个此前不遵循系统代理的应用。第五步再逐项恢复 DNS 分流、FakeDNS 和自定义路由。若启用后所有网络都中断,应立即关闭 TUN,确认系统路由恢复,再检查权限、栈类型和 DNS。
系统代理与 TUN 可以在某些配置中同时开启,但测试阶段不建议让两者同时承担同一应用。浏览器可能通过系统代理进入客户端,其他应用通过 TUN 进入;若路由按入站标签区分,两条路径可能得到不同结果。为了明确问题来源,先关闭系统代理,只测试 TUN;完成后再根据日常需要决定是否保留系统代理入口。
严格路由与绕过规则
TUN 常见设置包括自动路由、严格路由、接口选择和绕过局域网。自动路由负责添加系统路由;严格路由会更强地限制流量绕开虚拟接口,适合需要一致接管的环境,但也更容易与虚拟机、容器、企业网络或本地共享服务冲突。先使用自动路由验证,再根据实际泄漏路径评估严格路由。不要在不了解现有路由表的情况下同时启用多项强制选项。
局域网和私有地址通常应直连,否则打印机、路由器管理页、文件共享和内部服务可能不可达。这里有两个层次:系统路由是否让私有地址绕过 TUN,以及进入内核后路由是否把私有地址交给直连出站。两层都正确,访问才稳定。处于企业网络时,内部地址不一定只使用常见私有网段,还可能依赖内部 DNS 和特定路由,应在基础私有地址规则之外补充明确的内部域名与网段。
MTU、协议栈与性能
MTU 决定虚拟接口单个数据包的最大尺寸。设置过大时,某些链路无法正确传递,表现为小网页可打开、大文件或特定请求卡住;设置过小会增加分片和处理开销。没有明显症状时应使用客户端默认值。只有在确认存在路径 MTU 问题后才逐步下调,并在每次调整后测试网页、文件传输和实时连接。不要根据其他网络环境的数值直接照抄。
不同 TUN 栈在兼容性、UDP 处理和系统集成上存在差异。客户端默认选项通常覆盖通用环境;更换栈只应作为针对性排错步骤。切换后若 DNS 正常但某类连接失败,比较 TCP 与 UDP 日志;若所有应用都无法连接,检查接口是否获得地址、默认路由是否指向 TUN、节点服务器地址是否被错误送回代理形成循环。
平台差异与冲突来源
| 平台 | 重点检查 | 常见冲突 | 验证方式 |
|---|---|---|---|
| Windows | 虚拟接口、管理员权限、系统路由 | 其他虚拟网卡、企业安全策略 | 检查适配器与路由表后测试不同应用 |
| macOS | 网络扩展授权、当前网络服务 | 旧授权残留、其他网络扩展 | 确认系统授权并重新建立连接 |
| Android | 系统网络接管授权、后台限制 | 省电策略、始终开启的其他连接 | 保持客户端前台后测试,再检查后台 |
| Linux | TUN 设备权限、路由与 DNS 管理服务 | 容器网桥、防火墙规则 | 检查接口、策略路由和解析服务 |
Android 上的 v2rayNG 与 v2flyNG 使用系统提供的网络接管机制,排错重点是授权、后台运行和电池限制。桌面 v2rayN 更适合细查路由表与 DNS 服务。跨平台同步配置时,不要假设 TUN 参数可以完整复制;应同步规则意图,再按平台重新选择接口、权限和栈实现。
关闭后恢复系统网络
异常退出可能留下系统代理、DNS 或路由状态。正常处理顺序是重新启动客户端,先关闭 TUN 和系统代理,再退出客户端;随后检查系统网络设置是否恢复自动获取。若只有域名无法访问而 IP 可达,重点恢复 DNS;若所有目标都不可达,检查默认路由和虚拟接口;若仅浏览器异常,检查浏览器代理来源。反复重装客户端通常不能修复系统层残留,先确定是哪一层未恢复更有效。
排错原则:TUN 出现问题时先退回系统代理基线。确认节点、订阅和基础路由可用后,再检查接口、权限、DNS 与严格路由,避免在失效状态上继续叠加规则。
FakeDNS 的工作方式与适用边界
FakeDNS 会为域名返回保留地址池中的临时地址,并在内核内部保存域名与该地址的映射。应用连接这个临时地址时,内核根据映射恢复原始域名,再执行路由和真实连接。它解决的主要问题是:某些应用先自行发起 DNS 查询,随后只把 IP 连接交给 TUN,导致内核失去原始域名,域名规则无法命中。FakeDNS 把域名信息保留到后续连接阶段,使分流判断更稳定。
FakeDNS 不是普通 DNS 服务器的替代品,也不会凭空改善所有解析。内核恢复域名后,真正建立连接时仍需要按配置完成解析或交给相应出站。若路由、真实 DNS 或出站配置错误,FakeDNS 只会让问题更难观察。因此应在 TUN 基础链路和普通 DNS 已经稳定后启用,并明确哪些查询进入 FakeDNS、哪些内部域名必须返回真实地址。
地址池与映射容量
FakeDNS 配置包含地址池和映射容量。地址池必须使用专门保留的范围,不能与局域网、企业网络、容器网络或现有虚拟接口重叠。发生重叠时,系统可能把临时地址送往真实网络,或者把真实内部地址误交给 FakeDNS。容量决定可同时保存多少域名映射;容量不足会淘汰旧映射,应用仍持有旧地址时可能无法恢复域名。日常使用应保留客户端默认值,只有确认存在大量并发域名且日志显示映射淘汰时才调整。
{
"fakedns": [
{
"ipPool": "198.18.0.0/15",
"poolSize": 65535
}
]
}
198.18.0.0/15 是常见的基准测试保留地址范围,许多实现将其用于虚拟映射。使用前仍需检查本地网络和其他工具是否占用该范围。配置片段只表示内核中的 FakeDNS 对象;要让查询真正进入它,还需要对应 DNS 设置、入站嗅探和 TUN 接管。单独添加对象不会自动改变系统查询路径。
嗅探与目标覆盖
入站嗅探用于从连接中识别域名或协议信息。配合 FakeDNS 时,常见目标覆盖包含 HTTP、TLS 与 FakeDNS 映射。是否启用目标覆盖应根据客户端模板决定:覆盖能让路由使用恢复后的域名,但也可能改变某些特殊连接的目标处理。先使用客户端提供的标准 FakeDNS 模式,查看生成配置,再进行定制。不要把所有协议识别选项一次性打开。
{
"inbounds": [
{
"tag": "tun-in",
"protocol": "tun",
"sniffing": {
"enabled": true,
"destOverride": [
"http",
"tls",
"fakedns"
],
"routeOnly": true
}
}
]
}
routeOnly 表示识别结果主要用于路由判断,不直接替换最终连接目标,适合希望降低目标改写影响的环境。具体字段是否由当前内核和客户端配置方式支持,应以客户端生成结果为准。若配置载入时报未知字段,先撤回自定义片段,使用界面中的 FakeDNS 选项,再检查内核家族和配置格式是否匹配。
不适合交给 FakeDNS 的目标
局域网域名、企业内部域名、打印与发现服务通常需要真实地址,应绕过 FakeDNS 并交给内部 DNS。依赖本地地址判断、证书绑定或特殊解析结果的应用,也可能不适合虚拟映射。排除规则应尽量具体:先排除明确内部域名和保留后缀,再观察是否存在额外异常。直接把大范围域名全部排除,会让 FakeDNS 失去保留域名的意义。
部分应用会验证 DNS 返回地址、绕过系统解析或使用自己的加密查询。前两种情况可能导致 FakeDNS 不生效,后一种情况可能让查询直接作为普通 HTTPS 连接进入 TUN,此时内核只能从连接特征尝试恢复域名。若日志中看不到 FakeDNS 查询,不要反复修改地址池,先确认应用的查询是否进入客户端。
常见故障的判断顺序
启用后完全无法解析,先检查 DNS 是否把查询送入 FakeDNS;能返回临时地址但连接失败,检查 TUN 是否接管该地址范围,以及入站能否恢复域名;只有内部服务失败,检查内部域名排除和局域网 DNS;使用一段时间后偶发失败,检查映射容量、应用缓存和休眠恢复。每种症状对应不同层,不能用更换 DNS 服务器解决全部问题。
验证时可以观察查询是否返回保留地址,再在内核日志中确认同一地址被映射回原域名,并查看最终出站。不要使用系统工具直接连接临时地址来判断服务器可达性,因为它本来就不代表真实服务器。关闭 FakeDNS 后,应清理应用和系统的相关 DNS 缓存,避免应用继续连接已经失效的临时地址。
适用条件:FakeDNS 最适合 TUN 已稳定、域名规则较多且应用只提交 IP 连接的场景。普通系统代理已经保留目标域名时,增加 FakeDNS 通常不会带来明显收益。
与真实 DNS 分流并存
成熟配置通常同时存在 FakeDNS 和真实 DNS:普通公网域名可先返回临时地址以保留域名,内部域名直接向局域网 DNS 查询真实地址,节点服务器域名通过基础 DNS 完成启动解析,少数指定服务再使用专用加密查询。每一组域名只能有明确优先级,避免同一目标既被内部 DNS 匹配又进入 FakeDNS。调整后分别测试公网网页、内部服务、节点重连和系统休眠恢复,确认映射在生命周期变化后仍能重建。
多订阅管理、更新与迁移
多订阅管理的难点不是导入更多地址,而是明确来源边界、更新责任和故障隔离。每个订阅都应有独立名称、分组和更新时间策略;自建服务器使用单独分组;临时测试订阅默认关闭自动更新。这样当某次更新导致节点消失、备注变化或参数无法解析时,可以快速确定影响范围,而不是在一张混合列表中逐个比对。
订阅名称应长期稳定,节点名称则由来源更新。建议采用“用途—来源”的短命名方式,不把当前日期、速度或在线状态写入订阅名。对于同一来源的备用订阅地址,应只启用一个主入口,备用入口保留在记录中而不同时更新,否则客户端可能导入大量重复节点。多设备使用时,分组名称保持一致有助于对照,但活动节点和自动更新频率应按设备网络环境分别设置。
自动更新的时间与失败策略
自动更新适合稳定订阅,但不宜过于频繁。订阅内容通常不会按分钟变化,过密更新会增加失败噪声,也可能在网络刚恢复时反复覆盖当前列表。桌面端可在固定间隔更新,并保留手动更新入口;移动端需要考虑后台限制,客户端可能只有在前台或系统允许后台运行时完成更新。看到“更新成功”后仍应确认条目数量和解析状态,而不是只看请求完成。
更新失败分为网络请求失败、内容格式错误和部分条目解析失败。请求失败时保留旧列表最重要,不应立即删除分组重建;格式错误时查看订阅是否返回了预期内容;部分解析失败时确认是否出现客户端不支持的协议或字段,其余成功条目仍可使用。连续失败时先在同一网络下验证基础连接,再切换网络,判断是订阅入口不可达还是客户端解析问题。
合并策略与重复节点
不建议把多个订阅永久合并成一个无法追溯来源的分组。合并后的列表虽然短期方便,但后续无法判断哪个来源应更新或删除。更好的方式是保留来源分组,通过过滤器形成临时候选列表。若客户端提供跨分组筛选,可按协议、用途或备注关键词显示结果;如果不提供,则在每个分组内保留一致前缀,减少切换成本。
判断重复节点时应比较完整连接身份。地址和端口相同并不必然重复,因为用户标识、TLS 服务器名、传输路径和协议可能不同;备注相同也不表示参数相同。只有关键字段完全一致时才适合删除重复项。若两个订阅长期提供同一服务器,选择一个主要来源,另一个保留为独立备用,而不是让自动更新持续生成视觉重复。
订阅覆盖与本地修改
自动订阅中的节点参数通常由来源控制。本地修改备注可能在更新后保留,也可能被覆盖;修改服务器参数更容易在下一次更新时丢失。需要长期自定义的条目,应复制到“自建节点”或“本地修改”分组,并在名称中标明用途。复制后它不再自动获得来源更新,因此服务器参数变化时需要手动维护。不要同时修改订阅原项和副本,否则故障时难以确认正在使用哪一份。
路由、DNS 和 TUN 设置应尽量独立于具体节点。只要出站标签和客户端生成逻辑稳定,切换订阅不应要求重写整套路由。若某类节点不支持特定网络类型,可通过单独配置文件或分组策略处理,而不是在通用路由中加入大量与节点名称绑定的条件。配置依赖越少,迁移与回退越容易。
跨设备迁移的最小集合
迁移时优先带走订阅来源、手工节点、用户路由、DNS 规则和必要的客户端设置,不要依赖复制运行时缓存、日志或临时生成配置。v2rayN、v2rayNG 和 v2flyNG 的界面与内核家族存在差异,完整配置不能保证跨客户端直接导入。先迁移订阅并确认单节点连接,再按“路由、DNS、TUN、FakeDNS”的顺序重建高级设置。
敏感字段不应出现在公开备份、截图或共享文档中。分享排错信息时,可以保留协议类型、传输方式、规则结构和错误类别,同时隐藏服务器地址、用户标识、订阅地址与认证内容。若需要比较两台设备,可记录客户端名称、平台、接管模式、DNS 策略和规则命中结果,这些信息通常足以定位差异。
更新后的验收清单
每次重要更新后依次确认:订阅名称仍对应正确来源;自建分组未被覆盖;当前活动节点仍存在;新条目能被客户端识别;过滤器仍能匹配备注;路由和 DNS 不依赖已删除的出站标签;自动更新失败时旧列表仍可使用。最后重启客户端并进行一次新连接,避免只验证内存中的旧配置。
迁移提示:不同客户端之间优先迁移“配置意图”,不要直接搬运临时生成的完整文件。先恢复基础连接,再逐层恢复高级设置,出现问题时才能准确回退。
如果更新后大量条目无法识别,先确认所用客户端与目标平台是否正确。桌面端选择 v2rayN,Android 可按内核需求选择 v2rayNG 或 v2flyNG。对应安装入口集中在V2Ray 客户端下载页,页面按 Windows、macOS、Android 与 Linux 分类。
自定义出站、链式转发与系统化排错
出站是路由决策的最终目标。常见出站包括代理节点、直接连接、阻断以及转发到本地或上游 SOCKS 服务。自定义出站适合把特定业务交给独立出口、复用本机已有服务或建立清晰的测试路径。配置重点是标签唯一、协议参数完整、依赖关系没有循环。路由只通过标签引用出站,因此改名后必须同步更新所有规则。
图形客户端通常会根据当前节点生成主要代理出站,同时加入直连和阻断出站。手工扩展时不要覆盖这些基础对象,除非已经确认客户端的合并方式。更稳妥的方法是使用客户端提供的自定义配置、预配置或模板入口,新建一个唯一标签,再用一条具体路由进行测试。直接修改运行时文件会在切换节点或重启后失效,也可能让界面状态与实际配置不一致。
添加本地 SOCKS 上游
{
"outbounds": [
{
"tag": "local-socks",
"protocol": "socks",
"settings": {
"servers": [
{
"address": "127.0.0.1",
"port": 1081
}
]
}
}
]
}
示例建立名为 local-socks 的出站,把连接交给本机 1081 端口的 SOCKS 服务。使用前应确认该端口确实监听,并避免它的流量再次被同一 TUN 捕获后送回自身。若上游需要认证,应在客户端支持的配置结构中添加实际凭据,并只保存在本地。测试时先用一个明确域名指向该出站,不要直接把全局流量切过去。
{
"routing": {
"rules": [
{
"type": "field",
"domain": [
"domain:service.example"
],
"outboundTag": "local-socks"
}
]
}
}
规则中的标签必须与出站标签逐字一致。配置加载失败时先检查 JSON 结构、重复逗号和字段位置;加载成功但不走上游时检查规则顺序与域名是否命中;已经命中却连接失败时再检查本地端口、上游认证和循环路由。分层检查比反复更换节点更快。
链式转发的风险控制
链式转发会让一个出站通过另一个出站建立连接。它适合有明确网络拓扑的环境,但会增加解析依赖、连接层数和故障点。开始前先画出路径:应用进入哪个入站,路由选择哪个业务出站,该出站通过哪个前置出站连接,节点服务器域名由谁解析。路径中任何一段重新回到前面的入口,都可能形成循环。
链式结构不应通过模糊的全局规则实现。为前置出站和业务出站使用明确标签,为上游服务器地址加入必要的直连或指定路由,并保留一个不经过链路的基础连接用于回退。出现超时后,先分别验证每一跳可用,再组合测试。若单独可用而组合失败,重点检查 DNS 启动依赖、UDP 支持和 TUN 对上游连接的再次捕获。
直连与阻断出站
直连出站用于局域网、内部服务和不需要代理的目标。阻断出站用于明确拒绝连接。阻断规则应具体,并放在宽泛代理规则之前。直接使用大范围分类可能影响登录、支付、更新或嵌入资源,因此添加后要验证页面主域名与资源域名。对于只想避免某个应用使用代理的场景,优先使用进程规则或入站隔离;若客户端和内核不支持稳定的进程识别,再使用可解释的域名与 IP 条件。
直连并不表示绕过所有客户端处理。流量可能先进入 TUN,再由内核选择直连出站;也可能在系统路由层直接绕过 TUN。两种方式对日志、DNS 和本地服务兼容性有不同影响。需要记录和统一路由时可让流量进入内核后直连;局域网发现、设备访问等对本地网络敏感的流量,通常更适合在系统路由层绕过,并同时保留私有地址直连规则。
按日志建立排错矩阵
高级配置排错应回答四个问题:流量是否进入客户端,域名由谁解析,哪条路由命中,最终出站是否建立连接。日志级别只在排错期间提高,完成后恢复常规级别,避免大量记录影响查找。日志中若没有目标请求,检查系统代理、应用代理或 TUN;有请求但没有域名,检查 DNS 接管和嗅探;路由标签错误,调整规则顺序;出站连接失败,检查对应服务器和上游。
| 现象 | 可能层级 | 第一项检查 | 下一步 |
|---|---|---|---|
| 客户端运行但应用直连 | 入站接管 | 应用是否遵循系统代理 | 单独设置应用代理或测试 TUN |
| 域名失败,IP 可连接 | DNS | 查询是否进入预期服务器 | 检查缓存、地址族和查询路由 |
| 目标走错线路 | 路由 | 首条命中规则 | 调整具体规则与兜底顺序 |
| 命中正确但连接超时 | 出站或上游 | 出站标签对应对象 | 分别测试节点、本地端口和网络 |
| TUN 开启后全部中断 | 接口与系统路由 | 虚拟接口和默认路由 | 关闭严格路由并检查 DNS |
| FakeDNS 返回地址但连接失败 | 映射与入站 | TUN 是否接管地址池 | 检查域名恢复与嗅探设置 |
形成长期可维护的配置
可维护配置应尽量少依赖节点名称、临时地址和界面排序。路由引用稳定的出站标签,DNS 使用明确域名组,订阅保持来源边界,TUN 与 FakeDNS 只在需要时启用。每个自定义对象都写明用途,并保留能正常工作的基础配置。发生故障时先停用最近增加的对象,确认基线恢复,再把问题缩小到一条规则或一个出站。
配置完成后进行四轮验收:重启客户端验证配置可加载;切换节点验证路由不依赖旧节点;更新订阅验证自定义分组和标签未被覆盖;重启系统验证 TUN、DNS 与系统代理能正确建立和恢复。只通过一次网页访问不算完成。涉及内部网络时,再验证局域网服务、内部域名与系统休眠恢复。
收尾检查:订阅负责提供节点,过滤负责缩小候选,DNS 负责解析,路由负责选择出站,TUN 负责扩大接管范围,FakeDNS 负责保留域名,自定义出站负责完成特定路径。按层记录后,复杂配置仍可回退和复现。
如果问题仍无法定位,先回到快速上手主线验证最小连接,再到帮助中心核对安装配置与故障排查条目。涉及系统代理、DNS 或速度差异时,也可结合本站技术笔记中的分层案例继续检查。