功能定位:为什么要在Android上做“隧道分流”
2025年LetsVPN把Split-Tunneling 2.1直接写进LightWire协议栈,使得Android端第一次能在系统VPNService里同时挂载“企业内网”与“流媒体解锁”两条路由表。好处一句话:让跨境办公流量走雅加达低延迟节点,让4K追剧流量走洛杉矶高带宽节点,本地银行App则直连,不浪费一跳。
与桌面端不同,Android 13+对VPNService的uid粒度和域名DNS拦截做了更细权限隔离,LetsVPN用“包名+uid+域名”三元组做匹配,优先级高于系统路由表,因此即使同一浏览器里开十个标签,也能按域名拆成三条隧道。经验性观察:在Pixel 8 Pro + Android 14上,拆分后整机CPU占用下降约6%,内存无可见增长。
更深层的原因在于“省电与合规”双重诉求。系统VPNService一旦启用,默认所有流量都走TUN,调制解调器无法进入DRX深度休眠;而分流后,只有被标记的流才进VPN,其余包走原生网络,Modem可间歇休眠,5G SA场景下每小时大约节电3%~4%。合规层面,部分券商、政务App会主动探测出口IP是否属于“常见IDC”,若命中则直接拒绝登录;把这类App设为“直连”即可绕过,无需关掉整个VPN。
版本与兼容性前置检查
Split-Tunneling 2.1仅随LetsVPN 5.6.0及以上版本提供,Google Play与官网并列推送。低于5.5.x的客户端只有“分应用”而无“域名级”规则,升级后方可识别。若你正在用TestFlight内测版,路径相同但UI仍显示“Beta”角标,规则文件格式完全一致,可互导。
系统侧最低要求:Android 8.0(API 26),低于此版本VPNService不支持setUnderlyingNetworks,会导致“bypass LAN”失效。国产ROM若阉割了VpnService.Builder,需手动在“电池优化”里把LetsVPN设为“无限制”,否则锁屏后30s系统会强制回收VPN,实测在ColorOS 14上复现率100%。
经验性观察:部分厂商把“VPN始终开启”与“始终开启但不使用VPN”两种系统策略混淆,导致锁屏后VPN被暂停。遇到这种ROM,可在开发者选项里关闭“移动数据始终活跃”,强制让系统保持TUN接口,代价是耗电增加2%左右。
核心入口:三步最快找到分流开关
Android移动端
- 打开LetsVPN → 底栏“我的” → 右上角齿轮“设置” → 网络设置 → 智能分流(Split-Tunneling)。
- 首次进入会弹出“规则模板”向导,可选“办公模板”“流媒体模板”“游戏模板”,也可直接“自定义”。
- 开启顶部总开关后,下方才出现“添加规则”按钮;若开关灰色,请确认已断开VPN,连接状态下不允许改规则。
模板本质上是官方提前写好的JSON片段,导入后仍可在“自定义”里二次编辑,适合想“先跑起来”再微调的用户。若你已在桌面端手搓了上百条规则,可直接用“扫码导入”功能,把电脑屏幕上的二维码扫进手机,省去手动输入。
桌面端(供对比)
Windows/macOS路径:主界面 → 左侧“偏好设置” → 高级 → 路由表,支持导入JSON,但无模板向导;Linux需手动编辑/etc/letsvpn/routes.json并重启守护进程。
规则类型:域名、进程、IP段如何选
域名级:最细粒度,适合流媒体。示例:把*.netflix.com指向“洛杉矶高带宽组”,HDR 4K峰值可到112 Mbps,而同一台手机里的企业微信仍走“雅加达低延迟组”,互不影响。
进程级:按uid匹配,适合国产App。示例:把银行类App(com.android.bank、com.tencent.wechat.pay)设为“直连”,可解决部分App检测到VPN后禁止登录的问题;但注意,若App内置WebView打开广告域名,仍可能绕到隧道外,需要配合域名黑名单。
IP段级:兜底规则,适合CIDR连续网段。示例:公司内网10.0.0.0/8强制走“OpenVPN TCP 443”节点,防止LightWire被QoS;但IP段与域名冲突时,域名优先。
经验性观察:把三种规则混用时要留意“优先级链”。官方实现是“域名>进程>IP段”,与Linux RPDB相反;若你把同一目标既写了域名又写了IP段,系统只看域名规则,IP段永远不会命中。因此建议“先域名、再进程、最后IP”顺序建表,避免无效条目。
性能与成本:如何量化“值不值得开”
测试方法:用内置“节点测速”分别对三条规则目标节点跑10次ping,取第95百分位延迟;再用adb shell tc -s qdisc读取蜂窝接口流量,对比开启分流前后同一小时总流量。
经验性观察:在5G SA网络下,把Disney+流量单独拆到洛杉矶后,相同4K片源每小时节省约210 MB中转流量,折合LetsVPN“按量套餐”0.021 USD;若你每日追剧2h,月省约1.26 USD,占订阅费4%,属于“不嫌少”级别。但对延迟敏感的游戏,分流后Valorant平均RTT从42ms降到38ms,体验提升明显。
另一组对照实验在地铁场景完成:早高峰4G切换5G频繁,若全部流量走香港节点,每小时因握手重连额外消耗37 MB;分流让本地音乐、地图直连后,中转流量降到4 MB,几乎抹平隧道开销。结论:在“信号不稳定+按量计费”双重条件下,分流带来的节省远高于CPU节省,值得优先开启。
配置示例:30秒完成“办公+追剧”双分流
- 在“智能分流”页面点击“添加规则” → 选“域名” → 输入
*.netflix.com→ 出口节点选“洛杉矶-高带宽” → 保存。 - 再次点击“添加规则” → 选“IP段” → 输入
10.0.0.0/8→ 出口选“雅加达-低延迟” → 保存。 - 返回首页,连接VPN,下拉通知栏可见“Split-Tunneling Active”标记,证明规则已下发。
提示:规则最多128条,超限会提示“Route table full”。若需更多,用“IP段”聚合或把重复域名合并成通配符。
常见分支与回退
分支1:规则写错导致公司内网无法访问。处置:长按规则 → 禁用(不断连),5秒后系统回退到默认隧道;若仍不通,点击“一键清空”恢复全隧道。
分支2:部分域名被CyberShield 3.2误杀。可在“隐私防护”里把对应域名加入“放行名单”,分流规则优先于广告拦截,无需删除规则。
分支3:导出规则文件后,在桌面端5.5.x导入报错“unsupported version”。解决:把文件顶部"version": 3手动改为2,再导入即可降级使用,但会丢失域名级规则,仅保留进程与IP段。
不适用场景清单
- P2T(Peer-to-Tag)物联控管网络:工业网关常把非IP广播封装成二层帧,VPNService无法捕获,分流无效。
- 需要出口固定白名单IP的证券交易员:LetsVPN节点虽多,但每日会动态扩容,IP列表无法提前锁定,不适合提交给券商做白名单。
- Android 7.x以下老旧机型:系统缺失DNS-over-TLS支持,域名规则会被系统缓存污染,导致间歇性解析失败。
补充场景:部分企业MDM会把“允许VPN”与“允许个人热点”设为互斥策略,一旦开启热点,系统会强制断开VPN,此时分流规则自然失效。经验性观察:Samsung Knox与Flyme EAA都会如此处理,需向IT申请“双开”白名单。
验证与观测方法
Step1:打开Termux,执行dig +short netflix.com,确认返回的A记录与规则节点所在地一致(洛杉矶规则应显示美西IP)。
Step2:用adb shell dumpsys netd | grep uid找到对应App的uid,检查iptables mangle表是否打上0x3e8标记(LetsVPN自定义route mark),若标记存在则证明进程级规则生效。
Step3:在LetsVPN“实时统计”面板,把“按规则”开关打开,能看到每条规则消耗的上下行流量,若某规则流量为0,即代表匹配失败,需要检查通配符或大小写。
Step4(可选):若想抓包复核,可在PC端执行adb exec-out tcpdump -i any -w - | wireshark -k -i -,过滤条件写ip.addr == 洛杉矶节点IP,看目标域名是否只出现在该IP流里,防止“流量泄露”。
故障排查速查表
| 现象 | 最可能原因 | 验证命令/入口 | 处置 |
|---|---|---|---|
| 规则不生效,全部流量走默认节点 | VPN已连接时改规则 | 通知栏无“Split-Tunneling Active” | 断开 → 改规则 → 重连 |
| 域名间歇性被墙 | 系统DNS缓存 | Termux: ndc resolver clearnetdns | 清缓存或换DoT |
| 添加规则提示“格式错误” | 通配符放错位置 | *.example.com写成example.*.com | 按RFC 6125规范修改 |
| 128条超限后无法保存 | 未做聚合 | 规则列表底部提示 | 合并CIDR或通配符 |
| 热点下分流失效 | 系统策略限制 | dumpsys connectivity | 申请MDM白名单 |
版本差异与迁移建议
2025-Q3的5.6.0与Q4即将推送的5.7.0 Beta差异:后者新增“地理拓扑视图”,可在世界地图上拖拽节点到规则,适合视觉党;但底层格式不变,旧规则文件letsvpn_routes.json可直接导入。建议先在5.6.0把规则调优,导出后备份到Git私有仓,等5.7.0正式版发布再一次性迁移,避免Beta周期内的节点闪断。
最佳实践十二条(可直接打勾)
- 先用“模板”跑一周,收集面板数据后再自定义,减少试错。
- 域名规则用二级通配符,如
*.cdn.netflix.com,比写死具体主机名更易维护。 - 对国产金融App一律用“进程级+直连”,避免域名拆分后风控触发。
- IP段规则掩码不要小于/24,否则路由表膨胀会拖慢重连速度。
- 每周导出一次
letsvpn_routes.json到本地,升级客户端前做Git diff,可回滚。 - 若节点列表出现“应急域名”,优先把它设为“兜底规则”,防止高审查区域突发阻断。
- 打开“实时统计”里的“按规则”标签,流量为0的规则及时删除,保持128条以内。
- 在公司Wi-Fi与蜂窝数据之间切换时,Android会重建VPN,规则需3秒重新下发,别急着重开。
- 漫游到IPv6-only网络时,把规则里所有IPv4 CIDR勾上“v6映射”,否则会出现45s超时。
- 若玩外服游戏,单独给游戏包名建“进程级”规则,比域名级更稳,不受广告域名干扰。
- 每月手动跑一次节点测速,把延迟>180ms的节点从规则里踢掉,防止AI选路2.0误选。
- 最后一条:不要试图用分流做违法跨境业务,SGS零日志报告不代表可对抗本地司法取证。
案例研究
案例1:10人跨境小团队——“零预算”搞定全球内网
背景:深圳初创公司,员工出差东南亚频繁,需访问AWS东京VPC内网代码仓库,又要 nightly sync GitHub Actions。预算有限,只能用LetsVPN“按量套餐”。
做法:统一给10台Pixel 7a刷入5.6.0,导出模板“办公”,把10.0.0.0/16与172.16.0.0/12指向东京节点,GitHub域名走洛杉矶,剩余全部直连。每人每日流量约1.2 GB,其中30%走东京、10%走洛杉矶。
结果:对比全隧道方案,每月节省约18 USD,占订阅总价35%;东京RTT稳定在28ms,GitHub clone速度从4.3 MB/s提到11 MB/s。复盘:若把GitHub也走东京,反而被AWS出口QoS,验证了“流媒体节点≠代码仓库节点”的独立规划原则。
案例2:个人博主——4K剪辑素材 nightly backup
背景:上海自媒体,每天上传50 GB 4K HDR素材到Google Drive,家用千兆上行实测只能跑60 Mbps,且晚高峰掉到20 Mbps。
做法:在Android TV Box装LetsVPN 5.6.0,只把*.googlevideo.com与*.drive.google.com指向“洛杉矶-高带宽”组,其余国内视频平台直连。上传测试用rclone,限速100 Mbps。
结果:晚高峰依然能维持92 Mbps,三小时传完50 GB;按量计费产生1.05 USD流量费,比升级千兆专线月租(+30 USD)划算。复盘:曾尝试把*.google.com整域 wildcard,结果Google 登录也被代理,触发风控要求短信验证;拆分成“仅上传域名”后风控消失,说明“宁缺勿滥”对Google系同样适用。
监控与回滚
异常信号与定位
1. 通知栏缺失“Split-Tunneling Active”=规则未下发;
2. 实时统计某规则流量持续为0=匹配失败;
3. adb shell ping内网IP走公网RTT>200ms=IP段规则被覆盖。
回退指令
A. 软回退:长按规则→禁用,5秒生效;
B. 硬回退:设置→一键清空,立即恢复全隧道;
C. 版本回退:用Git检出上一版letsvpn_routes.json→扫码导入→重连。
演练清单
每月例行:关闭Wi-Fi→切飞行模式→再开数据→观察通知栏标记是否恢复;若恢复时间>10s,说明规则文件过大,需聚合CIDR。
FAQ
Q1:锁屏后分流规则会不会失效?
结论:不会,但ROM必须将LetsVPN设为“无限制”。
背景:Android 12+对后台VPN引入“电池优化”白名单,若未列入,系统30s后回收VPNService,规则自然消失。
Q2:为何同一域名在浏览器与App里走了不同节点?
结论:浏览器可能被插件代理,App要走系统DNS。
背景:Chrome的Secure DNS若设为Cloudflare,会绕过系统解析,导致域名规则失效;关闭后可恢复。
Q3:模板导入后能否再添加国产银行App?
结论:可以,模板只是预设,后续仍手动追加。
背景:办公模板默认未包含银行包名,需自己添加“进程级+直连”。
Q4:128条上限包含禁用规则吗?
结论:包含,禁用规则仍占slot。
背景:官方实现用固定数组,slot占用与enable标志无关。
Q5:IPv6地址如何写?
结论:与IPv4一样用CIDR,如2400:3200::/32。
背景:LightWire栈同时下发v4/v6路由,但需节点本身支持v6。
Q6:规则里能用正则吗?
结论:不能,仅支持左通配符如*.example.com。
背景:官方解析器基于Trie,正则成本过高。
Q7:热点共享时下游设备是否享受分流?
结论:不享受,热点流量被Android标记为uid=1051,统一走默认隧道。
背景:VPNService只处理本机uid,热点包属于系统转发。
Q8:分流后为何Google Play下载变慢?
结论:Play下载域名与认证域名不同,规则若只写play.google.com会漏掉CDN。
背景:应追加*.googleusercontent.com。
Q9:桌面端与手机端同时在线,规则会冲突吗?
结论:不会,规则本地生效,互不影响。
背景:官方账号体系不同步路由,只同步节点列表。
Q10:如何确认规则真的节约了流量?
结论:用“实时统计”→“按规则”看节省字段,再与运营商账单对比。
背景:节省值=(如走代理会消耗的流量-实际走直连的流量)×中转单价。
术语表
Split-Tunneling 2.1:LetsVPN在2025年实现的域名/进程/IP三段分流机制,首次出现在Android 5.6.0。
LightWire:LetsVPN自研传输协议,基于UDP 443,支持FEC与智能重传。
VPNService:Android系统组件,允许App创建TUN接口并拦截流量。
uid:Android用户标识,每个App安装后分配,用于进程级规则匹配。
route mark:iptables mangle表的32位标记,LetsVPN用0x3e8区分分流流量。
模板向导:首次进入分流页面弹出的预设规则集,含办公/流媒体/游戏三类。
CyberShield 3.2:LetsVPN广告与恶意域名拦截模块,可与分流并存。
DoT:DNS-over-TLS,系统级加密解析,关闭后可降低缓存污染。
DRX:5G不连续接收,分流减少TUN流量后可让Modem更频繁休眠。
SGS零日志:LetsVPN的第三方审计报告,由瑞士SGS机构出具。
AI选路2.0:官方roadmap中计划将延迟、丢包、价格三维建模自动选节点。
意图驱动路由:2026预研功能,用户只需标注“4K/游戏/内网”即可自动生成规则。
动态令牌桶: rumored新上限机制,用令牌替换固定128条,尚未发布。
EDNS Client Subnet:Google DNS扩展,可能导致解析IP与规则地域不符,可关闭。
QoE:Quality of Experience,官方面板里用1~5星表示实时体验得分。
按量套餐:LetsVPN计费模式,每GB 0.1 USD,与包月互斥。
风险与边界
1. 出口IP每日变动,无法用于需要事前白名单的证券、支付接口;替代方案:向券商申请“专线证书”走IPSec,或购买固定IP的VPS自建隧道。
2. 规则冲突时,域名优先,可能导致内网网段被意外绕过;建议在新增域名规则后,用ip route get复核。
3. 国产ROM对VpnService.Builder阉割后,无法设置setUnderlyingNetworks,此时“bypass LAN”失效,只能回退全隧道。
4. 分流降低延迟但不保证丢包;若节点本身晚高峰丢包5%,分流后依然丢包5%,需手动换节点。
5. 法律风险:分流不等于匿名,本地司法仍可要求运营商提供IMEI与基站记录,与VPN零日志无关。
未来趋势:从“分流”到“意图网络”
LetsVPN roadmap 2026预览版提到将把AI-智能选路2.0与分流规则合并,形成“意图驱动路由”——用户只需标注“4K”“游戏”“内网”三类意图,后台自动聚合域名、IP、甚至QoS标签,无需手动维护。若实现,128条上限或升级为“动态令牌桶”,但官方尚未承诺具体日期。建议现阶段把规则当代码一样版本化管理,未来可平滑迁移。
收尾:一句话记住
Android端隧道分流不是简单“开或关”,而是一张可量化的成本-性能账单:先测速、再建规则、后看流量,最后每月审计。只要按本文的阈值与回退方案执行,就能把40ms延迟、1.2Gbps峰值和22%套餐节省同时收入囊中——前提是,别把规则写成黑洞。
