NetGuard 预定义规则:Google Connectivity Services 等系统应用默认放行
为什么有预定义规则
NetGuard 在设备上会自动识别某些关键系统组件并给它们预设好放行规则。这些规则的目的是防止用户在白名单模式下误拦截系统必需的组件,导致难以排查的问题。
主要预定义规则
Google Connectivity Services(核心)
这是最重要的预定义规则。Google Connectivity Services(包名 com.google.android.gms 相关服务)负责检测当前网络是否真的连得上互联网——它通过向 Google 服务器发一个极短的请求(类似 connectivitycheck.gstatic.com)来验证。
如果这个组件被拦截了,系统状态栏的 Wi-Fi 或移动数据图标上会出现一个感叹号(!),表示网络"没有互联网"。在 Android 6.0+ 上甚至可能弹出通知让你选择是否继续使用这个网络。
预定义规则默认允许这个组件的联网请求,避免这种体验问题。
系统下载管理器
com.android.providers.downloads 是系统下载管理器,负责所有浏览器和应用的下载操作。被拦截后会影响 Play Store 下载、浏览器文件下载等。预定义规则默认放行。
为什么不完全拦截系统应用
FAQ 中解释了这个设计决策:系统应用(system apps)的联网请求是 Android 系统正常运行的一部分。拦截系统应用可能导致:
- Google Play Store 无法检查和下载更新
- 设备时间无法同步
- 部分系统服务崩溃或反复重启
- 推送通知无法接收(因为推送服务依赖 Google Play 服务联网)
预定义规则存储位置
NetGuard 的预定义规则定义在一个 XML 文件里。开发者在 GitHub 上公开了这个文件,任何人都可以审查规则内容。
规则匹配的是包名 + 特定应用标记,一旦匹配成功,默认设置被覆盖为放行。
如何覆盖预定义规则
预定义规则的优先级低于你的手动配置。这意味着:
- 即使预定义规则允许了 Google Connectivity Services,你仍然可以在应用列表里手动点击它的 Wi-Fi / 移动数据图标改成禁止
- 你的手动设置会覆盖预定义规则的放行
覆盖后可能出现以下影响:
| 组件 | 覆盖后的后果 |
|---|---|
| Google Connectivity Services | 状态栏 Wi-Fi / 移动图标出现感叹号;Android 可能主动让你确认网络状态 |
| Play Store | 应用无法更新、无法下载新应用 |
| Download Manager | 无法下载任何文件 |
如何查看和编辑预定义规则
NetGuard 应用内没有直接编辑预定义规则的界面。如果你需要修改预定义规则:
- 手动在应用列表里覆盖特定应用的开关(最简单)
- 或者修改 NetGuard 的 APK(需要 root)
- 或者向开发者提出 feature request
对普通用户来说,在应用列表里手动覆盖是唯一需要了解的方法。预定义规则存在的目的是防止新手误操作,高级用户可以逐个覆盖。
预定义规则列表的完整访问
如果你想看 NetGuard 内置的完整预定义规则列表,可以访问开发者 GitHub 仓库的 predefined.xml 文件——里面逐条列出了所有被特殊处理的系统包名及其默认规则。
预定义规则 + 白名单模式的特殊注意
如果切换到白名单模式(Block Wi-Fi / Block mobile 都勾选):
- 预定义规则的默认放行仍然生效
- 但系统应用会以灰色 / 低对比度显示,容易被忽略
- 建议先在黑名单模式下配置好所有系统组件的 Wi-Fi / 移动数据开关,再切到白名单模式