这套方案也快用一年了,还算稳定于是分享出来

0x00.前言

DNS套娃(bushi

0x01.Cloudflare Gateway

最上游使用的是Cloudflare for Teams中的Gateway,在Locations加一个位置就可以获得独一无二的DNS服务器地址,目前包含如下四种

  1. IPv4
  2. IPv6
  3. DNS over HTTPS
  4. DNS over TLS
PY
PY

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

Gateway Activity Log
Gateway Activity Log

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

Free
Free

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

Analytics
Analytics

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

Requests by category
Requests by category

0x02.SmartDNS

前情回顾:PY 云新增 CentOS 7.7 64 位#0x06-SmartDNS

SmartDNS是一个运行在本地的DNS服务器,SmartDNS接受本地客户端的DNS查询请求,从多个上游DNS服务器获取DNS查询结果,并将访问速度最快的结果返回给客户端,提高网络访问速度。
同时支持指定特定域名IP地址,并高性匹配,达到过滤广告的效果。与dnsmasqall-servers不同,smartdns返回的是访问速度最快的解析结果

架构
架构

那么是直接将Cloudflare GatewayDNS服务器填入网关?然而并不是,这里是填入到了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 Home
AdGuard Home

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

仪表盘
仪表盘

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

DNS 封锁清单
DNS 封锁清单

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

查询日志
查询日志

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

IPv4
IPv4

把这个IPv4地址填到各种设备的网络DNS设置项中就算完成了整个流程,DNS套娃(bushi

0x04.后记

总结一句话:Cloudflare Gateway用于获得纯净的DNS解析结果,SmartDNS用于测速后返回访问速度最快的解析结果,AdGuard用于自定义拦截过滤
虽然看起来每个环节的部分功能都有重复之处,但是实践却发现每个环节都各自其职,必不可缺
最后再说下Cloudflare for Teams,最开始只有Gateway功能,而现在实装的功能越来越多,并且无料享受
这两天实际体验了下新出的AccessDevices等功能,后者当成备用梯子是真香2333

Teams yes!
Teams yes!
WARP yes!
WARP yes!

至此本文使命完成