自托管 DNS 过滤:AdGuard Home 深度介绍 – wiki基地


掌控你的数字边界:自托管 DNS 过滤与 AdGuard Home 深度解析

在数字信息爆炸的今天,互联网已成为我们生活、工作和娱乐不可或缺的一部分。然而,随之而来的是无处不在的在线广告、侵犯隐私的追踪器、潜在的恶意软件以及不适合特定年龄段的内容。传统的解决方案,如浏览器广告拦截插件,虽然在一定程度上缓解了问题,但其作用范围有限,无法覆盖所有设备和应用程序。为了更彻底、更全面地掌控我们的网络环境,自托管 DNS 过滤应运而生,而 AdGuard Home 正是这一领域中备受推崇的佼佼者。

本文将深入探讨自托管 DNS 过滤的概念、优势,并详细介绍 AdGuard Home 的功能、安装、配置及使用场景,帮助您构建一个更清爽、更安全、更可控的家庭或小型办公网络环境。

第一章:理解基石 —— DNS 与 DNS 过滤

1.1 什么是 DNS?

在深入了解 DNS 过滤之前,我们必须先理解 DNS(Domain Name System,域名系统)是什么。简单来说,DNS 就像是互联网的“电话簿”。人类更容易记住像 www.google.com 这样的域名,但计算机之间通信需要的是 IP 地址(例如 172.217.160.142)。当您在浏览器中输入一个网址时,您的设备(或路由器)会向 DNS 服务器发送一个查询请求,询问该域名对应的 IP 地址。DNS 服务器收到请求后,会查找并返回相应的 IP 地址,然后您的设备才能与目标服务器建立连接。

1.2 什么是 DNS 过滤?

DNS 过滤的核心思想是在 DNS 查询阶段进行干预。当设备请求解析一个域名时,DNS 过滤器会检查该域名是否存在于一个或多个“黑名单”(通常称为阻止列表或过滤列表)中。

  • 如果域名在黑名单中(例如,已知的广告服务器、追踪器域名或恶意软件分发站点),DNS 过滤器不会返回真实的 IP 地址,而是返回一个无效或本地的 IP 地址(如 0.0.0.0 或其自身 IP),或者干脆拒绝响应。这样,您的设备就无法连接到该服务器,从而达到了阻止广告加载、追踪行为或访问恶意网站的目的。
  • 如果域名不在黑名单中,DNS 过滤器会将查询转发给上游的公共 DNS 服务器(如 Google DNS, Cloudflare DNS 等)或进行递归查询,获取真实的 IP 地址并返回给请求设备,保证正常的网络访问。

1.3 DNS 过滤 vs. 浏览器插件

特性 DNS 过滤 (如 AdGuard Home) 浏览器插件 (如 AdBlock Plus, uBlock Origin)
作用范围 网络级别:保护连接到该网络的所有设备(电脑、手机、平板、智能电视、游戏机、IoT 设备等) 浏览器级别:仅在安装了插件的浏览器内生效
拦截内容 主要拦截基于域名的请求(广告、追踪器、恶意域名) 可拦截域名请求,也可隐藏页面元素、移除脚本
应用内广告 拦截大多数 App 内基于域名的广告和追踪 不能拦截浏览器以外的应用程序内广告
资源消耗 集中在运行 DNS 过滤器的服务器上,客户端设备负载低 在每个客户端浏览器的每个标签页上运行,消耗客户端资源
隐私性 更高(自托管方案数据完全在本地处理) 数据处理依赖插件开发者和浏览器,存在潜在隐私风险
配置管理 集中管理,一次配置,全局生效 需要在每个浏览器上单独安装和配置
灵活性 可精细控制规则、自定义列表、设置不同策略 灵活性相对较低,主要依赖预设列表

DNS 过滤提供了一种更底层、更全面的网络环境净化方案,尤其适用于需要保护多个设备和非浏览器应用的场景。

第二章:隆重登场 —— AdGuard Home 简介

AdGuard Home 是一款免费、开源、功能强大的网络级广告和追踪拦截 DNS 服务器。它的目标是让你完全掌控自己的网络流量,保护所有连接到你网络的设备,而无需在每台设备上安装任何客户端软件。

你可以将 AdGuard Home 想象成你家庭网络的“数字门卫”。所有出站的 DNS 请求都必须先经过它。它会根据你设定的规则,决定哪些请求可以通过,哪些应该被拦截。

核心优势:

  • 开源免费:代码公开透明,无隐藏费用,社区活跃。
  • 跨平台:支持在多种操作系统(Linux, Windows, macOS)和硬件(普通电脑、服务器、树莓派、路由器等)上运行。
  • 易于部署:提供多种安装方式(包括 Docker 镜像、二进制文件、脚本安装等),拥有直观的 Web 管理界面。
  • 功能全面:不仅限于广告拦截,还包括追踪器阻止、家长控制、自定义过滤规则、DNS 加密等高级功能。
  • 高性能:采用 Go 语言编写,资源占用相对较低,性能优异。

第三章:深入探索 —— AdGuard Home 的核心功能

AdGuard Home 的强大之处在于其丰富且实用的功能集:

3.1 网络级广告和追踪拦截

这是 AdGuard Home 最核心的功能。通过订阅和管理多个过滤列表(blocklists),它可以有效拦截:
* 网页上的横幅广告、视频广告、弹出广告等。
* 移动应用程序内的广告(大部分基于域名的广告)。
* 各种在线追踪器(分析脚本、像素标签、指纹识别脚本等),保护您的浏览隐私。
* 已知的恶意软件、钓鱼网站域名,提升网络安全。

AdGuard Home 支持多种流行的过滤列表格式,并允许用户添加自定义列表源或手动添加规则。

3.2 增强隐私保护

除了拦截追踪域名,AdGuard Home 还提供:
* 阻止已知的遥测域名:拦截操作系统(如 Windows)或某些软件收集用户数据的行为。
* 强制安全搜索:为指定设备或整个网络强制开启 Google、Bing、DuckDuckGo、YouTube 等搜索引擎的安全搜索模式,过滤成人内容。
* DNS 加密:支持将发往上游 DNS 服务器的查询通过 DNS-over-TLS (DoT)、DNS-over-HTTPS (DoH) 或 DNS-over-QUIC (DoQ) 进行加密。这可以防止 ISP 或中间人窃听或篡改您的 DNS 查询,进一步提升隐私和安全。

3.3 家长控制与内容过滤

对于有孩子的家庭,AdGuard Home 提供了实用的家长控制功能:
* 阻止成人网站:通过专门的列表阻止访问成人内容网站。
* 按服务阻止:可以一键阻止访问特定服务,如 TikTok, Facebook, Twitter, YouTube, Fortnite, Roblox 等,方便管理孩子的上网时间和内容。
* 自定义阻止规则:可以手动添加任何不希望孩子访问的网站域名。

3.4 高度自定义的过滤规则

AdGuard Home 提供了强大的自定义过滤能力:
* 自定义过滤列表:可以添加自己的域名黑名单和白名单。
* 强大的规则语法:支持 AdBlock 风格的语法,包括通配符、正则表达式等,可以实现非常精细的过滤控制。例如,你可以:
* ||example.com^:阻止 example.com 及其所有子域名。
* @@||example.com^:将 example.com 加入白名单,即使它在某个阻止列表中。
* /regex/:使用正则表达式匹配并阻止域名。
* DNS 重写(DNS Rewrites):可以将特定的域名强制解析到指定的 IP 地址。这对于访问本地网络服务(如 NAS)、内部开发测试或绕过某些地域限制(需谨慎使用)非常有用。

3.5 直观的仪表盘与查询日志

AdGuard Home 提供了一个用户友好的 Web 管理界面:
* 仪表盘:实时显示 DNS 查询总数、被拦截的查询数量、平均处理时间、Top 查询域名、Top 被拦截域名、Top 客户端等统计信息,让您对网络活动一目了然。
* 查询日志:详细记录每一条 DNS 查询请求,包括请求时间、客户端 IP、请求域名、状态(已处理、被阻止、缓存等)、响应内容和处理时间。这对于排查问题(例如某个网站无法访问)或了解哪些设备在“偷偷”联网非常有用。您可以按客户端、域名、状态等进行筛选和搜索。

3.6 DHCP 服务器功能(可选)

AdGuard Home 内置了一个 DHCP 服务器功能。如果启用,它可以取代您路由器上的 DHCP 服务器,负责为网络内的设备分配 IP 地址。这样做的好处是:
* 自动配置客户端 DNS:新设备加入网络时,会自动获取 AdGuard Home 作为其 DNS 服务器,无需手动配置。
* 更精细的客户端识别:可以通过 MAC 地址或主机名识别客户端,方便后续进行基于客户端的策略设置。

注意:启用此功能前,请务必禁用您路由器上的 DHCP 服务器,避免 IP 地址冲突。

3.7 客户端管理与策略

AdGuard Home 允许您对不同的客户端(设备)应用不同的设置:
* 识别客户端:可以通过 IP 地址、MAC 地址(需启用 DHCP 或手动添加)或客户端 ID(某些 DNS 加密协议支持)来识别不同的设备。
* 自定义设置:可以为特定客户端(如孩子的平板电脑)启用更严格的过滤规则(如家长控制、强制安全搜索),而对其他设备(如工作电脑)应用不同的策略或不过滤。
* 标签管理:可以为客户端打上标签(如 “Kids”, “Work”, “IoT”),然后基于标签批量应用设置。

第四章:扬帆起航 —— AdGuard Home 的安装与配置

AdGuard Home 的安装方式灵活多样,可以适应不同的软硬件环境。

4.1 选择合适的运行环境

  • 树莓派(Raspberry Pi):非常流行的选择,功耗低,成本可控,足以满足一般家庭网络的需求。
  • NAS(网络附加存储):许多 NAS 设备支持 Docker,可以轻松运行 AdGuard Home 容器。
  • 旧电脑或笔记本:安装 Linux 发行版(如 Ubuntu Server, Debian)后运行 AdGuard Home。
  • 虚拟机(VM):在现有的服务器或 PC 上创建虚拟机运行。
  • 云服务器(VPS):如果您希望随时随地使用自己的 DNS 过滤器,可以部署在云端。
  • 支持的路由器:部分 OpenWrt 或其他可定制固件的路由器可以直接安装 AdGuard Home。

4.2 常见安装方法

  • Docker(推荐)

    • 优点:环境隔离,部署、更新、迁移方便,不污染宿主系统。
    • 步骤:安装 Docker -> 拉取 AdGuard Home 镜像 (docker pull adguard/adguardhome) -> 运行容器,映射必要的端口(通常是 53 UDP/TCP 用于 DNS,以及 Web 管理界面的端口如 3000 或 80/443)。
      bash
      docker run --name adguardhome \
      --restart unless-stopped \
      -v /my/adguardhome/work:/opt/adguardhome/work \
      -v /my/adguardhome/conf:/opt/adguardhome/conf \
      -p 53:53/tcp -p 53:53/udp \
      -p 80:80/tcp # 或者其他 Web 端口
      -p 443:443/tcp # 如果配置 HTTPS
      -p 853:853/tcp # 如果配置 DoT
      # -p 784:784/udp # 如果配置 DoQ (实验性)
      adguard/adguardhome

      (请根据实际情况修改卷映射路径和端口)
  • 官方脚本安装(Linux)

    • 优点:简单快捷。
    • 步骤:在终端执行官方提供的安装脚本 curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v。脚本会自动下载对应架构的二进制文件并设置为系统服务。
  • 手动下载二进制文件

    • 优点:灵活,适用于不支持脚本或 Docker 的环境。
    • 步骤:从 AdGuard Home 的 GitHub Releases 页面下载对应操作系统和架构的压缩包 -> 解压 -> 运行可执行文件 (sudo ./AdGuardHome -s install 可安装为服务)。

4.3 初始配置向导

首次运行 AdGuard Home 后,通过浏览器访问其 Web 界面(例如 http://<服务器IP>:3000http://<服务器IP>,取决于您的端口设置)。会进入一个简单的设置向导:

  1. 欢迎页面:点击“开始配置”。
  2. 设置管理界面端口和 DNS 端口:通常保持默认(管理界面 80/443,DNS 53)。如果端口已被占用,需要修改。
  3. 创建管理员账户:设置用户名和强密码。
  4. 完成:向导会提示如何将设备或路由器的 DNS 指向 AdGuard Home。

4.4 配置客户端使用 AdGuard Home

要让 AdGuard Home 发挥作用,需要将网络中的设备或路由器的 DNS 服务器地址指向运行 AdGuard Home 的那台机器的 IP 地址。

  • 方法一:在路由器上配置(推荐,全局生效)

    1. 登录路由器的管理界面。
    2. 找到 DHCP 服务器或网络设置中的 DNS 服务器配置项。
    3. 将首选(Primary)DNS 服务器地址修改为 AdGuard Home 所在机器的 内网 IP 地址
    4. (可选)将备用(Secondary)DNS 服务器留空,或设置为另一个 AdGuard Home 实例(如果做了高可用),或者设置为一个可靠的公共 DNS(如 1.1.1.1,但这会绕过 AdGuard Home 的过滤,仅作为极端情况下的备用)。强烈建议仅设置 AdGuard Home 为唯一 DNS,以确保所有查询都被过滤。
    5. 保存设置并重启路由器(或者让设备重新获取 IP 地址)。网络中的设备通过 DHCP 获取 IP 时,会自动将 AdGuard Home 作为 DNS 服务器。
  • 方法二:在单个设备上手动配置

    1. 进入设备的网络设置(Wi-Fi 或有线连接)。
    2. 找到 DNS 设置,将其从“自动获取”修改为“手动”。
    3. 输入 AdGuard Home 所在机器的 内网 IP 地址 作为 DNS 服务器。
    4. 保存设置。此方法仅对该设备生效。

4.5 核心配置:过滤列表与上游 DNS

登录 AdGuard Home Web 管理界面后,进行关键配置:

  • DNS 封锁清单(Filters -> DNS blocklists)

    • AdGuard Home 默认会启用一些基础列表(如 AdGuard DNS filter)。
    • 点击“添加阻止列表”,可以从预设的推荐列表中选择(如 EasyList, EasyPrivacy, AdAway 等),或点击“添加一个自定义列表”输入列表的 URL 或本地路径。
    • 根据需要选择不同类型的列表(广告、追踪、隐私、恶意软件、成人内容等)。注意:添加过多列表可能会轻微影响性能,并可能导致误拦截(false positives)。建议从基础列表开始,按需添加。
    • 定期点击“检查更新”来获取最新的列表规则。
  • 上游 DNS 服务器(Settings -> DNS settings -> Upstream DNS servers)

    • 这里设置 AdGuard Home 在处理未被阻止的查询时,向哪些 DNS 服务器请求解析。
    • 可以输入公共 DNS 服务器的 IP 地址(如 8.8.8.8, 1.1.1.1)。
    • 强烈推荐使用加密 DNS:输入 DoH/DoT/DoQ 的地址。例如:
      • Cloudflare DoH: https://cloudflare-dns.com/dns-query
      • Cloudflare DoT: tls://1.1.1.1
      • Google DoH: https://dns.google/dns-query
      • Google DoT: tls://dns.google
      • AdGuard DNS DoH: https://dns.adguard-dns.com/dns-query
      • AdGuard DNS DoT: tls://dns.adguard-dns.com
    • 可以配置多个上游服务器,AdGuard Home 支持并行查询(Parallel requests)以提高速度,或负载均衡(Load balancing)。
  • DNS 服务设置(Settings -> DNS settings)

    • 拦截模式:选择如何响应被阻止的域名(默认、NXDOMAIN、空 IP 地址等)。
    • DNSSEC:建议启用,验证 DNS 响应的真实性,防止 DNS 欺骗。
    • 访问设置:可以限制哪些 IP 地址可以使用此 AdGuard Home 实例。

第五章:进阶玩法与维护

5.1 高级规则与排错

  • 查询日志是你的好朋友:当某个网站或应用无法正常工作时,首先检查查询日志。查找被阻止(Blocked)的相关域名,尝试将其临时或永久添加到白名单(在查询日志条目后点击“解除阻止”,或手动在“自定义过滤规则”中添加 @@||example.com^ 规则)。
  • 自定义过滤规则(Filters -> Custom filtering rules):熟练运用规则语法可以实现非常灵活的控制。例如,阻止特定设备的 Facebook 访问:client(<设备IP或名称>)~facebook.com (需要先在客户端设置中识别设备)。
  • DNS 重写(Filters -> DNS rewrites):常用于访问内网服务。例如,将 nas.local 解析到 192.168.1.100:添加规则 nas.local -> 192.168.1.100

5.2 启用 DNS 加密(客户端到 AdGuard Home)

如果希望设备与 AdGuard Home 之间的 DNS 查询也加密(例如在公共 Wi-Fi 环境下使用手机连接家里的 AdGuard Home),可以在“设置” -> “加密设置”中启用 DNS-over-HTTPS 或 DNS-over-TLS,并配置域名和证书。客户端设备也需要相应配置才能使用加密连接。

5.3 保持更新

  • AdGuard Home 程序更新:定期关注 AdGuard Home 的新版本发布(GitHub 或 Web 界面提示),及时更新以获取新功能和安全修复。Docker 用户只需拉取新镜像并重新创建容器即可。
  • 过滤列表更新:在“DNS 封锁清单”页面设置自动更新间隔(如每天一次),确保拦截规则保持最新。

5.4 备份配置

AdGuard Home 的配置主要存储在 AdGuardHome.yaml 文件(或其他配置文件,取决于安装方式)和工作目录(通常包含查询日志、统计数据等)中。定期备份这些文件/目录,以便在系统故障或迁移时快速恢复。Docker 用户备份映射出来的卷即可。

第六章:权衡利弊 —— AdGuard Home 是否适合你?

优势(Pros):

  • 彻底的网络净化:一次部署,保护所有设备,效果显著。
  • 隐私掌控:自托管意味着数据完全在自己手中,DNS 查询不经过第三方(除了你选择的上游)。
  • 高度可定制:从过滤规则到客户端策略,提供极高的灵活性。
  • 节省带宽和资源:阻止广告和追踪器加载,可以节省少量带宽,并减轻客户端设备的负担。
  • 学习与乐趣:对于技术爱好者来说,搭建和维护 AdGuard Home 是一个有趣的学习过程。
  • 成本效益:软件免费,硬件成本(如树莓派)一次性投入,长期使用成本低。

劣势(Cons):

  • 需要一定的技术门槛:虽然有向导和图形界面,但安装、配置和排错仍需要一些基础的网络和 Linux/Docker 知识。
  • 需要额外的硬件:需要一台长期运行的设备。
  • 单点故障风险:如果 AdGuard Home 服务器宕机,整个网络的 DNS 解析会中断(除非配置了备用方案)。需要考虑其稳定性和维护。
  • 可能导致网站或应用“破损”:过于激进的过滤列表或自定义规则可能会误拦截正常功能所需的域名,需要花时间排查和调整白名单。
  • 维护成本:需要定期更新软件和过滤列表,关注运行状态。

第七章:结语

自托管 DNS 过滤,特别是通过 AdGuard Home 这样的优秀工具,为我们提供了一个前所未有的机会来重新掌控自己的网络环境。它不仅仅是一个广告拦截器,更是一个强大的网络瑞士军刀,能够显著提升浏览体验、保护个人隐私、增强网络安全,并为家庭网络管理带来便利。

虽然部署和维护 AdGuard Home 需要一些投入和学习,但其带来的价值——一个更清爽、更安全、更自由的网络世界——对于许多关注数字生活质量的用户来说,是完全值得的。如果你厌倦了无孔不入的广告和追踪,希望为家人(尤其是孩子)构建一个更安全的上网环境,并且愿意动手实践,那么 AdGuard Home 无疑是一个值得深度探索和部署的利器。它让你真正成为自己数字领地的主人。


发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部