type
status
date
slug
summary
tags
category
icon
password
我使用Dae替代OpenClash已经有一段时间,目前整体的运行情况也已经稳定,该踩的坑也都已经踩过。之前也零零散散写过几篇关于Dae的文章,主要是一些进阶的用法,例如搭配AdGuard Home和MosDNS等其他DNS程序使用,但没有更多的涉及到Dae本身的安装以及配置指南,这篇文章就来填这个坑。
📝 什么是Dae
Dae是一个高性能的透明代理解决方案,在作用上,与Mihomo、Singbox等相同,均是通过域名、IP、端口、来源地址、目标地址以及规则集等方式,对流量进行分流以及使用代理。但在原理上,Dae通过在Linux内核中使用eBPF实现流量分流与透明代理,允许在网络驱动程序的最早阶段处理数据包。这样可以在将数据包传递给内核协议栈之前进行快速处理,比如丢弃、转发或修改数据包,所以相比其他软件,直连性能更好,同时也更方便实现国内外流量分流。
支持功能
- 支持通过本地主机的进程名称进行流量分流。
- 支持通过局域网中的 MAC 地址进行流量分流。
- 支持使用反向匹配规则进行流量分流。
- 支持根据策略自动切换节点。
- 支持 Shadowsocks、Trojan(-go) 和 Socks5 的全锥 NAT
- 支持高级DNS解析策略
- 天然支持IPv6,无需额外设置
支持协议
- HTTP(S), naiveproxy
- Socks
- VMess(AEAD, alterID=0) / VLESS
- Shadowsocks
- ShadowsocksR
- Trojan
- Tuic (v5)
- Juicity
- Hysteria2
- Proxy chain (flexible protocol)
支持系统
由于软件自身特性,Only Support By Linux Kernel只支持Linux核心的操作系统,并且内核版本不低于
5.17
,如果使用0.9.0-rc
以上,内核版本不低于6.10。所以软件更适合部署于路由器或者旁路网关上作为代理网关来使用。常规的Linux发行版均可满足要求,例如Debian(我目前在使用的)、 Ubuntu、 Arch Linux等等。Dae也支持在OpenWRT上进行使用,但需要自行进行固件编译,使用较新的Linux Kernel版本,并开启对应内核选项。
个人建议作为科学上网的旁路网关(或者说是旁路由,但是其实并没有使用到路由的功能),还是尽量使用完整版的Linux发行版,现在Youtube上不少UP主也开始推荐主路由器 + Linux发行版作为旁路网关的方案,一方面因为在旁路网关中,OpenWRT提供的很多功能用不到,另外一方面,在Linux Kernel的更新以及完整性上,OpenWRT也阉割了很多,Kernel特性支持较为落后,目前主力版本还在使用5.15的Kernel,这也是为了兼容各种嵌入式设备与多平台架构的结果。
📝 Dae安装
本篇内容是以我个人网络环境为操作前提进行编写,所以在特殊场景下,可能并不使用于你的网络环境。我所使用的系统环境如下:
- PVE环境,未进行网卡直通
- Debian 12 (核心版本:6.1.0-26-amd64)
- 作为旁路使用,只有一个网口ens18
安装脚本
Dae提供了脚本直接进行安装,可通过如下命令进行:
当前Release版本为0.80.9,最新RC版本为0.9.0rc2,如果希望使用rc版本,可使用如下命令:
如果需要卸载Dae,可使用如下命令:
安装完成后,二进制执行文件位于
/usr/local/bin/dae
,同时会自动添加systemctl执行脚本;配置文件位于
/usr/local/etc/dae/config.dae
更新GeoIP与GeoSite数据库
如果需要更新GeoIP与Geosite数据库,那么可以使用如下命令:
更新GEOIP
更新GEOSITE
更新后的GeoIP与GeoSite文件位于
/usr/local/share/dae
文件夹内,Dae会自动使用该位置的GeoIP与GeoSite数据库文件,无需进行移动或复制至新的位置。📝 Dae配置文件
Dae的配置文件很简单,而且可读性也很高,不必考虑乱七八糟的防火墙劫持与DNS劫持,在我的网络环境下,对付反诈的劫持也有很好的效果。
以我个人网络环境,提供配置文件如下,需要修改的部分为
global
部分lan_interface
的网卡名称、subscription
内的订阅地址,group
部分的节点过滤规则。这套配置目前使用于旁路网关上,支持IPv6,同时ipleak 300次检测无DNS泄露。12月27日更新:
- 增加了小米部分设备域名。部分反应
miwifi.com
域名请求次数太多导致内存泄露。
需要注意部分:
Group
内节点组名称需要与Routing
中规则名称对应,例如修改了节点组Proxy
的名称,那么在Routing
中也需要修改proxy
为新的名称
- 如果使用RC版本,DNS可以使用DOH或DOT,以阿里巴巴DNS举例:
- DOH:
h3://dns.alidns.com:443
- DOT:
tls://dns.alidns.com:853
- DOQ:
quic://dns.alidns.com:853
- 节点过滤规则:如果使用固定节点,
policy: fixed(0)
并且filter: name(节点名称)
,如果节点名称中包括emoji符号,可能无法正常选择提示报错,此时建议使用filter: name(keyword: ‘节点关键字’)
方式进行过滤选择。
Routing
中的规则为顺序匹配,从上至下,所以建议将特定规则放在最上方,将例如Geosite:CN
等较大的规则集放在下方,避免规则冲突无法正常匹配。例如,你可以将自定义规则放置于最上方。
- 在DNS的选择上,可以参考《🗒️国内外DNS推荐列表》
启动Dae
使用如下命令可以启动Dae。
如果需要在前台使用Dae,便于查看Dae运行情况,可以使用:
当修改配置文件后,需要重载Dae配置文件时,可以使用:
自动更新并存储订阅
由于Dae每次启动时均需要重新读取订阅信息,本身并不存取订阅信息,当订阅链接被墙或者无法访问时,就无法正常获取到订阅信息及分组信息,造成访问异常。以下方法可以实现订阅信息存储和自动订阅更新。
systemd.timer方法
假设你的dae配置文件存储于
/usr/local/etc/dae/
,这也是通过自动安装脚本默认的存储位置。那么新建一个/usr/local/bin/update-dae-subs.sh
文件:赋予这个文件可执行权限:
配置
systemd.timer
和systemd.service
进行自动更新/etc/systemd/system/update-subs.timer
: 以下代码是每12小时,或者每次系统启动后15分钟更新
/etc/systemd/system/update-subs.service
:
新建订阅链接文件:
/usr/local/etc/dae/sublist
,并安装以下模板填写订阅链接,如果只有一个订阅,则保留并填写一个即可。当通过update-subs.timer
拉取订阅信息时,会自动建立sub1
、sub2
、sub3
的订阅文件。赋予订阅链接文件
600
权限修改
config.dae
中subscription
部分内容为订阅文件启动Timer
crontab方法
如果你的系统没有
system.timer
,也可以使用crontab进行替代。区别在于无法实现系统启动后自定义时间进行更新,只能定时更新。编写
/usr/local/bin/update-dae-subs.sh
文件通过crontab实现定时更新,以下例子为12小时执行一次。你可以使用crontab计算器查询定时规则。
剩余步骤与上面
system.timer
部分相同。🤗 其他用法
如果需要图形界面进行配置,可以选择Daed,配置文件内容大同小异,主要就是DNS和Routing部分,对应截取之后粘贴到控制台里面就好。
OpenAI相关规则
geosite:openai
规则并不全面,如果遇到无法使用的情况,可以添加以下部分规则,替换ai
代理组为你的代理组名称:以上规则包括Gemini,Openai,Copilot,Apple Intelligence, Claude。
最后打个广告,我一直在使用的OpenAI是由Dream API提供,相对于合租车来说,使用起来更灵活一些。
关于CPU占用率高及内存泄露
建议添加如下规则禁止Quic。Daed也建议添加该规则。
📎 参考文章
有关Dae安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~