跳转至

分流隧道配置 (Split Tunneling Configuration - 中文)

R-VPN 支持高级分流隧道功能,可将流量通过 VPN 隧道或直连(绕过)进行路由。

概述

分流隧道允许您: - 绕过 VPN 访问特定域名/IP(直接连接) - 强制 VPN 访问特定域名/IP(始终通过隧道) - 屏蔽广告/追踪器 使用内置屏蔽列表 - 自动路由 中国流量直连(内置中国 IP 段)

配置

编辑您的 client.toml

[split_tunnel]
enabled = true
builtin_bypass_countries = ["CN"]  # 自动绕过中国 IP
auto_reload_interval = 300         # 每 5 分钟重新加载规则
block_ads = true                   # 启用广告屏蔽

# 可选:自定义域名列表
# bypass_domains_file = "/etc/rvpn/bypass-domains.txt"
# tunnel_domains_file = "/etc/rvpn/tunnel-domains.txt"

# 可选:自定义网络列表(CIDR 格式)
# bypass_networks_file = "/etc/rvpn/bypass-networks.txt"
# tunnel_networks_file = "/etc/rvpn/tunnel-networks.txt"

# 可选:自定义广告屏蔽列表
# ad_block_file = "/etc/rvpn/custom-ads.txt"

配置选项

选项 类型 默认值 描述
enabled 布尔值 false 启用分流隧道
builtin_bypass_countries 数组 ["CN"] 内置 IP 绕过的国家代码(如 CN、HK、SG)
auto_reload_interval 整数 300 自动重新加载间隔(秒,0 表示禁用)
block_ads 布尔值 false 启用内置广告屏蔽
bypass_domains_file 路径 - 绕过 VPN 的域名文件
tunnel_domains_file 路径 - 强制通过 VPN 的域名文件
bypass_networks_file 路径 - 绕过 VPN 的 CIDR 网络文件
tunnel_networks_file 路径 - 强制通过 VPN 的 CIDR 网络文件
ad_block_file 路径 - 自定义广告屏蔽域名列表

路由优先级

规则按以下顺序应用(从高到低优先级):

  1. 广告/追踪域名 - 完全屏蔽(如果启用 block_ads
  2. 强制隧道域名 - 始终通过 VPN(内置列表:Google、Meta 等)
  3. 自定义隧道域名 - 用户指定的 VPN 域名
  4. 自定义绕过域名 - 用户指定的直连域名
  5. 内置中国域名 - 如果 CN 在绕过国家中则直连
  6. 基于 IP 的规则 - CIDR 段匹配(自定义网络,然后内置国家 IP)

默认:如果没有匹配,流量通过 VPN 隧道。

内置列表

强制隧道域名(始终 VPN)

这些域名始终通过 VPN 路由,即使解析到中国 IP:

  • Google 服务google.comgoogleapis.comgstatic.comyoutube.comgooglevideo.comytimg.comggpht.comappspot.comcloud.google.comfirebaseio.com
  • Meta 服务facebook.comfbcdn.netinstagram.comcdninstagram.comwhatsapp.commessenger.comfb.com
  • Twitter/Xtwitter.comx.comtwimg.comt.co
  • 即时通讯telegram.orgt.mesignal.orgdiscord.comdiscordapp.comslack.com
  • AI/搜索openai.comchatgpt.comanthropic.comclaude.aiperplexity.aibing.comduckduckgo.com
  • 社交/媒体github.comreddit.comlinkedin.commedium.comquora.compinterest.comtumblr.comflickr.com
  • 流媒体netflix.comhulu.comhbo.commax.comdisneyplus.comspotify.comsoundcloud.comvimeo.com
  • 新闻bbc.comnytimes.comwashingtonpost.comwsj.combloomberg.comreuters.comcnn.com

中国绕过域名

200+ 中国特定域名,当 builtin_bypass_countries = ["CN"] 时绕过 VPN:

  • 电商taobao.comtmall.comjd.com360buy.comsuning.comdangdang.comamazon.cnvip.comxiaomiyoupin.com
  • 搜索/社交baidu.comweibo.comsina.com.cnzhihu.comdouban.comjianshu.comcsdn.netoschina.net
  • 视频bilibili.comyouku.comiqiyi.comdouyin.comkuaishou.comtoutiao.com
  • 云/CDNalicdn.comaliyun.comaliyuncs.comqiniu.comupyun.comqcloud.comhuaweicloud.com
  • 通讯qq.comwechat.comweixin.comdingtalk.comfeishu.cn
  • 金融alipay.comcmbchina.comicbc.com.cnccb.compingan.com
  • 设备mi.comxiaomi.comhuawei.comoppo.comvivo.comoneplus.commeizu.com
  • 物流sf-express.comzto.comyto.net.cnjd-express.com
  • 苹果中国apple.com.cnicloud.com.cncdn-apple.com(用于中国 iMessage/iCloud)

广告屏蔽

1000+ 广告/追踪域名,当 block_ads = true 时屏蔽:

  • Google 广告doubleclick.netgooglesyndication.comgoogleadservices.comgoogletagmanager.comgoogle-analytics.com
  • Facebookfacebook.com/trfacebook.netconnect.facebook.net
  • Twitteranalytics.twitter.comads-twitter.com
  • Amazonamazon-adsystem.comamazon.advertising.com
  • 广告网络outbrain.comtaboola.comscorecardresearch.comquantserve.comcomscore.commoatads.compubmatic.comopenx.netrubiconproject.com

自定义域名列表

创建文本文件,每行一个域名:

# /etc/rvpn/bypass-domains.txt - 直接连接
custom-cdn.com
internal-company.com
*.local

# /etc/rvpn/tunnel-domains.txt - 通过 VPN
blocked-service.com
geo-restricted.com

然后在配置中引用:

[split_tunnel]
bypass_domains_file = "/etc/rvpn/bypass-domains.txt"
tunnel_domains_file = "/etc/rvpn/tunnel-domains.txt"

自定义网络列表

创建 CIDR 格式的文本文件(每行一个):

# /etc/rvpn/bypass-networks.txt - 直接连接
192.168.0.0/16
10.0.0.0/8
172.16.0.0/12

# /etc/rvpn/tunnel-networks.txt - 通过 VPN
8.8.8.0/24
1.1.1.0/24

工作原理

域名匹配

使用后缀匹配方式匹配域名: - baidu.com 匹配 www.baidu.comapi.baidu.commail.baidu.com 等 - google.com 匹配 mail.google.comdrive.google.commaps.google.com 等 - 匹配不区分大小写

IP 解析回退

如果没有域名匹配: 1. 将域名解析为 IP 地址 2. 检查自定义隧道网络列表(CIDR) 3. 检查自定义绕过网络列表(CIDR) 4. 检查内置国家 IP 段(如果启用) 5. 如果没有匹配,默认通过 VPN 隧道

性能

  • 域名查找使用 HashSet,O(1) 性能
  • IP 查找使用 IpNetworkTable,高效的 CIDR 匹配
  • 内置列表编译到二进制中(运行时无文件 IO)
  • 自动重新加载支持热更新规则,无需重启

验证

检查日志以验证路由:

# 客户端日志
sudo journalctl -u rvpn-client -f

# 查找:
# - "Host <domain> matches tunnel domain list" - 通过 VPN
# - "Host <domain> matches bypass domain list" - 直接连接
# - "Host <domain> matches force tunnel domain list" - 强制通过 VPN
# - "Host <domain> matches built-in China domain list" - 中国绕过
# - "Host <domain> matches ad/tracker domain list - blocking" - 广告已屏蔽

使用场景

中国用户

[split_tunnel]
enabled = true
builtin_bypass_countries = ["CN"]
block_ads = true

中国流量直连,国际流量通过 VPN,屏蔽广告。

隐私优先

[split_tunnel]
enabled = true
builtin_bypass_countries = []  # 不绕过任何流量
block_ads = true

所有流量通过 VPN,除了广告/追踪器被屏蔽。

企业环境

[split_tunnel]
enabled = true
builtin_bypass_countries = ["CN"]
bypass_domains_file = "/etc/rvpn/corporate-bypass.txt"
tunnel_domains_file = "/etc/rvpn/required-vpn.txt"
block_ads = true

自定义企业域名 + 中国绕过 + 广告屏蔽。

最小配置

[split_tunnel]
enabled = true

使用默认值:启用中国绕过,禁用广告屏蔽,每 5 分钟自动重新加载。

故障排除

域名未绕过

检查它是否在强制隧道列表中(这些会覆盖绕过):

grep "domain.com" /path/to/builtin_domains.rs

广告未屏蔽

验证广告屏蔽是否启用:

sudo journalctl -u rvpn-client | grep "block_ads"

性能问题

如果不需要,禁用自动重新加载:

[split_tunnel]
auto_reload_interval = 0  # 禁用自动重新加载

检查已加载的规则

查看运行时统计:

# 检查启动时的客户端日志摘要
grep "Split tunnel rules loaded" /var/log/rvpn-client.log