NetGuard 中文文档 下载 App

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 系统正常运行的一部分。拦截系统应用可能导致:

预定义规则存储位置

NetGuard 的预定义规则定义在一个 XML 文件里。开发者在 GitHub 上公开了这个文件,任何人都可以审查规则内容。

规则匹配的是包名 + 特定应用标记,一旦匹配成功,默认设置被覆盖为放行。

如何覆盖预定义规则

预定义规则的优先级低于你的手动配置。这意味着:

覆盖后可能出现以下影响:

组件覆盖后的后果
Google Connectivity Services状态栏 Wi-Fi / 移动图标出现感叹号;Android 可能主动让你确认网络状态
Play Store应用无法更新、无法下载新应用
Download Manager无法下载任何文件

如何查看和编辑预定义规则

NetGuard 应用内没有直接编辑预定义规则的界面。如果你需要修改预定义规则:

  1. 手动在应用列表里覆盖特定应用的开关(最简单)
  2. 或者修改 NetGuard 的 APK(需要 root)
  3. 或者向开发者提出 feature request

对普通用户来说,在应用列表里手动覆盖是唯一需要了解的方法。预定义规则存在的目的是防止新手误操作,高级用户可以逐个覆盖。

预定义规则列表的完整访问

如果你想看 NetGuard 内置的完整预定义规则列表,可以访问开发者 GitHub 仓库的 predefined.xml 文件——里面逐条列出了所有被特殊处理的系统包名及其默认规则。

预定义规则 + 白名单模式的特殊注意

如果切换到白名单模式(Block Wi-Fi / Block mobile 都勾选):