AdGuard Home 部署指南:自建 DNS 服务器拦截广告和追踪
AdGuard Home 是一个网络层面的广告拦截 DNS 服务器。它的原理是把广告域名的 DNS 查询直接返回空响应,让设备上的广告请求无法发出。和浏览器插件不同,AdGuard Home 在 DNS 层面拦截,覆盖范围包括所有设备、所有应用——包括手机 App 里的广告、智能电视里的追踪器。
和 Pi-hole 的区别
| 功能 | AdGuard Home | Pi-hole |
|---|---|---|
| 配置界面 | 更现代 | 较传统 |
| DNS-over-HTTPS | ✅ 内置 | 需额外配置 |
| DNS-over-TLS | ✅ 内置 | 需额外配置 |
| 家长控制 | ✅ | ❌ |
| 规则语法 | 更丰富 | 较简单 |
| 安装难度 | 更简单 | 中等 |
服务器配置
AdGuard Home 很轻量,1 核 512MB 就够一个家庭或小团队使用。我把它部署在雨云服务器 rainyun+com的入门款机型上,和其他几个服务共享一台服务器,内存占用只有 50MB 左右。注册填优惠码2026off领 5 折优惠券。
安装 AdGuard Home
方法一:一键安装脚本
curl-s-S-Lhttps://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh|sh-s---v安装完成后会自动启动并注册为系统服务。
方法二:手动安装
cd/optwgethttps://github.com/AdguardTeam/AdGuardHome/releases/latest/download/AdGuardHome_linux_amd64.tar.gztar-xvzfAdGuardHome_linux_amd64.tar.gzcdAdGuardHomesudo./AdGuardHome-sinstall方法三:Docker
mkdir-p/opt/adguard/{work,conf}dockerrun-d\--nameadguard-home\-p3000:3000/tcp\-p53:53/tcp\-p53:53/udp\-p853:853/tcp\-v/opt/adguard/work:/opt/adguardhome/work\-v/opt/adguard/conf:/opt/adguardhome/conf\--restartunless-stopped\adguard/adguardhome:latest初始配置
访问http://服务器IP:3000进行初始设置:
- 选择管理界面端口(默认 3000)和 DNS 监听端口(默认 53)
- 创建管理员账号密码
- 完成设置向导
开放防火墙端口
sudoufw allow53/tcp# DNS(TCP)sudoufw allow53/udp# DNS(UDP)sudoufw allow853/tcp# DNS-over-TLSsudoufw allow3000/tcp# Web UI如果服务器的 53 端口已被systemd-resolved占用:
# 查看占用情况sudoss-tlnp|grep:53# 禁用 systemd-resolved 的 DNS 监听sudonano/etc/systemd/resolved.conf# 添加:DNSStubListener=nosudosystemctl restart systemd-resolved配置上游 DNS
在 AdGuard Home 设置 → DNS 设置 → 上游 DNS 服务器:
# 推荐配置(DoH 加密) https://dns.alidns.com/dns-query # 阿里云 DoH https://doh.pub/dns-query # 腾讯 DoH # 备用 tls://dns.alidns.com # 阿里云 DoT 223.5.5.5 # 阿里云明文(备用)添加广告拦截规则
在 AdGuard Home 过滤器 → DNS 封锁列表 → 添加封锁列表:
推荐规则列表:
| 规则来源 | 地址 |
|---|---|
| AdGuard DNS filter | https://adguardteam.github.io/HostlistsRegistry/assets/filter_1.txt |
| EasyList | https://easylist.to/easylist/easylist.txt |
| EasyPrivacy | https://easylist.to/easylist/easyprivacy.txt |
| 中文广告过滤 | https://anti-ad.net/easylist.txt |
| 追踪器列表 | https://adguardteam.github.io/HostlistsRegistry/assets/filter_4.txt |
国内推荐(减少误杀):
https://anti-ad.net/adguard.txt:专为中文互联网优化的广告过滤规则
客户端配置
方法一:路由器配置(覆盖所有设备)
在路由器的 DNS 设置里,把主 DNS 改为服务器 IP,所有连接的设备自动走 AdGuard Home 过滤。
方法二:手动配置(单台设备)
Windows:网络适配器 → DNS 服务器:服务器IP
Android:设置 → 网络 → Wi-Fi → 修改网络 → DNS:服务器IP
iOS(使用配置文件):
# 在服务器上生成 DNS-over-TLS 配置文件cat>/tmp/dns-profile.mobileconfig<<'EOF' <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "..."> <plist version="1.0"> <dict> <key>PayloadContent</key> <array> <dict> <key>DNSSettings</key> <dict> <key>DNSProtocol</key> <string>TLS</string> <key>ServerAddresses</key> <array> <string>服务器IP</string> </array> <key>ServerName</key> <string>你的域名</string> </dict> </dict> </array> </dict> </plist> EOF配置 HTTPS/DOH 访问
配合 Caddy 让客户端通过 HTTPS 访问 AdGuard Home 管理界面并支持 DoH:
dns.你的域名.com { reverse_proxy localhost:3000 }然后在 AdGuard Home 设置里配置 DNS-over-HTTPS 地址:https://dns.你的域名.com/dns-query
白名单(防止误拦截)
如果某些网站被误拦截,可以添加白名单:
过滤器 → DNS 允许列表 → 添加或在仪表盘的查询日志里,找到被拦截的域名,点击「取消封锁」。
统计和日志
AdGuard Home 提供实时统计:
- 每日查询量
- 拦截数量和比例(通常 20–40%)
- 被拦截最多的域名(通常都是广告追踪域名)
- 最活跃的客户端
AdGuard Home 是投入产出比最高的网络工具之一——部署一次,所有设备、所有应用的广告追踪请求都被过滤,不需要在每台设备上分别安装插件。部署在雨云服务器上,家里配置路由器 DNS 指向服务器,外出时配置手机 DoH,随时随地都有广告拦截保护。