## 为什么要搞这个
公司网络里总有同事抱怨网页弹窗多、视频开头广告烦人。路由器的hosts屏蔽太死板,浏览器插件管不了APP。AdGuard Home就是解决这个的——它是个DNS服务器,在DNS层面直接干掉广告域名,所有设备都生效,不用装任何客户端。
## 部署方案
我用的是雨云的2核4G云服务器,月费几十块,跑AdGuard Home绰绰有余。当然你也可以用树莓派、NAS或者任何Linux机器。
### 安装(Docker方式,最省事)
# 创建目录
mkdir -p /opt/adguardhome
cd /opt/adguardhome
# 拉镜像启动
docker run --name adguardhome \
-v ./work:/opt/adguardhome/work \
-v ./conf:/opt/adguardhome/conf \
-p 53:53/tcp -p 53:53/udp \
-p 80:80/tcp \
-p 3000:3000/tcp \
--restart unless-stopped \
-d adguard/adguardhome:latest
注意:53端口可能被systemd-resolved占用,先停掉:
systemctl stop systemd-resolved
systemctl disable systemd-resolved
### 初始化配置
浏览器访问 `http://你的IP:3000`,按向导走:
1. 管理界面端口:默认80,我改成8080避免冲突
2. DNS监听端口:53,别动
3. 认证:设个强密码
## 核心配置
### DNS设置
上游DNS服务器我填了这几个,国内解析快:
https://doh.pub/dns-query
https://dns.alidns.com/dns-query
tls://dns.google
勾选”并行请求”,哪个快用哪个。
### 过滤规则
AdGuard Home自带一些规则,但不够。我加了几组:
基础去广告
在”过滤器” -> “DNS封锁清单”里添加:
https://raw.githubusercontent.com/AdguardTeam/AdguardFilters/master/BaseFilter/sections/adservers.txt
https://raw.githubusercontent.com/AdguardTeam/AdguardFilters/master/ChineseFilter/sections/adservers.txt
补充规则
https://raw.githubusercontent.com/neoFelhz/neohosts/gh-pages/basic/hosts.txt
https://raw.githubusercontent.com/vokins/yhosts/master/data/hosts.txt
这些每天自动更新。注意别加太多,规则多了查询会变慢。
### 客户端设置
路由器层面(一劳永逸)
登录路由器管理界面,把DHCP的DNS改成AdGuard Home的IP。这样所有设备自动生效。
单设备测试
Windows:网络属性 -> IPv4 DNS 改为服务器IP
Mac:系统设置 -> 网络 -> DNS 添加服务器IP
手机:WiFi设置 -> 静态IP -> DNS填IP
## 验证效果
打开 `http://你的IP:80`(或者你改的端口),看”查询日志”。正常访问百度,日志里应该有 `baidu.com` 的解析记录。再访问个带广告的网站,
命令行验证:
# Linux/Mac
dig @你的IP baidu.com
dig @你的IP doubleclick.net # 应该返回0.0.0.0
# Windows
nslookup baidu.com 你的IP
nslookup doubleclick.net 你的IP # 应该显示"找不到"
## 调优技巧
### 缓存加速
设置 -> DNS设置 -> 缓存大小:默认4MB太小,改成64MB。缓存时间设成3600秒(1小时),减少上游查询。
### 白名单
有些网站被误封(比如某些正经视频站的广告域名和视频CDN域名混在一起),在”查询日志”里找到被封锁的域名,右键”取消封锁”。
### 安全设置
启用DNSSEC验证,防止DNS劫持。启用EDNS客户端子网,让CDN正确分发内容。
### 更新策略
设置里勾选”自动更新过滤器”,每天凌晨3点更新规则。同时打开”过滤器的安全检查”,避免规则文件出问题。
## 注意事项
– 53端口别跟其他服务冲突,特别是Kubernetes的CoreDNS
– 如果公司网络有多个子网,确保AdGuard Home能访问到所有子网的DNS查询
– 雨云的服务器默认安全组要放行53端口(TCP和UDP),以及你改的管理端口
– 规则更新频率别太高,一天一次够了,频繁更新浪费流量
## 监控和报警
AdGuard Home自带仪表盘,看查询量、封锁率、响应时间。我一般关注两个指标:
– 封锁率低于15%说明规则太弱
– 响应时间超过200ms说明上游DNS有问题
可以用Prometheus + Grafana进一步监控,不过单机场景没必要。
这套方案在我这边跑了半年,每天封锁几千次广告请求,同事反馈网页干净多了。雨云那台机器负载常年低于10%,完全够用。
雨云是国内一家老牌云服务商,提供高性价比的云服务器和虚拟主机。我用它部署了好几个项目,速度和稳定性都不错。通过 https://www.rainyun.com/SAJA_ 注册可以领一张 5折优惠券,有需要的朋友可以看看。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END



暂无评论内容