在之前配置好家庭网络环境后,稳定运行了很久,大致上也基本满足日常需要,但是还有一些小的问题需要去解决。之前使用的是Dae + MosDNS配置,由DAE劫持流量进行最后的分流和代理,MosDNS主要用于DNS的并发请求和使用DOH、DOT服务,同时也负责DNS去广告。在使用过程中,由于MosDNS的队列化和无图形界面配置,进行特殊规则配置过于麻烦,最终决定还是在整体的DNS链路中增加AdGuard Home单独负责去广告和相关特殊规则的指定,MosDNS仅作为DNS转发器使用,不再兼顾过滤器的作用。
由于Dae的DNS处理方式与OpenClash、Singbox等不同,是通过劫持流量方式实现,无法直接指定端口进行DNS劫持,所以主要的配置部分在于Dae,MosDNS与AdGuard Home的配置部分基本维持原有配置即可。
另一个配置前提:由于我在主路由RouterOS上已经使用ospf进行了国内外流量的分流,所以此教程可能不一定适合于完全使用Dae进行分流的用户,如果存在分流错误等问题,可以尝试修改Global配置中的连接选项为
domain++
模式。📝 Dae配置部分
Dae安装
可以参考Github上的教程,我自己使用的是Daed,提供一个可视化的网页管理面板,日常进行自定义配置时候更为方便一些,Debian或者Ubuntu安装执行如下命令:
其他系统可参考:
getting-started.md
daeuniverse
Global配置
连接选项使用domain模式,其他无需修改。
DNS
由于处理DNS分流和解析不再由Dae负责,所以DNS部分的配置非常简单:
其中adg即AdGuard Home,配置为AdGuard Home监听的地址和端口。此处我使用的默认53端口,如果53端口已经被占用或者存在其他问题,可替换为其他非标端口。
路由部分
路由部分需要在原有的配置基础上,对AdGuard Home进程、MosDNS进程以及系统默认的NetworkManager进程使用
direct(must)
规则特殊处理,从而避免产生路由回环。同时,为了在AdGuardHome中可以正确的显示各设备的IP地址,需要对
geoip:private
规则进行修改,使用direct(must)
规则。如果使用的是direct
规则,那么在AdGuard Home中显示的设备信息均为localhost(127.0.0.1)
Route整体规则
整体规则大致如下,里面有一些自定义的配置,可以根据自己需要进行删减。
direct与direct(must)区别
must_rules
表示不将DNS流量重定向到dae并继续匹配。对于单一规则,direct
和must_direct
的区别在于direct
会劫持和处理DNS请求(用于流量分割使用),但must_direct
不会。当存在DNS请求的流量循环时,must_direct
很有用。must_direct
也可以写成direct(must)
。在上述配置中,以AdGuard Home为例,即进程AdGuardHome匹配的规则不进行DNS流量的劫持和处理且为直连,由AdGuard Home及其上游进行处理,同时由于规则:
将通过Google DNS的流量使用代理处理,从而避免DNS污染。
📝 AdGuard Home配置部分
AdGuard Home部分没有什么需要特别注意配置的,只需要指定上游DNS为MosDNS即可。如果不使用MosDNS,也可以直接指定自己需要的上游DNS,公共DNS服务器可以参考:国内外DNS推荐列表 | Dolingou
🤗 总结归纳
目前情况良好,暂时没有出现错误问题,且能够更方便的对特定客户端、域名进行放行。
📎 参考文章
有关AdGuard Home安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~