AdGuard Home 部署指南:自建 DNS 服务器拦截广告和追踪
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 -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v
安装完成后会自动启动并注册为系统服务。
方法二:手动安装
cd /opt
wget https://github.com/AdguardTeam/AdGuardHome/releases/latest/download/AdGuardHome_linux_amd64.tar.gz
tar -xvzf AdGuardHome_linux_amd64.tar.gz
cd AdGuardHome
sudo ./AdGuardHome -s install
方法三:Docker
mkdir -p /opt/adguard/{work,conf}
docker run -d \
--name adguard-home \
-p 3000:3000/tcp \
-p 53:53/tcp \
-p 53:53/udp \
-p 853:853/tcp \
-v /opt/adguard/work:/opt/adguardhome/work \
-v /opt/adguard/conf:/opt/adguardhome/conf \
--restart unless-stopped \
adguard/adguardhome:latest
初始配置
访问 http://服务器IP:3000 进行初始设置:
- 选择管理界面端口(默认 3000)和 DNS 监听端口(默认 53)
- 创建管理员账号密码
- 完成设置向导
开放防火墙端口
sudo ufw allow 53/tcp # DNS(TCP)
sudo ufw allow 53/udp # DNS(UDP)
sudo ufw allow 853/tcp # DNS-over-TLS
sudo ufw allow 3000/tcp # Web UI
如果服务器的 53 端口已被 systemd-resolved 占用:
# 查看占用情况
sudo ss -tlnp | grep :53
# 禁用 systemd-resolved 的 DNS 监听
sudo nano /etc/systemd/resolved.conf
# 添加:DNSStubListener=no
sudo systemctl 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,随时随地都有广告拦截保护。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)