AdGuard Home 家庭 DNS 去广告实战:一条命令,全家设备告别广告
相信不少朋友和我一样,浏览器里装着 uBlo…
相信不少朋友和我一样,浏览器里装着 uBlock Origin,手机上却照样被开屏广告烦得不行。原因很简单:浏览器插件只能管浏览器,App 里的广告、智能电视的开机广告、甚至家里 IoT 设备偷偷往上报的数据,它统统拦不住。要彻底解决,得在网络入口动手——也就是 DNS 层。今天分享一个我用了挺久的方案:AdGuard Home。
AdGuard Home 是个开源的网络级广告拦截和隐私保护工具,本质是一台你自己控制的 DNS 服务器。所有经过它的域名解析请求,都会被拿去和过滤规则比对一遍,广告、跟踪、恶意域名在 DNS 层就直接被丢掉,根本到不了你的设备。它支持 Docker 部署、自带 Web 管理界面,跑在一台树莓派或闲置 VPS 上绰绰有余。
部署:Docker 一条命令搞定
先把配置目录建好,再启动容器:
mkdir -p /opt/adguardhome/{work,conf}
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 3000:3000/tcp \
adguard/adguardhome
然后浏览器打开 http://服务器IP:3000 走完初始化向导,设置好 Web 管理端口和 DNS 监听端口即可。不想用 Docker 的话,官方也提供一键安装脚本:
curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v
新手最容易踩的坑:53 端口被占用
很多发行版默认开着 systemd-resolved,它霸占了 53 端口,会导致 AdGuard Home 起不来。解决方法是把它停掉:
sudo systemctl disable --now systemd-resolved
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
或者更省事一点,编辑 /etc/systemd/resolved.conf,把 DNSStubListener=no 打开并重启服务,也能把 53 端口让出来。
配好规则,再让全家生效
装好之后,在「设置 → DNS 设置」里配上上游服务器。我习惯用 Cloudflare 的 1.1.1.1 和 DNSPod 的 119.29.29.29 做备份,再勾上 DoH 更安全。然后在「过滤器」里启用内置规则,并订阅几条中文广告规则列表。
最后也是最关键的一步:登录路由器,把 DHCP 下发的 DNS 改成 AdGuard Home 的地址。改完之后,家里所有设备——手机、平板、电视、电脑——都会自动走这台 DNS,广告和跟踪脚本在源头就被拦掉。控制台里还能看到每台设备各拦了多少条,清清楚楚。
相比一台台设备装插件,在 DNS 层做统一拦截省心又彻底。唯一要留意的是,DNS 服务挂了会影响全家上网,所以建议把它跑在常开的设备上,并给路由器配一个备用 DNS。被广告和隐私追踪烦着的朋友,今晚就能动手试试。
