这套方案也快用一年了,还算稳定于是分享出来
0x00.前言
DNS套娃(bushi
0x01.Cloudflare Gateway
最上游使用的是Cloudflare for Teams中的Gateway,在Locations加一个位置就可以获得独一无二的DNS服务器地址,目前包含如下四种
IPv4IPv6DNS over HTTPSDNS over TLS

当然使用他家的1.1.1.1或者谷歌的8.8.8.8也是没有问题的,Gateway的优点之一在于所有查询都是有记录的

Teams的Free版本订阅可追溯至最近24h,对于家用足够了,方便进行后期二次审计

同时也有自带的分析页面,可以看到最近一季度的解析量是55M

分类占比一半多(50.3%)的是Technology

0x02.SmartDNS
SmartDNS是一个运行在本地的DNS服务器,SmartDNS接受本地客户端的DNS查询请求,从多个上游DNS服务器获取DNS查询结果,并将访问速度最快的结果返回给客户端,提高网络访问速度。
同时支持指定特定域名IP地址,并高性匹配,达到过滤广告的效果。与dnsmasq的all-servers不同,smartdns返回的是访问速度最快的解析结果 架构
那么是直接将Cloudflare Gateway的DNS服务器填入网关?然而并不是,这里是填入到了SmartDNS的配置项之中
实测直接使用的话浏览器访问网页的加载速度比较慢,猜测是服务器位于国外,发起解析请求的速度肯定是赶不上国内的机子了,单独使用并不推荐除非可以忍受巨慢的解析
那么如何解决这个问题呢?从/etc/smartdns/smartdns.conf中的server配置项可以看出实际上还写入了其他的DNS提供商,然后利用SmartDNS的主打?功能测速后返回访问速度最快的解析结果SmartDNS也推荐配置多个上游服务器,反正测速交给他就好了嘛(不过要是说因为写入了其他提供商而失去了Cloudflare Gateway的意义自己也无力反驳草,算了不管了

测速模式配置speed-check-mode ping,tcp:80,tcp:443,顾名思义就不做解释了
同时,在这一环节也可以开启审计日志


0x03.AdGuard
从上述审计日志的内容可以发现请求来自192.168.25.246的地址,而这个地址对应的服务是HomeAssistant,而AdGuard Home是以加载项的方式引入的

AdGuard主要用来进行自定义拦截过滤(广告+追踪),AdGuard的上游服务器只有SmartDNS这一个来源

可以按需订阅第三方整理好的列表,当然有误封风险了,可以核实后再加到白名单里取消拦截

平时有需要封禁的域名只需填入到自定义过滤规则的列表即可,前两个环节可以开启审计日志,最后的这个环境自然也是可以的,并且是最便于查看的

AdGuard Home本身是支持IPv4和IPv6两种方式访问的,但可能由于在HomeAssistant中Docker网络配置的原因,目前只支持IPv4

把这个IPv4地址填到各种设备的网络DNS设置项中就算完成了整个流程,DNS套娃(bushi
0x04.后记
总结一句话:Cloudflare Gateway用于获得纯净的DNS解析结果,SmartDNS用于测速后返回访问速度最快的解析结果,AdGuard用于自定义拦截过滤
虽然看起来每个环节的部分功能都有重复之处,但是实践却发现每个环节都各自其职,必不可缺
最后再说下Cloudflare for Teams,最开始只有Gateway功能,而现在实装的功能越来越多,并且无料享受
这两天实际体验了下新出的Access和Devices等功能,后者当成备用梯子是真香2333


至此本文使命完成
