NekoBox Android 端的 TUN 模式是一个容易让人产生”开了就万事大吉”错觉的功能。你点下开关看到 VPN 图标出现在状态栏,以为全局流量都接管了——但 DNS 查询可能正从 Private DNS 的 DoT 通道溜走,部分应用可能因为分应用代理的优先级规则走了直连。这篇文章按 Android VPN 权限、DNS、TUN 路由表、分应用代理四个层级拆开排查。

Android VPN slot 只有一个:谁在抢?

Android 系统的 VPN 框架一次只允许一个应用占据 VPN 通道。如果你同时装了 NekoBox 和另一款代理客户端(比如 v2rayNG、Clash Meta for Android、Hiddify Next),或者系统开启了 Private DNS、安装了带 VPN 功能的广告过滤器,NekoBox 的 TUN 可能已经被抢占了。

排查顺序

先关掉什么为什么怎么关
Private DNSDoT 在 VPN 层之前拦截 DNS设置 → 网络和互联网 → Private DNS → 关闭
其他代理客户端 VPN抢占唯一的 VPN slot逐个卸载或关闭其 VPN 开关
广告过滤 VPN(AdGuard 等)同样占用 VPN slot关闭或改用 NekoBox DNS 规则替代
系统省电模式可能杀掉 NekoBox 后台进程电池优化 → NekoBox → 不优化

验证 VPN slot 是否被 NekoBox 占用:拉下通知栏,长按 VPN 通知,看 “活跃的 VPN” 里是不是只有 NekoBox。如果出现两个 VPN 名称,系统会随机选一个作为默认。

Private DNS:最容易漏掉的一环

Android 9+ 内置的 Private DNS 是 DNS over TLS(DoT,端口 853),这个流量在 TCP 层先于 VPN 接口建立连接。即使 NekoBox 的 TUN 接管了普通 DNS(UDP 53),DoT 流量仍然从系统默认网络栈出去——结果是 dnsleaktest.com 看到的是本地 ISP 的 DNS 而不是代理出口的 DNS。

这是 NekoBox Android 端 DNS 泄漏的第一原因,不是配置问题而是 Android 协议栈的设计限制。关掉 Private DNS 后,所有 DNS 走 UDP 53,TUN 就能正确拦截。

关掉之后,在 NekoBox 里配一个可靠的 DNS:

  • 国内 DNS(直连域名):223.5.5.5(AliDNS)或 119.29.29.29(DNSPod)
  • 海外 DNS(代理域名):8.8.8.8 或 1.1.1.1

配合路由规则按域名分流 DNS 请求,可以做到国内域名用国内 DNS、海外域名用海外 DNS。

TUN 路由表:不是开了就正确

NekoBox Android 的 TUN 基于 tun2socks,核心逻辑是把所有 IP 流量导入代理。但路由表如果写错了,会出现”部分 IP 走代理、部分直连、部分直接丢包”的情况。

在 Route 设置里看三个关键参数:

设置项推荐值说明
代理模式仅代理选中应用 或 全部代理选了全部代理时下面两项才生效
绕过局域网开启避免把局域网设备(打印机、NAS)的流量送进代理
绕过中国 IP按需求开启后国内 IP 直连,但数据库有漏判风险

如果想让部分应用不走代理:在 Route → 应用代理设置 → 绕过列表里勾选这些应用。绕过优先级高于代理——一个应用如果同时在代理列表和绕过列表,会被绕过。

常见场景:微信/支付宝走直连、Telegram/YouTube 走代理。在分应用代理里把微信加入绕过,Telegram 加入代理,其他应用默认跟随全局设置。

分应用代理:规则优先级的坑

NekoBox 的路由决策顺序是:

绕过列表 > 代理列表 > 路由规则 > 全局设置

如果你想精细控制某个应用的代理行为,直接在分应用代理里设置,不要只依赖路由规则。路由规则按域名匹配,但很多应用用的是 IP 直连、WebView 或者后台 Service,域名规则不一定能命中。

WebView 的坑:一些应用内嵌的 WebView 内容(比如 Twitter 客户端打开外部链接)在 Android 上以 com.android.webviewcom.google.android.webview 的身份产生流量。如果你的分应用代理只匹配了应用本身的包名,WebView 的流量会走系统默认通道。解决方式是直接把这类应用设为”全部代理”而不是”仅代理选中应用”。

多端配置时的 DNS 一致性

如果你在手机、平板、电视盒子上都装了 NekoBox,DNS 配置要写一致。不然同一时间段的同一域名,手机解析到的 IP 是代理出口的、盒子解析到的可能是本地 ISP 的,会导致出站 IP 不一致。

选一个在 DNS 层面和路由规则层面都能统一管理的 多格式测试订阅源,可以降低多端 DNS 配置不一致导致的排查成本——订阅里自带的 DNS 和路由规则在所有客户端表现一致。

未覆盖的边界

  • 本文基于 NekoBoxForAndroid v1.3.6+ 和 Android 14/15。Android 12 及以下版本的 Private DNS 行为有差异。
  • 部分国产 ROM(MIUI HyperOS、ColorOS 15、HarmonyOS)的 VPN 管理策略不同,可能出现本文未描述的系统级 VPN 抢占。
  • 分应用代理的 WebView 匹配问题仅在 Android 14 上验证过,Android 15 的 WebView 行为可能有改进。
  • tun2socks 的性能损耗在入门级设备(4GB RAM 以下)上可能明显,本文未做量化测试。

相关阅读