路由分流 预计阅读 14 分钟

V2Ray 路由规则配置实战:国内直连与国外代理的分流写法

以 v2rayN 路由设置为例,讲解 domain、ip、geosite 规则的匹配顺序与写法,给出国内直连、国外代理、广告拦截三套常用规则组合,并说明规则冲突时的排查思路。

路由分流决定一条连接最终进入哪个出站。节点负责建立代理连接,路由规则则负责判断哪些请求交给代理、哪些请求直接访问、哪些请求立即阻断。两者是独立层次:更换 VMess 或 VLESS 节点不会自动修正分流规则,更新订阅通常也不会覆盖本地自定义路由。

本文速览

本文适合已经能在 v2rayN 中连接节点、但需要配置国内直连与国外代理的用户。内容覆盖从上到下的匹配机制、v2rayN 菜单操作、domain 与 ip 写法、GeoSite 与 GeoIP 数据引用、广告域名阻断,以及通过日志定位误匹配的方法。

V2Ray 路由规则先理解匹配模型

V2Ray 与 Xray 的路由规则按配置数组中的顺序检查。连接命中第一条完整匹配的规则后就确定出站,后面的规则不再参与判断。因此,范围小、意图明确的规则应放在前面,范围大的兜底规则放在最后。广告阻断通常早于国内直连,国内直连又早于最终代理兜底。

规则中的 domainipportnetworkprotocol 是匹配条件,outboundTag 是匹配后的去向。v2rayN 生成的配置常见出站标签为 proxydirectblock,但实际标签应以当前客户端导出的配置为准,不能只凭名称猜测。

10808
本地 SOCKS 默认端口示例
10809
本地 HTTP 默认端口示例
3 类
代理、直连、阻断出站
1 次
首条命中后停止匹配

端口数值会随客户端设置变化,上述 1080810809 只用于说明本地入口和远端目标端口不是同一概念。路由里的 port: 443 匹配的是访问目标的 443 端口,不是 v2rayN 本地监听端口。把两者混淆,会造成浏览器流量完全绕过预期规则。

  • 域名请求:优先使用域名规则判断,例如 domain:example.comfull:example.comgeosite:cn
  • IP 请求:直接访问 IP 时可由 geoip:cngeoip:private 或 CIDR 网段匹配。
  • 域名转 IP:是否为了匹配 IP 规则而解析域名,取决于 domainStrategy
  • 最终去向:没有规则命中时,连接进入路由配置之外定义的默认出站,结果受客户端生成方式影响。

在 v2rayN 中建立可回退的路由配置

以下操作以 v2rayN 7.15.x 的中文界面为参考。小版本可能调整菜单排列,但核心检查路径仍是参数设置、路由设置和当前路由模式。修改前先记录原模式,并确认至少有一个节点已经通过基础连通测试;否则节点故障与路由错误会在日志中呈现相似的超时结果。

  1. 确认内核

    打开「设置」→「参数设置」→「Core 类型」,确认当前协议对应的内核。VLESS 节点通常由 Xray 内核处理,旧有 VMess 配置应按订阅实际字段加载。

  2. 记录端口

    在「设置」→「参数设置」→「基础设置」查看本地 SOCKS 与 HTTP 监听端口,并记录局域网连接开关状态,避免测试工具连到错误端口。

  3. 复制规则

    进入「设置」→「路由设置」,复制当前可用规则集后再编辑。不要直接覆盖唯一方案,保留原规则可用于一分钟内回退。

  4. 调整顺序

    依次放置广告阻断、私有地址直连、国内域名直连、国内 IP 直连与最终代理规则,确认每一项的出站标签存在。

  5. 应用重启

    保存后选择新路由方案,重启内核并重新开启系统代理。仅保存编辑内容而不切换当前方案,不会改变正在运行的配置。

系统代理只影响遵循系统代理设置的程序。某个程序自行发起直连、固定使用其他代理端口或缓存了旧连接时,修改 v2rayN 路由不会立即改变其流量。测试时应关闭并重新打开目标程序,同时确认系统代理已指向当前 v2rayN 监听端口。

国内直连、国外代理与广告阻断的组合

一套容易维护的规则应先处理确定性最高的流量。广告分类命中后进入阻断出站;局域网、回环地址与国内资源进入直连;剩余 TCP、UDP 流量进入代理。这样不需要列出所有国外域名,新增网站也会自然落入最后的代理兜底。

国内直连

域名集合
geosite:cn
IP 集合
geoip:cn
私有网段
geoip:private
出站标签
direct

私有地址规则应置于代理兜底之前,避免路由器管理页和局域网设备进入远端节点。

阻断与代理

广告集合
geosite:category-ads-all
阻断标签
block
兜底网络
tcp,udp
代理标签
proxy

兜底项必须位于最后;放到顶部会吞掉后续国内直连规则。

对应的核心配置可以写成下列结构。此片段只展示 routing 对象,放入完整配置时还需要已有的入站、出站、DNS 与节点参数。若 v2rayN 的路由编辑器使用图形字段,应按相同顺序逐条录入,而不是把整个对象粘贴到单个域名输入框。

{
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      {
        "type": "field",
        "domain": ["geosite:category-ads-all"],
        "outboundTag": "block"
      },
      {
        "type": "field",
        "ip": ["geoip:private"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "domain": ["geosite:cn"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "ip": ["geoip:cn"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "network": "tcp,udp",
        "outboundTag": "proxy"
      }
    ]
  }
}

domainStrategy: IPIfNonMatch 表示域名没有被域名规则命中时,可以解析其 IP,再尝试 IP 规则。它不是“先查 IP 再查域名”,也不会把所有域名无条件提前解析。这个模式适合同时使用 geosite:cngeoip:cn 的常规分流。

  1. 访问路由器管理地址或局域网服务,确认 geoip:private 进入直连。
  2. 访问常用国内站点,查看日志中的目标域名与最终出站是否为 direct
  3. 访问需要代理的目标,确认其没有被宽泛的自定义域名规则提前直连。
  4. 打开一个已知包含分类广告请求的测试页面,观察被阻断的域名,不用仅凭页面留白判断。

domain、ip、GeoSite 与 GeoIP 怎么排顺序

domain 规则适合表达网站归属和明确域名。full:api.example.com 只匹配完整主机名,domain:example.com 可匹配主域及其子域,regexp: 则用于确有必要的正则条件。正则开销和误匹配风险更高,能够用完整域名或后缀表达时,不应先选正则。

geosite:cn 是按域名分类整理的数据集合,geoip:cn 是按 IP 网段整理的数据集合。两者不是同一份数据的两种拼写。站点使用境外托管地址但服务归类为国内时,GeoSite 可能先将其直连;域名不在集合中但解析到国内 IP 时,IPIfNonMatch 可以继续让 GeoIP 规则接管。

推荐方案:域名优先,IP 补充,代理兜底

域名判断层
  • 广告分类先进入 block
  • 精确例外放在分类集合之前
  • geosite:cn 进入 direct
  • 未命中时保留原域名供日志查看
IP 与兜底层
  • geoip:private 保护局域网访问
  • geoip:cn 补充国内 IP 判断
  • 最后的 tcp,udp 进入 proxy
  • DNS 解析结果应与当前网络一致

规则顺序的核心不是“域名永远高于 IP”,而是先放置更明确的例外,再放分类集合,最后放覆盖全部连接的兜底条件。

自定义例外必须放在集合规则之前。例如某个国内分类域名在当前网络下直连失败,可以增加一条完整域名代理规则,并将其放在 geosite:cn 前面。反过来,如果某个境外服务只允许本地网络直连,也应把精确直连规则放到代理兜底之前。

{
  "type": "field",
  "domain": [
    "full:api.example.com",
    "domain:static.example.net"
  ],
  "outboundTag": "proxy"
}

三种分流写法的适用范围

分流方案没有脱离环境的固定最优项。日常桌面使用通常适合分类数据加兜底;需要严格控制单个业务域名时适合精确规则;短期诊断则可以暂时使用全局代理,确认问题是否来自分流层。诊断结束后应恢复可解释的规则集,而不是长期依赖全局模式掩盖误匹配。

分类数据加代理兜底

推荐

使用 geosite:cngeoip:cn 和私有地址直连,最后由 TCP、UDP 规则统一进入代理。规则数量少,更新地理数据后即可覆盖新增域名和网段。

适合:日常浏览、订阅节点切换、长期维护

精确域名白名单

full:domain: 维护直连与代理目标,行为可预测,但域名变更时需要手动补充。业务包含多个接口域名时,应结合日志完整收集。

适合:固定办公服务、少量指定域名、严格例外控制

临时全局代理

让大部分受管连接进入代理,用于判断节点与目标服务是否连通。它不能验证国内直连规则,也可能让局域网或本地服务出现异常。

适合:短时排障、验证节点出口、对比分流结果

v2rayNG 使用 Xray 内核时,domain、GeoSite、GeoIP 与规则顺序的基本逻辑一致,但安卓端还会受到分应用代理、绕过局域网和系统网络切换的影响。v2flyNG 使用 v2fly 内核时,应以该内核实际支持的配置字段为准。不要直接把桌面端生成的完整配置当作移动端界面规则逐项照搬。

  • 同一订阅只负责提供节点,不代表不同客户端会生成完全相同的路由配置。
  • VMess 与 VLESS 描述的是节点连接方式,不决定某个目标域名应该直连还是代理。
  • 切换节点后路由一般仍然生效,但出站标签被自定义修改时需要重新核对引用。
  • 启用分应用代理后,未被选中的应用可能不进入内核,自然不会留下对应路由日志。

规则冲突与分流失准的排查顺序

排查应从“请求有没有进入内核”开始,再判断“命中了哪条规则”,最后检查“对应出站能否连接”。直接反复更换节点只能验证代理出站的一部分,无法发现系统代理端口错误、规则顺序错误、Geo 数据过期或 DNS 解析不一致。

建议在 v2rayN 主界面打开日志窗口,将日志等级临时调到可观察路由结果的级别,然后只访问一个目标域名。一次同时打开多个网页会产生大量后台请求,广告、图片和接口域名混在一起,难以确认哪一条连接对应正在测试的页面。

现象 优先检查 判断依据 处理动作
国内站点走代理 代理兜底是否位于顶部 日志先显示 proxy,后续 direct 规则没有机会执行 将 tcp,udp 兜底移到规则列表末尾
指定境外域名直连 是否被宽泛 domain 规则包含 目标子域命中上级域名后缀或 GeoSite 分类 添加 full 精确代理规则并前置
域名与 IP 测试结果不同 domainStrategy 与 DNS 域名未进入 IP 匹配,或解析结果来自不同网络 核对 IPIfNonMatch 和当前 DNS 配置
局域网地址打不开 geoip:private 的位置 私有地址被最后代理规则提前截获 将私有网段直连放在代理兜底之前
修改后没有变化 当前路由方案与内核状态 编辑的是副本,但运行中仍选择旧方案 切换方案、重启内核并重建目标连接
部分新域名分流异常 GeoSite 与 GeoIP 数据日期 分类文件较旧,目标域名或网段尚未收录 更新数据文件后重启内核复测

如果日志中完全看不到目标连接,先检查程序是否遵循系统代理,以及它是否复用了修改前建立的长连接。浏览器可关闭全部窗口后重开,命令行工具则应明确指定 v2rayN 的 HTTP 或 SOCKS 端口。若连接进入内核但直接超时,再检查命中的出站标签和节点状态。

  1. 固定测试对象:选择一个完整域名,不要用首页里不断变化的第三方资源作为唯一依据。
  2. 清理 DNS 缓存:规则依赖 IP 判断时,旧解析记录可能让前后测试落到不同网段。
  3. 核对首条命中:从规则顶部向下找第一条能够覆盖目标的条件,不要只检查自己期望命中的那一条。
  4. 单独验证出站:暂时让目标完整域名进入指定出站,确认代理或直连本身是否可用。
  5. 逐条恢复规则:从最小规则集开始添加分类项,每次只改变一个条件。

可长期维护的分流基线

稳定的规则集不需要堆叠大量重复域名。保留广告阻断、私有地址直连、国内域名直连、国内 IP 直连和最终代理五层,再为确有问题的站点增加少量精确例外,通常比导入多个来源不明、条件相互覆盖的规则列表更容易维护。

GeoSite 与 GeoIP 数据应定期更新,但更新后也要观察关键业务域名是否改变分类。分类数据提供批量判断,不等于针对当前网络环境的绝对结论。遇到稳定复现的误分类时,用 full: 规则建立本地例外,并在注释或规则名称中记录添加原因和日期。

  • 规则名称写明用途,例如“广告阻断”“局域网直连”“国内域名直连”“最终代理”。
  • 精确例外置于集合规则之前,宽泛的网络兜底只保留一条并放在最后。
  • 每次修改后分别测试局域网、国内域名、境外域名和直接 IP 四类目标。
  • 更新 v2rayN、v2rayNG 或 v2flyNG 后,核对当前内核、路由方案和本地端口是否保持原值。
  • 订阅更新后若节点协议从 VMess 改为 VLESS,先验证节点连通,再继续判断路由结果。

最终判断标准不是页面是否“看起来能打开”,而是日志中的目标、命中规则和出站标签能相互对应。只要规则顺序明确、例外范围足够小、兜底位置固定,国内直连与国外代理的行为就能被重复验证,也能在客户端升级或订阅变化后快速定位偏差。

下载 v2rayN 进入客户端安装包页面