AdGuard Home DNS广告过滤:自建去广告DNS服务器

## 为什么要搞这个 公司网络里总有同事抱怨网页弹窗多、视频开头广告烦人。路由器的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
喜欢就支持一下吧
点赞14 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容