NetGuard 中文文档 下载 App

子网路由(Subnet routing):解决热点共享和部分 Android bug

子网路由是什么

子网路由(Subnet routing)是 NetGuard 网络选项里的一个高级开关,决定 VPN 隧道内的流量如何分配 IP 地址和路由。默认关闭,在以下两种场景需要手动开启:

  1. 使用 Android 热点 / 网络共享(Tethering)
  2. Hosts 广告拦截不生效(部分 Android 版本需要开启此选项才能让 Hosts 拦截正常工作)

为什么 Tethering 需要子网路由

当你在 Android 上开启 Wi-Fi 热点或 USB 共享时,连接到你的设备的外部设备(笔记本、其他手机)的流量也会流经 Android 的 VPN 服务。但默认情况下:

开启子网路由后,NetGuard 为每个子网分配独立的路由规则,让外部设备的流量也能正确转发出去。

设置步骤

主菜单 → 设置 → 网络选项 → Subnet routing → ✅ 勾选。

在 Wi-Fi 热点已开启时,可能会看到多个子网条目(每个外部设备一个)。

场景一:Wi-Fi 热点共享不工作

症状

解决

  1. 打开 NetGuard 主菜单 → 设置 → 网络选项
  2. ✅ 勾选 Subnet routing
  3. 同时检查:是否开启了「允许端口转发」(如果外部设备需要通过热点访问 Android 上的某个服务)
  4. 关闭再重新打开 Android 热点

场景二:Hosts 拦截不生效

在某些 Android 版本(包括部分 LineageOS / GrapheneOS 构建、某些国产 ROM)上,默认关闭子网路由时会出现:

这是因为 Android VPN 实现的一个路由 bug——Hosts 拦截的规则没有被正确应用到默认路由上。

解决

  1. 主菜单 → 设置 → 网络选项
  2. ✅ 勾选 Subnet routing
  3. 如果开启后仍然不行,尝试在高级选项里:
  1. 如果还不行 → 重启设备

场景三:热点 + Hosts 拦截组合

你想让连接到你 Android 热点的设备也享受 Hosts 广告拦截效果?这是可行的:

  1. ✅ 开启子网路由
  2. ✅ Hosts 拦截已正确配置并生效
  3. 连接到热点的设备发出的 DNS 请求会经过 Android 的 VPN 隧道
  4. NetGuard 的 Hosts 规则会拦截这些请求——相当于整个热点范围内都有广告拦截

这个用法比在每个设备上单独装 NetGuard 方便得多,但要注意:

注意事项

电池消耗

子网路由开启后,所有流量(包括外部设备的)都需要 NetGuard 额外处理,电池消耗会增加。如果不需要热点共享或 Hosts 拦截,可以关闭子网路由省电。

与 Always-On VPN 的关系

如果设备配置了 Always-On VPN,子网路由的行为会受到影响。GrapheneOS 的默认 Always-On VPN 设置会强制阻断所有流量,此时需要额外关闭「阻断未使用 VPN 的连接」。

与端口转发的关系

端口转发(下一页)功能依赖子网路由——因为端口转发涉及到跨子网的流量重定向。如果用 GitHub 版的端口转发功能,必须同时开启子网路由。

关闭子网路由的时机

简单说:遇到了问题再开,平时不需要主动打开。