NetGuard 被系统意外停止:后台管理与 Watchdog 解决方案
两种"停止"需要区分
NetGuard 停止运行有两种完全不同的情况,解决方法不同:
| 情况 | 表现 | 原因 |
|---|---|---|
| 被系统杀死(不是崩溃) | 防火墙开关保持开启状态,但拦截规则不生效 | Android 电池优化 / Doze / 国产 ROM 后台策略 |
| 应用崩溃(crash) | NetGuard 突然退出,Android 弹出"NetGuard 已停止"通知 | Android VPN 实现 bug 或内核 bug |
情况一:被系统杀死
症状
- 解锁后发现被禁止的应用已经在联网了
- 状态栏 NetGuard 前台服务通知消失(但钥匙图标可能还在)
- 打开 NetGuard 时发现防火墙开关其实还在开启状态
- 关闭再打开防火墙后暂时恢复,但一段时间后又出现
原因
Android 6.0+ 的 Doze 和 App Standby,加上国产 ROM 的激进后台策略,会强制停止看似空闲的后台应用。虽然 NetGuard 是前台服务,但国产 ROM 经常绕过前台服务保护直接杀掉。
解决方案
这和「电池优化与 Doze」页面的内容完全相同——在 Android 系统设置里把 NetGuard 的电池优化、自启动、关联启动、后台活动全部设为允许。国产 ROM 每款都有自己的后台管理页面,需要逐一找到并配置。
验证
做完后台设置后,锁屏静置 1~2 小时,再解锁打开被禁止的应用——如果它们仍然无法联网,说明后台策略已生效。
情况二:应用崩溃(crash)
症状
- 打开 NetGuard 时看到 Android 的「NetGuard 已停止运行」弹窗
- 系统日志里有 FATAL EXCEPTION 或 Native Crash 记录
- 防火墙服务被彻底终止,需要重新点击开关启用
原因
开发者在 FAQ 里坦诚:NetGuard 自身很少崩溃("NetGuard rarely crashes"),绝大多数崩溃来自 Android 系统层面的 bug:
- Android VPN 服务实现 bug(三星、某些 LineageOS 构建等)
- Android Linux 内核 bug(某些内核版本的网络栈有问题)
- VpnService.protect() 函数在某些 Android 版本上有 bug(会导致原生层崩溃)
提供的解决办法
- 重启设备——临时恢复,等待下次崩溃
- 导出 NetGuard 设置 → 清除 NetGuard 数据 → 导入设置 → 重新启用防火墙
- 向 Android 系统 / ROM 厂商报告 bug——NetGuard 开发者无法修复底层系统 bug
需要开发者协助时
NetGuard 开发者可以帮你分析崩溃日志,但需要:
- logcat 日志:从 PC 用 adb 抓取的完整 logcat 输出
- 崩溃时间点:崩溃发生的精确时间
- 完整步骤:崩溃前你做了什么操作
抓取 logcat 的方法(需要 PC + adb):
adb logcat -d > netguard-crash.txt
Watchdog 机制
NetGuard 自带一个 Watchdog(看门狗)功能,每隔 10~15 分钟(可配置)检查自己的运行状态。如果发现防火墙被停止了,Watchdog 会自动重启。
主菜单 → 设置 → 高级选项 → ✅ Watchdog。
Watchdog 有以下限制:
- 检查间隔最长 15 分钟 → 这意味着防火墙被停止后最多有 15 分钟的窗口期
- 国产 ROM 如果连 Watchdog 的检查进程也杀了,就完全失效
- Watchdog 只在应用有网络权限时工作(但这通常没问题)
开机自启失败
如果设备重启后 NetGuard 不会自动恢复防火墙:
- 确认防火墙开关在重启前是开启状态——NetGuard 只有在关闭状态下被重启才会自动恢复
- 确认 NetGuard 安装在内部存储——SD 卡安装的应用不会收到 RECEIVE_BOOT_COMPLETED 广播
- 确认国产 ROM 允许 NetGuard 自启动——在自启动管理里找到 NetGuard 并开启
快速排查清单
| 检查项 | 状态 | 操作 |
|---|---|---|
| NetGuard 电池优化 | ❌ 关闭 | 系统设置里设为不优化 |
| 国产 ROM 自启动 | ✅ 开启 | MIUI / OPPO / 华为等各自的自启动管理 |
| 国产 ROM 关联启动 | ✅ 开启 | 某些 ROM 需要额外设置 |
| 国产 ROM 后台活动 | ✅ 允许 | 后台策略 / 省电策略设为无限制 |
| Watchdog | ✅ 开启 | 设置 → 高级选项 |
| Always-On VPN | ✅ 主开关开,子选项❌关 | VPN 设置里确认 |
| 防火墙开关 | ✅ 保持开启 | 重启前确认 |
| 安装位置 | 内部存储 | 不安装到 SD 卡 |