V2Ray、Xray路由分流策略全解

驾驭流量的艺术:V2Ray/Xray 路由分流策略全解 (以 V2RayN 为例)

前言

在科学上网的世界里,”能连上”只是温饱线,”连得快、分得清”才是小康水平。

很多新手在使用 V2RayN 等客户端时,往往只知道开启 “自动配置系统代理” 或 “全局模式”。但你是否遇到过这样的尴尬:挂着梯子下载国内资源速度慢如蜗牛?访问公司内网或学校教务系统打不开?想看 Netflix 却提示使用了代理?

这一切的根源,都在于——路由分流(Routing)

本文将带你从零开始,深入理解 V2Ray/Xray 的路由机制,掌握从语法到策略的全部细节,打造一套专属于你的完美网络分流方案。


第一章:技术考古与演进 —— 从 PAC 到 智能路由

要理解现在的路由策略,我们必须先回头看看它是如何进化而来的。

1.1 远古时代:全局与 PAC

在 Shadowsocks 早期,分流主要依靠 PAC (Proxy Auto-Config) 文件。

  • 全局模式:就像一刀切,所有流量(无论是访问百度还是谷歌)全走代理。缺点显而易见:访问国内网站慢,浪费服务器流量,且无法访问本地局域网设备。
  • PAC 模式:通过一个 JS 脚本(PAC文件),里面包含了一个长长的域名列表(通常是 GFWList)。浏览器在访问网址前先查表,表里有的走代理,没有的直连。
    • 局限性:PAC 仅作用于浏览器 HTTP/HTTPS 层,对电脑上的游戏客户端、即时通讯软件(非 HTTP 协议)往往无效。

1.2 近代革命:V2Ray 的路由功能 (Routing)

V2Ray 的出现带来了一场革命。它不再依赖系统层面的 PAC,而是在内核层面内置了一个强大的路由引擎。

  • 全协议接管:V2Ray 作为一个核心(Core),可以接管 TCP、UDP 等所有流量。
  • 多维匹配:不再仅仅依据域名,还可以依据 IP、端口、协议类型、源地址等进行判断。
  • Geosite/Geoip 概念诞生:这是 V2Ray 对业界的巨大贡献。它将成千上万个域名和 IP 按“类别”或“国家”打包成 .dat 文件。你不需要写 baidu.com,只需要写 geosite:cn,即可包含数万个中国网站域名。

1.3 现代巅峰:Xray 的增强与性能优化

Project X (Xray) 从 V2Ray 分叉出来后,进一步强化了路由性能:

  • **MPT (Multi-Pattern Search)**:Xray 优化了匹配算法,即使有几十万条规则,也能在微秒级完成匹配,几乎不消耗 CPU。
  • 更丰富的语法:引入了逻辑非、属性匹配等高级玩法。

第二章:核心逻辑 —— 流量的奇幻漂流

在使用 V2RayN 编写规则前,你必须在脑海中建立起流量处理的流程图。

2.1 这里的 “路由” 不是 路由器

家里的路由器(Router)是将数据包从 WAN 口转发到 LAN 口。V2Ray 的路由(Routing)是指:根据预定义的规则,决定一个数据包应该由哪个“出站代理(Outbound)”发出。

2.2 V2Ray/Xray 的三要素

  1. **Inbound (入站)**:数据从哪里来?(比如来自你浏览器的 SOCKS5 请求)。
  2. **Routing (路由)**:大脑。判断数据去哪里。
  3. **Outbound (出站)**:数据去哪里?
    • proxy (代理):发给 VPS。
    • direct (直连):不走代理,直接由本机网卡发出。
    • block (阻断):直接丢弃(如屏蔽广告)。

2.3 最关键的难点:域名解析策略 (DNS)

这是 90% 的人配置失败的原因。

当你在浏览器输入 www.google.com 时,V2RayN 截获了这个请求。此时路由引擎面临一个抉择:我是根据“域名”分流,还是根据“IP”分流?

  • 策略 A:只看域名 (AsIs)

    • 规则写了 google.com -> 走代理。
    • 引擎一看是 Google,直接扔给代理出站。
    • 优点:速度快,不需要在本地进行 DNS 解析。
  • 策略 B:IP 优先 (IPOnDemand)

    • 规则写了 geoip:cn (中国 IP) -> 直连。
    • 引擎拿到 www.google.com,它不知道这个域名是不是中国 IP。
    • 动作:引擎必须先在本地进行一次 DNS 解析,得到 IP(比如 142.250.x.x)。
    • 然后判断:这个 IP 是 cn 吗?不是。
    • 结果:走默认规则(代理)。
    • 缺点:如果本地 DNS 被污染(比如解析 Google 得到了一个假 IP),可能导致连接失败或分流错误。

黄金法则
在 V2RayN 中,我们通常希望先匹配域名(因为域名准确且快),匹配不到域名时,再解析 IP 进行匹配。这在配置中被称为 IPIfNonMatch 策略。


第三章:语法百科全书 —— 规则怎么写?

这是本文的重点。无论是在 V2RayN 的 GUI 中,还是直接手写 config.json,核心语法是一致的。

3.1 基础匹配模式

在 V2RayN 的规则编辑器中,每一行代表一个规则。一个规则通常包含:
匹配类型:匹配内容

1. 域名匹配 (Domain)

这是最常用的方式。

  • 子域名匹配 (domain:)

    • 语法:domain:baidu.com
    • 含义:匹配 baidu.com 及其所有子域名(如 www.baidu.com, map.baidu.com)。
    • 推荐指数:⭐⭐⭐⭐⭐
  • 完整匹配 (full:)

    • 语法:full:www.google.com
    • 含义:必须完全一模一样,少一个字母都不行。
    • 用途:精准控制某个特定页面。
  • 预定义域名列表 (geosite:) —— 神器

    • 语法:geosite:category
    • 含义:引用 V2Ray/Xray 自带的 geosite.dat 文件中的列表。
    • 常用代码
      • geosite:cn:包含了绝大多数中国大陆网站。
      • geosite:google:Google 旗下所有域名(YouTube, Drive 等)。
      • geosite:category-ads-all:包含了全球常见的广告域名(用于去广告)。
      • geosite:netflix:Netflix 相关的域名。
      • geosite:openai:ChatGPT 相关的域名。
  • 正则表达式 (regexp:)

    • 语法:regexp:\\.goo.*\\.com$
    • 含义:使用标准正则表达式匹配。
    • 警告:性能开销大,且容易写错,非专家不建议使用。

2. IP 匹配 (IP)

当域名规则都没匹配上,或者请求直接就是个 IP 地址时,会用到这个。

  • 具体 IP 或网段

    • 语法:1.1.1.1192.168.0.0/16
    • 用途:公司内网分流,或特定服务器直连。
  • 预定义 IP 列表 (geoip:) —— 神器

    • 语法:geoip:code
    • 含义:引用 geoip.dat 文件。
    • 常用代码
      • geoip:cn:所有中国大陆的 IP 地址。
      • geoip:private:私有局域网 IP (192.168.x.x, 10.x.x.x, 127.0.0.1 等)。必须设置为直连,否则无法访问局域网。
      • geoip:us:美国 IP。

3. 其他高级匹配

  • port:80:匹配目标端口。
  • protocol:http:匹配协议类型(http, tls, bittorrent)。

第四章:实战 —— 在 V2RayN 中配置分流

打开你的 V2RayN (建议升级到 6.0 以上版本),我们将抛弃傻瓜式的“绕过大陆”,手搓一套精细化规则。

4.1 认识 V2RayN 的路由设置界面

点击主界面的 “设置” (Settings) -> **”路由设置” (Routing Setting)**。

你会看到几个预设策略:

  • **基础功能 (Basic)**:这里只能选简单的“一键绕过”。
  • **高级功能 (Advanced)**:这里才是我们发挥的地方。

在 V2RayN 中,路由规则通常被抽象为三个动作:

  1. **Direct (直连)**:对应 outboundTag: direct
  2. **Proxy (代理)**:对应 outboundTag: proxy
  3. **Block (阻断)**:对应 outboundTag: block

4.2 手把手编写:万能通用规则

我们来创建一个新的规则集,目标是:去广告 + 国内直连 + 局域网直连 + 剩下的全走代理

步骤:

  1. 点击 “添加” (Add) 规则。
  2. **别名 (Remark)**:填写 “MySmartRule”。
  3. **默认出站 (Default Outbound)**:选择 “代理 (Proxy)”。
    • 解释:这意味着,如果下面所有的规则都没匹配上,默认就走代理(即白名单模式,适合翻墙)。
  4. **域名解析策略 (Domain Resolution Strategy)**:选择 IPOnDemandIPIfNonMatch
    • 建议:选 IPIfNonMatch

接下来是填写具体的规则列表 (Rule List):
(V2RayN 的规则编辑通常是双击进入编辑框,或者是拖拽排序,这里展示逻辑内容)

规则一:阻断广告 (Block Ads)

  • outboundTag: block
  • domain: geosite:category-ads-all
  • 解释:遇到广告列表里的域名,直接掐断,节省流量且清净。

规则二:直连私有地址 (Direct Private)

  • outboundTag: direct
  • ip: geoip:private
  • 解释:确保 192.168.x.x 这种局域网请求不走代理,否则你会打不开路由器后台或 NAS。

规则三:直连中国域名 (Direct CN Domain)

  • outboundTag: direct
  • domain: geosite:cn
  • 解释:百度、淘宝、B站等,直接连接,速度最快。

规则四:直连中国 IP (Direct CN IP)

  • outboundTag: direct
  • ip: geoip:cn
  • 解释:如果域名列表漏了,或者直接访问 IP,只要是中国 IP,也直连。避免腾讯会议等软件走代理导致卡顿。

规则五:特殊应用代理 (Optional - 如 OpenAI)

虽然默认是走代理,但有时我们需要指定特定的节点(如果你有多个代理节点)。

  • outboundTag: proxy (或者指定某个特定的 tag)
  • domain: geosite:openai, geosite:netflix

4.3 完整的 JSON 视角 (V2RayN 最终生成的配置)

为了让你理解 V2RayN 到底干了什么,下面展示一份标准的 Xray routing 配置 JSON 片段。你可以在 V2RayN 的安装目录下的 config.json (临时生成的) 中看到类似的结构:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
{
"type": "field",
"outboundTag": "block",
"domain": [
"geosite:category-ads-all"
]
},
{
"type": "field",
"outboundTag": "direct",
"ip": [
"geoip:private"
]
},
{
"type": "field",
"outboundTag": "direct",
"domain": [
"geosite:cn"
]
},
{
"type": "field",
"outboundTag": "direct",
"ip": [
"geoip:cn"
]
},
{
"type": "field",
"outboundTag": "proxy",
"network": "tcp,udp"
// 这里的 network 是指兜底,或者由默认出站决定
}
]
}

第五章:进阶技巧 —— 解决疑难杂症

5.1 为什么我设置了 geosite:cn 直连,有些国内网站还是慢?

原因:DNS 泄露或污染。
路由规则的判断依赖于“你访问的域名解析出来的 IP”。
如果你的 V2RayN 内部 DNS 设置不当,在判断 IP 规则时,可能会将国内域名解析成错误的 IP,导致 geoip:cn 匹配失败。

解决方法:
在 V2RayN 的 DNS 设置中,配置分流 DNS。

  • 国外域名 -> 使用 8.8.8.8 (通过代理查询 - fakednsremote)
  • 国内域名 -> 使用 223.5.5.5 (直接查询)

5.2 如何指定 Netflix 走特定的“美国节点”,其他走“香港节点”?

这就涉及到了 **多出站 (Multiple Outbounds)**。

  1. 在 V2RayN 中配置多个服务器节点。
  2. 在配置文件(需要手动修改 Core 配置或使用 V2RayN 的高级自定义配置)中,给不同的节点设置不同的 tag。例如:Tag “US-Proxy” 和 Tag “HK-Proxy”。
  3. 写路由规则:
    • domain: geosite:netflix -> outboundTag: "US-Proxy"
    • domain: geosite:google -> outboundTag: "HK-Proxy"

5.3 调试:怎么知道我的规则生效了没?

V2RayN 底部有一个状态栏,或者你可以开启控制台日志。

  1. 设置日志级别为 infodebug
  2. 访问一个网站。
  3. 查看日志输出,你会看到类似这样的条目:
    [Info] [12345] proxy/socks: TCP connection to www.baidu.com:443 matches rule [geosite:cn] -> direct
    这就说明,百度匹配到了 geosite:cn 规则,走了 direct(直连)。

第六章:常用规则语法速查表 (Copy-Paste 专用)

为了方便大家直接在 V2RayN 的自定义规则框里粘贴,以下提供纯文本格式的常用组合。

场景 A:极简白名单(适合绝大多数人)

逻辑:国内直连,广告屏蔽,其他全代理。

1
2
3
4
5
6
7
8
9
10
11
12
13
# 阻断广告
block, geosite:category-ads-all

# 直连局域网
direct, geoip:private

# 直连国内域名
direct, geosite:cn

# 直连国内 IP (防止域名没匹配上)
direct, geoip:cn

# 剩下的在 V2RayN 界面选 "默认代理"

场景 B:针对性代理(适合只用代理上谷歌的人)

逻辑:默认直连,只有特定网站走代理。

1
2
3
4
5
6
7
8
9
10
# 代理 谷歌、油管、推特、电报
proxy, geosite:google
proxy, geosite:youtube
proxy, geosite:twitter
proxy, geosite:telegram

# 代理 被墙列表 (gfwlist)
proxy, geosite:gfw

# 剩下的在 V2RayN 界面选 "默认直连"

场景 C:BT 下载防吸血

如果你开着 V2RayN 还要下载 BT,务必配置此条,否则你的梯子流量会瞬间跑光!

1
2
# 阻断 BitTorrent 协议
block, protocol:bittorrent

第七章:技术总结与未来展望

7.1 总结

V2Ray/Xray 的路由功能是其最强大的武器。

  • Geosite/Geoip 是基石,利用社区维护的庞大数据库,省去了我们手动维护 IP 表的痛苦。
  • DomainStrategy 是关键,理解 “先域名后 IP” 的逻辑能避免很多连接问题。
  • V2RayN 是工具,它将复杂的 JSON 配置文件可视化,但底层的逻辑依然遵循 Xray 的内核文档。

7.2 扩展阅读:Routing vs Shunting

现在的技术流已经开始探索基于 ASN (自治系统号) 的分流,或者基于进程 (Process Name) 的分流(例如:让 chrome.exe 走代理,让 wechat.exe 直连)。V2RayN 也支持基于进程的规则(app:),这为精细化控制提供了无限可能。

希望这篇文章能帮你彻底搞懂 V2RayN 的路由策略。不再做一个只会点“开启”的工具人,而是成为掌控网络流量的极客。


注:本文基于 2024-2025 年主流 V2RayN 版本与 Xray-core 编写。技术迭代较快,具体 UI 布局可能会有微调,但核心 Routing 语法逻辑长期保持稳定。