为什么需要广告过滤?
浏览器装插件只能过滤网页广告,手机 App、电视、IoT 设备的广告管不了。AdGuard Home 是 DNS 级别的解决方案——在路由器层面拦截广告域名,全网所有设备自动生效。
实际效果:
- ✅ 手机 App 开屏广告消失
- ✅ 电视盒子广告过滤
- ✅ 网页弹窗、追踪器拦截
- ✅ YouTube 广告减少(配合规则)
- ✅ 提升网页加载速度,节省带宽
技术原理
设备请求广告域名 → AdGuard Home 拦截 → 返回 0.0.0.0 → 广告加载失败
设备请求正常域名 → AdGuard Home 转发 → 返回真实 IP → 正常访问
部署步骤
第一步:创建项目目录
mkdir -p ~/docker/adguard
cd ~/docker/adguard
第二步:编写 docker-compose.yml
services:
adguard:
image: adguard/adguardhome:latest
container_name: adguard
restart: unless-stopped
ports:
- "53:53/tcp" # DNS 服务
- "53:53/udp" # DNS 服务
- "3000:3000" # 管理面板
volumes:
- ./work:/opt/adguardhome/work # 工作数据
- ./conf:/opt/adguardhome/conf # 配置文件
environment:
- http_proxy= # OrbStack 代理兼容
- https_proxy=
- ALL_PROXY=
第三步:启动容器
docker compose up -d
第四步:初始化设置
- 浏览器打开
http://你的NAS-IP:3000 - 按向导设置管理员账号密码
- DNS 监听端口保持默认 53
第五步:配置上游 DNS
进入 设置 → DNS 设置 → 上游 DNS 服务器,添加:
https://doh.pub/dns-query # 腾讯 DoH
https://dns.alidns.com/dns-query # 阿里 DoH
https://doh.360.cn/dns-query # 360 DoH
https://1.1.1.1/dns-query # Cloudflare
https://dns.quad9.net/dns-query # Quad9(安全)
国内优先走腾讯/阿里,速度快;Cloudflare/Quad9 作为备用。
第六步:加载广告过滤规则
进入 过滤器 → DNS 黑名单,添加以下规则:
| 规则名称 | 地址 | 规则数 |
|---|---|---|
| Anti-AD | https://anti-ad.net/easylist.txt | 12万+ |
| CJX’s Annoyance List | https://cjxlist.github.io/cjxlist.txt | 5万+ |
| AdAway Default Blocklist | https://adaway.org/hosts.txt | 5万+ |
| AdRules CN | https://raw.githubusercontent.com/banbendalao/ADgk/master/ADgk.txt | 6万+ |
总计 28万+ 条过滤规则。
第七步:路由器配置
进入路由器管理后台,将 DHCP 的 DNS 服务器 指向 AdGuard Home 所在设备的 IP。
以锐捷路由器为例:
- 登录路由器后台
- 网络设置 → DHCP 设置
- 主 DNS 服务器填 NAS IP(如
192.168.110.10) - 保存并重启路由器
管理面板功能
访问 http://NAS-IP:3000 可以:
| 功能 | 说明 |
|---|---|
| 仪表盘 | 实时查看查询量、拦截率、Top 域名 |
| 查询日志 | 查看每个 DNS 请求和拦截状态 |
| 黑名单 | 自定义屏蔽域名 |
| 白名单 | 误杀域名放行 |
| 客户端 | 查看各设备的请求统计 |
| 安全设置 | 恶意软件/钓鱼网站拦截 |
进阶配置
自定义屏蔽规则
在 过滤器 → 自定义过滤规则 中添加:
||ads.example.com^ # 屏蔽整个域名
@@||example.com^ # 白名单放行
||example.com^$third-party # 只屏蔽第三方请求
开启 DNS-over-HTTPS
在 设置 → DNS 设置 → 加密 DNS 中启用:
- 监听端口 443
- 配置 SSL 证书
- 支持 DoH/DoT/DoQ
按设备差异化策略
在 设置 → 客户端设置 中可以:
- 为不同设备设置不同过滤规则
- 某些设备跳过过滤(如 IoT 设备)
- 按设备查看统计数据
坑
⚠️ OrbStack 代理问题:OrbStack 会注入 http_proxy,必须在 compose 中显式清空,否则容器内网络异常。
⚠️ 端口冲突:如果 Mac 上已有 dnsmasq 或其他 DNS 服务占用 53 端口,需要先停掉或改端口。
⚠️ 路由器 DNS 缓存:修改路由器 DNS 后,设备可能需要重启或等 DHCP 租约过期才生效。可以手动在设备上刷新:
# macOS
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
# Windows
ipconfig /flushdns
验证是否生效
# 测试广告域名是否被拦截
nslookup ads.example.com 192.168.110.10
# 应该返回 0.0.0.0
# 测试正常域名是否能解析
nslookup baidu.com 192.168.110.10
# 应该返回真实 IP