AdAway 中文文档 下载 App

非 Root 设备的 AdAway —— 本地 VPN 拦截模式完整指南

为什么需要 VPN 模式

Android 从 6.0 开始对 /system 分区实施只读保护,没有 root 就无法修改。AdAway 在 v5 版本开始引入 VPN 模式作为非 root 设备的替代方案。

VPN 模式的核心思路:让系统创建一个虚拟的 VPN 网卡,把所有 DNS 请求先路由到这个网卡,由 AdAway 检查域名是否在 hosts 黑名单里,然后决定返回什么。

前置条件

配置步骤

第一步:首次启动,选择拦截模式

第一次打开 AdAway 会弹向导:

  1. 向导会自动检测是否有 root 权限
  2. 没有 root → 进入 VPN 模式配置
  3. 点"启用"或类似按钮,Android 会弹出一个系统级对话框:

"AdAway 请求建立 VPN 连接。所有网络流量可能都会被监控。"

  1. 点"确定"或"允许"
  2. AdAway 主界面应该切换为绿色"已启用"状态

这个对话框是 Android 的安全机制——任何 APP 创建 VPN 都必须由用户手动确认。AdAway 的 VPN 不加密、不转发到外部服务器,只在本地拦截 DNS。

第二步:下载 hosts 源

VPN 模式下也需要 hosts 源——AdAway 用同样的 hosts 文件语法来做拦截规则。默认会推荐几个 hosts 源,点下载即可。也可以自己添加更多源,详见 添加自定义源。

第三步:启用

下载完 hosts 源后点"应用"按钮,AdAway 会:

  1. 合并所有选中的 hosts 源
  2. 在虚拟 VPN 里注册这些拦截规则
  3. 开始拦截 DNS 请求

VPN 模式的工作原理

和 root 模式对比一下:

Root 模式VPN 模式
hosts 文件位置真实的 /system/etc/hosts虚拟网卡的 DNS 过滤器
拦截时机DNS 查询第一步(系统原生)DNS 请求离开手机前
性能影响几乎零轻微(需要虚拟网卡处理每个 DNS 请求)
电池消耗几乎零有(VPN 进程需要常驻)
需要 root是否

Private DNS(Android 9+)冲突

从 Android 9 (Pie) 开始,系统默认启用 Private DNS,使用 DNS over TLS/HTTPS。这会绕过 AdAway 的 VPN DNS 拦截——因为 DNS 请求被加密后直接发给了 Private DNS 服务器,不经过系统的 DNS 解析流程。

解决方法:临时禁用 Private DNS

  1. 系统设置 → 网络和互联网 → 高级 → 私人 DNS
  2. 选择"关"(不要选"自动")
  3. 确认

AdAway v6 尝试了和 Private DNS 共存的方案(初步 DOH 支持),但实践中还是禁用 Private DNS 最稳。

常见局限

VPN 模式下 AdAway 拦不住的情况:

电池影响

VPN 模式比 root 模式耗电更多,原因:

实测日常使用下,VPN 模式的额外电量消耗大约是 3%~8%(不同机型差异大),可以接受但不如 root 模式干净。

和 AdGuard VPN 模式的对比

AdAway 的 VPN 模式和 AdGuard 的 VPN 模式在技术路径上不同:

但 AdAway 免费、开源、无内购。

AdAway VPN 设置
VPN 模式的系统确认对话框,Android 要求每次 VPN 创建必须用户手动授权