与其给每台设备装拦截插件,不如在局域网里架一台 DNS 过滤器

家里设备一多,去广告就成了件麻烦事。手机装个浏览器插件,电脑再装一个,智能电视和那一堆 IoT 小设备基本没辙——它们要么不支持装插件,要么系统锁死。更别提家里人各自用各自的设备,你拦了别人还在看。

后来我换了个思路:不去拦”设备”,去拦”域名”。所有设备上网第一步都是 DNS 查询,只要让全屋的 DNS 请求先过一台我自己控制的过滤器,广告和追踪域在解析阶段就被干掉,设备本身什么都不用装。干这事最顺手的,就是 AdGuard Home

它到底是什么

AdGuard Home 是个跑在局域网里的网络级广告/追踪拦截器,Go 写的,开源(GPL-3.0),一个 Docker 镜像就能起。它接管你网络的 DNS,对外表现得就像个正常的 DNS 服务器,但背后挂着一大堆过滤规则。设备问”ads.example.com 在哪”,它直接返回空,广告请求根本发不出去。

和浏览器插件比,最大的区别是无感且全覆盖:十来年的老电视、智能音箱、甚至你根本碰不到系统的公司配的平板,只要连的是你家网络、DNS 走这台,就都被拦了。而且它是”全屋统一策略”,不用逐台维护。

怎么跑起来

我把它扔在常开的那台小主机上(就是 NAS 旁边那台),一条 Docker 命令起好,核心是把 53 端口(DNS)和初始配置用的 3000 端口映射出来:

docker run -d 
  --name adguardhome 
  --restart=unless-stopped 
  -v /opt/adguardhome/work:/opt/adguardhome/work 
  -v /opt/adguardhome/conf:/opt/adguardhome/conf 
  -p 53:53/tcp -p 53:53/udp 
  -p 80:80/tcp -p 443:443/tcp 
  -p 3000:3000/tcp 
  -p 853:853/tcp -p 784:784/udp 
  adguard/adguardhome

第一次访问 3000 端口会走一个初始化向导,设好管理员密码、选上游 DNS(我用的带 DoH 的公共解析),再把监听端口定下来。向导走完,面板就常驻在 80/443 上了。更多端口(DoQ 等)在 Docker Hub 的镜像说明里都能查到,按需要开。

关键一步是把路由器 DHCP 下发的 DNS 指到这台 AdGuard Home 的地址。这样新设备一连 Wi-Fi 就自动用它解析,不用逐台改。软路由上更简单,直接在 DNS 转发里填过去就行。

添加客户端并单独配置规则

好玩的地方:按设备分策略

全屋一套规则虽然省事,但有时候需要区别对待。比如小孩的平板想拦得狠一点,自己的手机保留某些白名单。AdGuard Home 的”客户端”功能可以给每台设备(按 IP 或 MAC 识别)单独套规则、单独统计。

客户端配置界面,可单独套规则与统计

统计看板,可见各客户端查询与拦截量

面板里还能直接看到谁在疯狂请求广告域名、今天总共拦了多少、Top 被拦域名排行。那种”原来我家的智能电视每天偷偷回调几百次追踪器”的顿悟,基本都是从这块看板来的。

顺手能干的别的

除了拦广告,它还能干点周边活:自定义 DNS 重写(把某个内网域名指到固定 IP,等于轻量 hosts)、上游走 DoH/DoT 加密防嗅探、甚至当个简单的家庭内部 DNS 服务器。更新也省心,面板里点一下就能升,不用手动去拉镜像。

面板内提示有新版本可更新

几个坑

端口 53 冲突。小主机上如果已经跑了别的 DNS 服务(dnsmasq、systemd-resolved 之类),AdGuard Home 起不来。先腾出 53,或者让它监听别的端口再转发过去。

它拦不了 HTTPS 流量里的广告。DNS 层只能按域名拦,那种把广告和正片塞进同一个域名的视频站,它没辙——那是内容层拦截的活,得靠别的手段。别指望一台 DNS 过滤器解决所有广告。

它是单点故障。DNS 一挂,全家断网(解析不了域名)。所以我留了备用 DNS,真出问题时设备能 fallback,不至于全员失联。真要稳,可以考虑两台做冗余。

规则别贪多。一股脑叠十几个大列表,误杀正常域名的概率直线上升,某些网站功能会诡异失效。先用默认列表,按需再加,出问题再排。

别裸奔到公网。面板有管理权,千万别不加密码直接暴露。我只在局域网里用,需要远程就走内网穿透,不开放公网端口。

小结

折腾下来,AdGuard Home 是我家里”投入产出比”最高的小服务之一。一次部署,全屋设备(包括那些你碰不了系统的)一起清净,还能反过来看清家里到底哪些设备在偷偷打电话。如果你也烦透了给每台设备装插件,建议从它开始。

发表评论