与其他 VPN 应用冲突:Android 只允许一个 VpnService
冲突原因
Android 系统有一个固有限制:同一时间只允许一个应用使用 VpnService 接口。NetGuard 正是通过 VpnService 实现无 root 防火墙功能。如果设备上同时启用了其他 VPN 应用(如 WireGuard、OpenVPN、Cloudflare 1.1.1.1、Orbot/Tor、公司企业 VPN 等):
- 后启用的那个 VPN 应用会抢走 VpnService 的使用权
- 先前启用的 NetGuard 防火墙会被自动停止
- 或者 Android 直接拒绝第二个 VPN 应用的启动请求,显示错误
这不是 NetGuard 的 bug,是 Android 从 5.0 以来就有的设计限制。
两种冲突表现
表现一:后启用覆盖先启用
- NetGuard 先启用防火墙 → VPN 隧道建立成功
- 再打开 WireGuard 连接公司 VPN
- Android 把 VpnService 切换给 WireGuard → NetGuard 防火墙停止
- WireGuard 连接断开 → VpnService 释放 → NetGuard 可能不会自动恢复(取决于设备和 Android 版本)
表现二:直接报错
某些 Android 版本在启用 VPN 冲突时会弹出明确错误:"另一个 VPN 连接已存在"或"无法启动 VPN 服务"。
解决方案
方案一:分时段使用(最推荐)
最简单可靠的方案:不同时启用 NetGuard 和其他 VPN 应用。
- 日常 → 只用 NetGuard 做防火墙
- 需要 VPN 加密(连公司内网、用 WireGuard 翻墙)时 → 关掉 NetGuard 防火墙,打开 VPN
- VPN 用完 → 关掉 VPN,重新打开 NetGuard
关掉 NetGuard 前应用的配置(Wi-Fi / 移动数据开关、条件等)全部保留,重新打开后自动恢复。
方案二:SOCKS5 代理组合(进阶)
理论上可以让 NetGuard 继续作为防火墙运行,同时把流量通过 SOCKS5 代理转发给另一个 VPN 应用。但这需要两个 VPN 应用之一提供 SOCKS5 服务端接口:
- NetGuard 内置了 SOCKS5 客户端功能(见 SOCKS5 代理页面)
- 需要另一个 VPN 应用支持 SOCKS5 服务端(如 Orbot / Tor)
配置复杂且不稳定,开发者不主动支持。
方案三:路由器级代理(绕过 Android 限制)
如果你需要同时有加密隧道和防火墙效果,可以在路由器层面做:
- 路由器上配置 SOCKS5 / WireGuard 代理
- Android 上保持 NetGuard 做应用级防火墙
- NetGuard 负责哪些应用能上网 / 不能上网
- 路由器负责上网流量的加密出口
常见冲突应用清单
| VPN 应用 | 与 NetGuard 的兼容性 |
|---|---|
| WireGuard | ❌ VpnService 冲突,不能同时用 |
| OpenVPN | ❌ VpnService 冲突 |
| Cloudflare 1.1.1.1 App | ❌ VpnService 冲突 |
| Orbot / Tor | ❌ VpnService 冲突,但可 SOCKS5 代理组合 |
| Google One VPN | ❌ VpnService 冲突 |
| 公司企业 VPN(Cisco AnyConnect、Pulse Secure 等) | ❌ VpnService 冲突 |
| Blokada | ❌ VpnService 冲突(Blokada 本身也是 VPN 防火墙) |
| AdGuard 原生版 | ❌ VpnService 冲突(AdGuard 用 VpnService) |
| AFWall+(root 防火墙) | ✅ 不冲突(AFWall+ 用 iptables,不用 VpnService) |
如何确认 VpnService 当前归属
在 Android 设置里:
- 设置 → 网络和互联网 → VPN
- 查看当前处于"已连接"状态的 VPN 应用是哪一个
- 如果 NetGuard 在"已断开"状态,说明 VpnService 已经被其他应用抢走了
NetGuard 防火墙被抢后会自动恢复吗
NetGuard 在后台运行时会定期检查自己是否还持有 VpnService 权限。如果被其他应用抢走,它会尝试重新启用防火墙。但这个机制在实际设备上不总是可靠——特别是某些国产 ROM(小米、华为、OPPO)的后台管理策略可能会阻止 NetGuard 自动重启 VpnService。
如果切换回来后 NetGuard 没自动恢复:
- 手动打开 NetGuard 应用
- 点击顶部防火墙开关(先关掉再打开)
- 或者重启设备
与 AFWall+ 同用(root 设备)
如果你有 root,AFWall+(基于 iptables 的 root 防火墙)可以和 NetGuard 同时运行——因为 AFWall+ 不使用 VpnService,它直接操作 iptables。但两者覆盖相同功能(都是应用级防火墙),同时用意义不大,还需要保持两边配置同步。
关闭后再启用的注意
从冲突的 VPN 应用切换回来时:
- 先彻底关闭另一个 VPN 应用(不是只断开连接,是在应用里完全停止 VPN 服务)
- 确认 Android VPN 设置里只有 NetGuard 处于"已连接"状态
- 再打开 NetGuard 防火墙
如果另一个 VPN 应用只是断开连接但还保留 VpnService 连接(显示为"保持连接"),NetGuard 还是抢不到 VpnService。