Pro 版按地址精细拦截:精确到域名级别的控制
这个功能解决什么问题
假设一个场景:你想让某个应用能正常联网使用,同时又不想让它偷偷访问追踪 / 广告服务器。传统 Wi-Fi / 移动数据开关做不到——它是全有或全无。你无法让应用"连这个服务器、不连那个服务器"。
Pro 版的按地址精细拦截解决了这个问题:在保持应用本身联网的同时,对它访问的每一个域名 / IP分别标记允许或禁止。
前置条件
地址级拦截需要同时开启以下设置:
步骤一:启用流量过滤
主菜单 → 设置 → 高级选项 → Filter traffic(流量过滤)→ 勾选开启。
这是地址级拦截的基础——只有流量过滤开启后,NetGuard 才会实际检查每个出站数据包的目标地址,从而实现精细拦截。如果流量过滤关闭,即使你标记了某个地址为禁止也不会生效。
步骤二:启用域名拦截(可选)
主菜单 → 设置 → 高级选项 → Block domain names(拦截域名)→ 勾选。
这个选项默认开启,是 Hosts 广告拦截功能的一部分。如果关闭了,Pro 版的地址级拦截可能无法按域名工作(因为 NetGuard 会直接看 IP 而不做域名匹配)。
步骤三:应用详情面板里访问日志有数据
要对某个应用的地址做拦截,它必须先有访问过这些地址——也就是在访问日志里有记录。如果应用还没联网过或你刚清空了日志,需要先让它联网一段时间。
操作步骤
- 在应用列表里找到目标应用,点击展开箭头进入详情面板
- 滚动到「访问日志」区域,看到该应用最近访问过的地址列表
- 点击某个地址 → 弹出地址详情弹窗
- 在弹窗里设置:
- ✅ 允许此地址(Allow this address)
- ❌ 禁止此地址(Block this address)
- 保存后,该应用对这个地址的请求会被放行或拦截,不受应用整体的 Wi-Fi / 移动数据开关限制
或者点击详情面板里的 Configure 按钮(Pro 版才有),进入更完整的地址级配置界面,一次性对多个地址批量设置。
实际配置示例
场景一:应用主体允许,追踪域名禁止
目标应用:某电商 App
应用 Wi-Fi / 移动数据:✅ 允许
地址级拦截:
✅ api.example.com(电商核心 API)→ 允许
❌ tracking.example-analytics.com → 禁止
❌ ads.google.com → 禁止
效果:应用正常联网购物,但无法向追踪服务器发送你的行为数据。
场景二:只允许访问本地服务器
目标应用:某调试工具
应用 Wi-Fi / 移动数据:✅ 允许
地址级拦截:
✅ 192.168.1.100(本地开发服务器)→ 允许
❌ *(其他全部禁止)
效果:应用只能连到本地开发服务器,其他任何服务器请求都被拦截。注意 NetGuard 不支持通配符 *——你需要在访问日志里逐个禁止其他目标,或者切换到白名单模式。
场景三:Hosts 拦截 + Pro 版地址级拦截组合
GitHub / F-Droid 版已经开启了 Hosts 广告拦截(在全局层面拦截所有已知广告域名),Pro 版地址级拦截是追加层:对某个特定应用你可以在 Hosts 拦截基础上,再额外加上自己的定制规则。
地址级拦截 vs Hosts 拦截
| 维度 | Hosts 拦截 | Pro 版地址级拦截 |
|---|---|---|
| 范围 | 全局(所有应用) | 单应用 |
| 生效渠道 | GitHub / F-Droid 版独有 | Pro 版独有 |
| 粒度 | 域名级 | 域名 / IP 级 |
| 配置方式 | 下载 Hosts 文件 | 手动逐个地址标记 |
| 维护 | 定期更新 Hosts 文件 | 按需追加 |
两者可以同时使用、互为补充。
性能影响
启用流量过滤 + 地址级拦截后:
- 所有出站数据包都会被规则引擎逐一检查目标 IP / 域名
- 电池消耗会略有增加(FAQ 提到"在较老设备上可能难以接受,在现代设备上几乎察觉不到")
- 在 Android 版本 5.0 及更早,流量过滤是强制开启的;在 5.1+ 是可选
地址级拦截的限制
- 不能对通配符域名(如
*.example.com)批量设置——必须逐个域名标记 - 两个不同域名解析到同一个 IP 时,NetGuard 会把它们视为同一 IP 处理,可能出现"标记了域名 A 禁止但域名 B 也被禁止"的情况(因为它们是同一个 IP)
- 加密隧道(如 DoT / DoH)的域名请求 NetGuard 看不到——因为 DNS 请求被加密了,无法做域名匹配,只能按 IP 拦截