使用 AdGuard Home 防 DNS 污染及去广告
简单记录下 AdGuard Home 的使用。
是什么
AdGuard Home是一款开源的 DNS 服务器。它能够过滤所有进入网络的流量,并屏蔽不需要的内容,如广告、跟踪器和恶意网站。部署方便、UI 友好易用,有着防污染、防跟踪、防篡改的能力,其次才是它的去广告、反跟踪功能,是通过重定向 DNS 解析记录实现的。
为什么我要使用 AdGuard Home
避免 DNS 污染。运营商经常使用 DNS 投毒来引导用户去使用他们的 缓存服务器,从而降低运营商带宽负载;或者劫持解析将用户引导去他们已经插入了广告的镜像站点,从而获利;或者为了国家相关法律政策要求或者运营商自己的需求屏蔽一些网站的访问(如辽宁联通曾将工信部举报站点的域名解析至 127.0.0.1
);或者自行篡改 TTL(DNS 结果缓存时间)降低 DNS 的负载,结果就是解析结果不能尽快更新;或者对于不正确的域名给你返回一个满是广告的页面,等等。即使运营商非常良心不使用 DNS 做坏事,也有可能因为设备没有及时扩容或者维护不善而导致不佳的体验。
AdGuard Home 的功能
- 广告拦截: AdGuard Home 有效拦截各类广告,包括弹窗广告、横幅广告和视频广告,覆盖网络上所有设备。
- 隐私保护: 阻止追踪脚本和恶意域收集您的数据,增强在线隐私。
- 家长控制: 用户可以设置家长控制,限制访问特定网站和内容类别。
- 自定义过滤规则: 用户可根据个人喜好创建自定义过滤规则,以阻止或允许特定内容。
- 支持 DNS-over-HTTPS: AdGuard Home 支持 DNS-over-HTTPS,进行加密安全的 DNS 解析。
工作原理
通过拦截网络上所有设备的DNS请求来运行。当用户尝试访问网站时,AdGuard Home会将请求的域名与其拦截列表进行比对。如果在拦截列表中发现该域名(例如已知的广告服务器、跟踪器或恶意网站),AdGuard Home将阻止请求,防止不需要的内容加载到用户的设备上。这个过程实时发生,确保用户在浏览网页时受到广告和跟踪脚本的保护。
设置
上游 DNS 服务器
附上我的设置:
1 | tls://dns.pub |
国内不推荐使用任何海外的 DNS ,因为延迟很高且都受到了不同程度的干扰,可用性不高,强行设置只会得到减速效果或者报错。
分流
把规则写在 上游 DNS 服务器 中就能实现分流,参考官网文档
从文件加载上游:
当然如果你要上更全的规则那就使用从文件加载上游因为web网页可能放不下这些规则
打开AdGuard Home的配置文件:AdGuardHome.yaml其中有一个upstream_dns_file参数 在它的后面填写文件路径,文件命名为DNs.yaml就可以。
例:upstream_dns_file: /opt/adguardhome/conf/DNS.yaml
DNS请求方式
负载均衡:使用加权随机算法来选择最快的服务器。实际其实就是随机选择一个上游 DNS 服务器中的一个进行解析请求,哪个延迟低就更偏向于用哪一个。
并行请求:同时请求所有上游 DNS 服务器,取最快给出的响应结果,所以解析速度很快。在上游 DNS 服务器设置合理的情况下属于万金油方案,解析速度和访问速度都很快。所以也非常适合上游 DNS 服务器连接延迟大和不稳定的情况,就比如科学魔法爱国上网使用场景。
最快的 IP 地址:同时请求所有上游 DNS 服务器,在所有响应结果中选出延迟最低且可用的 IP。因为要等待所有上游 DNS 服务器响应结果,而且还要测试 IP 延迟及可用性,所以解析速度会很慢。只适合上游 DNS 服务器延迟特别低且网络非常稳定的场景,否则实际使用中可能会遇到首次打开网页非常慢,甚至可能打不开,要多刷新几次。再者低延迟 IP 不一定速度就快,还要看实际负载情况,所以这个方案的实际可用性是最差的。
Bootstrap DNS 服务器
Bootstrap DNS 服务器(引导 DNS 服务器)的作用只是解析上游 DoT/DoH 技术 DNS 服务器的域名,所以这里需要填写使用 UDP 协议的传统 DNS 服务器 IP 地址。
中国大陆
1 | 119.29.29.29 |
国际
1 | 8.8.8.8 |
设置完点击测试上游服务器,没有问题点保存即可。
使用后面将要提到的 DNS 重写功能把 DoT/DoH DNS 服务器的域名直接指向它的 IP 是一种更优雅的使用方式。
DNS 服务设定
- 速度限制:
0
- 使用 EDNS :前面提及的上游 DNS 服务器都是支持 EDNS (ECS) 的,它有助于获取到更合适的 CDN 节点,建议勾选。
- 使用 DNSSEC : 用于效验 DNS 记录的签名,防止 DNS 缓存被投毒,建议勾选。勾选后会在日志页面请求列显示小绿锁图标。
- 禁用 IPv6 :丢弃 IPv6 的 DNS 查询。在本地网络和网站都支持 IPv6 会优先使用 IPv6 去访问网站,但目前 IPv6 的建设还处于初级阶段,大多数地区的 IPv6 网络体验都一般。还有一些代理软件对 IPv6 支持不佳,开启后可能会影响国际互联网的访问。如果对此没有特殊需求,那么直勾选即可,这样既不影响 BT 软件连接 IPv6 网络,又可以优先使用 IPv4 来上网。如果只有 IPv4 ,那么是否勾选没有区别。
DNS 缓存配置
TTL ,它是英语 Time To Live 的简称,中文翻译为“存活时间”。放在 DNS 解析中意为一条域名解析记录在 DNS 服务器中的存留时间,单位是秒。
正常情况下 TTL 默认0即可,即从上游 DNS 服务器获取 TTL 值。如果你所部署的网络环境到上游 DNS 服务器的延迟比较高,那么可以适当增加 TTL 值,让缓存更持久,短时间内请求同样域名的解析会直接从缓存中读取,实现秒解析。不过 TTL 值不宜过大,不然会导致记录不能及时更新,结果是网站无法正常打开。据博主观察目前多数域名的 TTL 值普遍在 300 以内,所以给出以下设置参考值:
覆盖最小 TTL 值:600
覆盖最大 TTL 值:3600
过滤器
使用官方默认的 AdGuard DNS filter 规则的效果对于中国大陆的网络而言属于聊胜于无,所以需要添加一些其它的规则。然而规则并不是越多越好,多了会影解析速度,真正需要的是高质量。
比较推荐 anti-AD 和 halflife 这两个规则。
anti-AD https://anti-ad.net/easylist.txt
halflife
也可以参考这个
https://github.com/felixonmars/dnsmasq-china-list
DNS 重写
在这里你可以方便的把一个域名指向一个 IP ,简单来说这个功能相当于 hosts 。
最典型的一个使用场景是把 DoH/DoT DNS 服务器的域名直接指向它们的 IP ,这样就不再需要进行我查我自己这样浪费时间的迷惑操作了,可进一步加快解析的速度。一般来说 DoT/DoH DNS 服务器的 IP 是固定的,而且 IP 地址和它们自家的传统 DNS 服务器的 IP 是一致的。
参考
AdGuard Home 是什么?为什么无法去广告?
AdGuard Home 自建 DNS 防污染、去广告教程 #1 - 安装部署详解(Docker)
AdGuard Home 自建 DNS 防污染、去广告教程 #2 - 优化增强设置详解 - P3TERX ZONE
AdGuard Home 安装及使用指北 - 少数派