ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

AdGuard Home 配置指南:从 DNS 过滤到日志监控,如何验证每一步

AdGuard Home 配置指南:从 DNS 过滤到日志监控,如何验证每一步

AdGuard Home 配置指南:从 DNS 过滤到日志监控,如何验证每一步

【免费下载链接】AdGuardHomeNetwork-wide ads & trackers blocking DNS server项目地址: https://gitcode.com/gh_mirrors/ad/AdGuardHome

AdGuard Home 是一台面向整网的 DNS 过滤服务器,价值在于设备访问域名时,由它统一拦截广告、追踪与恶意请求。上手不必逐条背参数,按"先连上游、再配过滤、最后看效果"的任务流走一遍即可。本文拆成 6 个环节,每个环节都讲清为什么、怎么做、怎么确认。

先看清 AdGuard Home 在整网里的位置

配置前,建议先理解一条解析请求走过的完整路径。客户端把域名发给 AdGuard Home 后,它不会直接给结果,而是先按本地规则判断这条请求要不要拦截或改写,再决定是否放行,或把没命中的查询转给上游 DNS 处理。

换句话说,上游 DNS、过滤规则、日志分别落在请求链的不同位置。把这条链路想明白,后面每一步配置都能对号入座。

上图展示 AdGuard Home 各组件如何协作处理 DNS 请求,可对照理解过滤、转发与记录各发生在哪一步。

适用场景:家庭或小型办公网络,想在一台设备上统一完成拦截、免去逐台设置,用它比较合适。

上游 DNS 怎么选,解析才更稳更快

上游 DNS 决定 AdGuard Home 把"自己没拦住的查询"交给谁。选错,常见表现就是解析变慢或时好时坏。

建议这样搭配:

  • 主用走加密通道,备用走普通 DNS;示例是 DoH(https://dns.adguard-dns.com/dns-query)配 DoT(tls://dns.adguard-dns.com),再加 1.1.1.1 或 8.8.8.8 做普通备用。
  • 开启并行请求,把同一条查询同时交给多个上游,取最先回包的结果,减少等待。
  • 健康检查间隔设在 30 秒左右,及时剔除掉线的上游。
  • 按地理位置挑离自己最近的服务器,延迟往往更低。

重点看解析延迟,而不是堆服务器数量。

过滤列表怎么配,兼顾拦截效果与资源占用

过滤列表是 AdGuard Home 做拦截的"弹药"。列表越多拦得越全,但内存和 CPU 开销也越高,所以按需求组合,别全都要。

一个常见起步组合:

  • 广告拦截:EasyList + EasyPrivacy
  • 隐私保护:AdGuard Tracking Protection
  • 恶意域名:MalwareDomains List

原文给的参考量级:广告拦截约 50MB、隐私保护约 30MB、恶意域名约 20MB,自定义规则随内容变化。数值会随列表版本波动,这里只当量级参考。💡

两个能降开销的动作:

  • 定期清理失效规则,实现可参考 internal/filtering/rulelist/;
  • 用"过滤器更新间隔"控制刷新频率,减少不必要的下载与解析。

接上 DHCP,让整网设备走同一套过滤

只配 DNS 过滤的话,每台设备还得单独指 AdGuard Home。接入 DHCP 后,设备拿到的地址里会自带网关和 DNS 指向,省去逐台设置。

顺序建议:

  1. 先关掉路由器自带的 DHCP 服务,避免两台 DHCP 抢地址;
  2. 再在 AdGuard Home 里设定要分发的地址段;
  3. 最后确认网关与 DNS 都指向 AdGuard Home。

原文参考数据:配置前解析延迟约 15–25ms,配置后约 8–12ms,内存增加约 10–15MB。数值因设备而异,重点在 DHCP 接管后整网延迟通常更稳。地址段与租约行为可对照 internal/dhcpd/。

怎么确认过滤真的生效:日志与统计

配完不验证,等于没配 ✅。查询日志和统计,就是"怎么确认"这一环,它们记录每条请求最终被放行、拦截还是改写。

这张图展示 DNS 请求从进入 AdGuard Home 到返回结果的生命周期,适合对照日志里的每一步。

建议开启并设好保留周期,覆盖你要观察的时间窗:

  • 查询日志保留 7 天(168h);
  • 统计保留 30 天(720h)。

有了这两类数据,可以回答三个问题:拦截效果(搜 *.doubleclick.net 看命中量)、异常访问(搜 *.phishing.com)、客户端行为(按设备维度看谁在何时请求了什么)。日志模块可参考 internal/querylog/。

常见问题:权限与端口报错怎么处理

在 Linux 上,AdGuardHome 要能绑端口、能读写配置,才能正常服务。报错常集中在两处:端口绑定失败、配置访问受限。

端口绑定的典型场景,是用非 root 用户却想占低端口。这时不必切回 root,而是给可执行文件单独加一个网络绑定能力。示例如下,路径换成你的实际安装位置:

sudo setcap 'cap_net_bind_service=+ep' /opt/AdGuardHome/AdGuardHome

DNS 抢占:若系统还开着 systemd-resolved 等服务,可能和 AdGuardHome 抢端口。先看它的状态,再决定停用还是给 AdGuardHome 换端口:

systemctl status systemd-resolved

建议先读报错,判断是端口冲突还是权限不足,再对症下药。

【免费下载链接】AdGuardHomeNetwork-wide ads & trackers blocking DNS server项目地址: https://gitcode.com/gh_mirrors/ad/AdGuardHome

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进