type
status
date
slug
summary
tags
category
icon
password
本篇文章并非DAE及DAED的安装配置入门文章。关于DAE与DAED的安装方法之后会单独编写。本篇文章主要内容为在使用DAE或DAED的情况下,如何搭配MosDNS使用,提供一个高兼容性、高可用性的配置方案。以下内容基于Debian系统。
📝 DAE的DNS原理
DAE的分流原理
域名通过劫持 DNS 请求,将 DNS 请求的域名与所查 IP 进行关联来得到。尽管这种方式有一些问题:
- 可能会出现误判。例如需要分流到国内和国外的两个网站拥有同一个 IP,且在短时间内同时被访问,或浏览器有 DNS 缓存。
- 用户的 DNS 请求必须通过 dae。例如将 dae 设为 DNS,或在 dae 作为网关的情况下使用公共 DNS。
———
DAE对程序所在网关进行全部流量的处理,且与其他代理程序不同,并不提供DNS的转发端口,而是采用对只有经过该网关的全部DNS请求才会分流,所以无法直接使用原有代理程序那些套娃的DNS行为。
更新:
和MosDNS关系不大,如果手机使用相同订阅代理并连接同网WIFI,在内网会产生环回请求造成泄露。
常规代理程序DNS请求及解析
在未通过公共DNS或者代理远端DNS请求解析的情况下,常规代理软件是可以进行DNS的无限套娃的,并不会返回给客户端解析的结果。在套娃的过程中可以不断针对不同的DNS请求进行过滤和分流,在日常使用中能够极大的提供便利,例如AdGuard Home的广告过滤与可视化控制面板、MosDNS的并发DNS请求、ECS请求等等。
DAE的DNS请求与解析
DAE的不同点在于,在流量进入网关开始即进行分流,且基于Domain的分流模式必须将DAE作为唯一的DNS入口,在顺序上相当于将将代理程序前置作为入口,且由于DAE并不提供DNS转发的监听端口,所以无法后置于其他DNS程序。
📝 DAE与MosDNS的配合
DAE提供了一份使用外置DNS程序的指南:
external-dns.md
daeuniverse
根据这份指南我们可以对整体家庭局域网内的DNS请求链路进行梳理如下:
例如我在使用MosDNS的情况下,将
GeoSite:CN
的域名通过MosDNS并发请求阿里的公共DNS服务器,取得结果。同时对GeoSite:GFW
以及Graylist
(自定义灰名单)的域名使用Google的公共DNS进行请求,使其回到DAE的分流规则之内,这样既满足使用MosDNS并发请求加快DNS解析速度、ECS提供就近CDN节点的同时,也不会扰乱DAE基于domain的分流配置。DAE DNS配置
主要配置为红色字体部分,DAE的DNS部分仅作为流量的监听,所有DNS的解析均发往MosDNS进行解析,无论是否被污染,由MosDNS中的规则进行DNS分流。
DAE Routing配置
主要部分为红色部分,将MosDNS进程放在
must_direct
策略内,不将DNS流量重定向到dae并继续匹配,避免产生回环。同时因为可继续匹配,所以MosDNS中使用Google Public DNS规则流量还可以继续进入DAE执行远端请求。MosDNS配置
定义Tag
主序列配置
query_nocn配置
主DNS服务由Google Public DNS提供,副DNS服务由NextDNS服务提供,在使用Google Public DNS时流量会重新进入DAE,完成解析,获得无污染结果。
🤗 总结归纳
目前这套方法是我用下来最为舒服的,在解析速度和识别被污染域名方面均可以满足我的需要,同时对劫持到反诈页面也有很好的规避效果,例如Linux.do等网站打开也不会被劫持了。唯一不太方便的地方在于对于污染域名的配置上,在添加DNS的自定义规则时,需要在MosDNS的自定义文件内添加,例如我的是
graylist
。理论上,在此基础上还可以进行套娃,例如使用AdGuard Home等,但由于DAE作为入口劫持所有的流量,所以AdGuard Home的客户端会仅显示为DAE客户端。所以建议如果使用AdGuard Home,可将AdGuard Home放置于另外的容器或主机上作为DNS入口,同时上游配置DAE所在主机IP。
📎 参考文章
有关DAE安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~