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实现流量分流拆分与透明代理,允许在网络驱动程序的最早阶段处理数据包。这样可以在将数据包传递给内核协议栈之前进行快速处理,比如丢弃、转发或修改数据包,所以相比其他软件,Dae的直连性能更好,同时也更方便实现国内外流量分流,在效率上更优。
特性 | 说明 |
Real Direct | 直连流量完全绑过代理程序,性能损耗趋近于零 |
eBPF 加速 | 在网络驱动最早阶段处理数据包 |
原生 IPv6 | 天然支持双栈,无需额外配置 |
智能分流 | 支持进程名、MAC 地址、域名、IP 等多维度分流 |
自动切换 | 根据延迟自动选择最优节点 |
Dae支持功能
- 支持通过本地主机的进程名称进行流量分流。
- 支持通过局域网中的MAC地址进行流量分流。
- 支持使用反向匹配规则进行流量分流。
- 支持根据策略自动切换节点。
- 支持 Shadowsocks、Trojan(-go) 和Socks5的全锥NAT(Full Cone)
- 支持高级DNS解析策略及域名分流
- 天然支持IPv6,无需额外设置
Dae支持协议
- VMess / VLESS / Trojan / Shadowsocks / ShadowsocksR
- Hysteria2 / TUIC v5 / Juicity
- HTTP(S) / SOCKS5 / Naiveproxy
- 链式代理(Proxy Chain)
Dae系统要求
内核版本要求
Dae 版本 | 最低内核版本 |
0.8.x | Linux 5.17+ |
0.9.x / 1.0+ | Linux 6.1+ |
由于Dae软件自身特性(使用eBPF),只支持Linux核心的操作系统(Only Support By Linux Kernel),并且内核版本不低于
5.17 ,如果使用0.9.0-rc以上,内核版本不低于6.1.0。Dae需要Linux Kernel内核开启如下选项,一般来说,完整的Linux系统都是已经处于开启状态:可以通过如下命令查看Linux内核是否开启了这些选项:
所以Dae这个软件更适合部署于X86架构的路由器或者旁路由(旁路网关)上作为代理网关进行科学上网来使用,嵌入式设备或者硬路由由于Linux核心版本问题,大部分无法正常使用。常规的Linux发行版均可满足Dae的要求,例如Debian(我目前在使用的)、 Ubuntu、 Arch Linux、Fedora等等。Dae也支持在OpenWRT上进行使用,但需要自行进行固件编译,使用较新的Linux Kernel版本,并开启对应内核选项,默认版本大部分内核暂时不满足Dae的需求。
我个人建议作为科学上网的旁路网关(或者说是旁路由,但是其实并没有使用到路由的功能),还是尽量使用完整版的Linux发行版,现在Youtube上不少UP主也开始推荐主路由器 + Linux发行版作为旁路网关的家庭网络科学上网方案,一方面因为在旁路网关中,OpenWRT提供的很多功能用不到,另外一方面,在Linux Kernel的更新以及完整性上,OpenWRT也阉割了很多,Kernel特性支持较为落后,目前OpenWRT的主力版本还在使用5.15的Kernel,这也是为了兼容各种嵌入式设备与多平台架构的结果。
推荐操作系统
系统 | 推荐度 | 说明 |
Debian 12+ | ⭐⭐⭐⭐⭐ | 内核 6.1+,最稳定 |
Ubuntu 22.04+ | ⭐⭐⭐⭐ | 需确认内核版本 |
ImmortalWRT 24.10 | ⭐⭐⭐ | OpenWRT 用户首选 |
官方 OpenWRT | ⭐ | 需自行编译,内核版本落后 |
📝 安装Dae
本篇内容是以我个人网络环境和拓扑为操作前提进行编写,所以在特殊场景下,可能并不适用于你的网络环境。我所使用的整体系统环境如下:
- Proxmox VE(PVE)环境,未进行网卡直通
- Debian 12 (核心版本:6.1.0-26-amd64)
- 作为旁路由(旁路网关)使用,只有一个网口ens18
Dae安装脚本
Linux衍生版本安装Dae
衍生版本包括Debian、Ubuntu、Kali、Fedora、Arch等等。
Dae提供了脚本直接进行安装,可通过如下命令进行:
当前Release版本为0.80.9,最新RC版本为0.9.0 1.0rc2,如果希望使用rc版本,可使用如下命令:
如果需要卸载Dae,可使用如下命令:
安装完成后,二进制执行文件位于
/usr/local/bin/dae ,同时会自动添加systemctl执行脚本;配置文件位于
/usr/local/etc/dae/config.dae ,整理为表格如图:文件 | 路径 |
二进制文件 | /usr/local/bin/dae |
配置文件 | /usr/local/etc/dae/config.dae |
GeoIP/GeoSite | /usr/local/share/dae/ |
这个方法不适用与OpenWRT用户。如果你是OpenWRT用户,请参考下面部分。
OpenWRT通过OPKG安装Dae
如果你是ImmortalWRT
24.10版本用户(Linux内核版本6.6.73),通过ImmortalWRT的官方软件源通过opkg即可安装,同时需要安装的kmod依赖也在下面的命令里面。目前提供的版本为0.9.0-r2:以上方法也同样适用于Daed。
OpenWRT编译安装Dae
如果使用的是官方版本的OpenWRT(官方版本可能无法直接安装kmod的ipk文件),在编译时没有选择所需的kmod依赖,而是使用的默认packages,那么可能需要重新编译安装,推荐直接使用ImmortalWRT,具体流程如下:
- 打开ImmortalWrt Firmware Selector并选择你的机器架构,软路由一般为
Generic x86/64

- 点击
Customize installed packages and/or first boot script进行定制ImmortalWRT,并在Installed Packages中复制粘贴如下内容:
- 点击
Request Build,进行定制版ImmortalWRT定制版编译请求,然后等待编译完成并生成下载链接,这个过程大概5-10分钟。
- 编译完成后
Custom Download里会显示不同版本的下载按钮,一般选择COMBINED-EFI (EXT4),下载后的镜像为*.img格式,根据自己的虚拟化系统不同,进行格式转换。之后的流程与其他在软路由上安装OpenWRT的流程相同。
- 单独的Dae安装文件(
dae_0.9.0-r2_x86_64.ipk)下载地址为:dae_1.0.0-r1_x86_64.ipk
以上方法也同样适用于Daed。
更新GeoIP与GeoSite数据库
更新GEOIP
更新GEOSITE
更新后的GeoIP与GeoSite文件位于
/usr/local/share/dae 文件夹内,Dae会自动使用该位置的GeoIP与GeoSite数据库文件,无需进行移动或复制至新的位置。📝 Dae配置文件
参考配置文件
Dae的配置文件很简单,而且可读性也很高,不必考虑乱七八糟的防火墙劫持与DNS劫持,在我的网络环境下,对付ISP的劫持反诈的劫持也有很好的效果。
以我个人网络环境为例,提供Dae配置文件如下,需要修改的部分为
global部分lan_interface的网卡名称、subscription 内的订阅地址,group部分的节点过滤规则。这套配置目前使用于旁路网关上,支持IPv6,同时ipleak超过300次检测未发现DNS泄露情况。12月27日更新:
- 增加了小米部分设备域名。部分反应
miwifi.com域名请求次数太多可能是导致内存泄露的原因。
需要注意部分:
Group内节点组名称需要与Routing中规则名称对应,例如修改了节点组Proxy的名称,那么在Routing中也需要修改proxy为新的名称
- 如果使用RC版本,DNS可以使用DOH或DOT,支持H3协议的DOH,以阿里巴巴的阿里云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推荐列表》
- 如果你的机场对节点入口域名使用了国内和国外不同的结果(例如目前的TagSS,为了避免来自国外流量的DDoS),或者无法获取到节点正确的IP地址,那么建议修改
udp_check_dns为国内的DNS,例如阿里云的223.5.5.5可能会解决这个问题。
Dae四种Dial Mode模式区别及使用场景
1. Domain 模式
工作原理:使用嗅探(sniffing)得到的域名发送给代理服务器。
特点:
- 会检查嗅探到的域名的真实性
- 若 DNS 环境不纯净,可以很大程度上缓解 DNS 污染问题。适用于 DNS 请求经过Dae,并没有使用外部 DNS 解析程序的情况(例如使用AdGuard Home 或者 MosDNS)。
- 通常会带来更快的代理响应,因为代理会在远端重新解析域名,获得更优的 IP 连接结果。
- 域名重写在路由的流量分割之后进行,dae 不会重新路由。
适用场景:
- DNS 请求经过 dae 处理的标准配置。
- 需要基于域名进行流量分流的用户。
- 希望获得较快代理响应的用户。
2. Domain+ 模式
工作原理:基于 domain 模式,但不会检查嗅探得到域名的真实性。
特点:
- 比 domain 模式更宽松,不验证域名真实性。
- 适合 DNS 请求不经过 dae 但仍想要更快代理响应的用户。
- 重要限制:若 DNS 请求不经过 dae,基于域名的流量分割将失效。
适用场景:
- 使用外部 DNS 服务(如 AdGuard Home、MosDNS)处理 DNS 请求。
- DNS 不经过 dae,但仍希望代理时使用域名而非 IP。
- 不适合需要精确域名分流的场景。
3. Domain++ 模式
工作原理:基于 domain+ 模式,但会根据嗅探到的域名重新进行流量路由。
特点:
- 可以部分恢复基于域名的流量分割能力。
- 对直连流量无效。
- 会占用更多的 CPU 资源。
- 是一种折中方案,在 DNS 不经过 dae 时仍想要域名分流。
适用场景:
- DNS 请求不经过 dae,但仍需要部分域名分流能力。例如设置了 Dae 的 DNS 上游服务器为 MosDNS 或者其他 DNS 解析服务程序。
- 适用于使用主路由进行了国内外 IP 分流,dae 作为辅助。
- 不适合对 CPU 资源敏感的低性能设备。
4. IP模式
仅作IP分流,DNS无需经过Dae,但同时如果存在DNS污染情况,那Dae也无法解决。
5. 如何选择Dial Mode
📝 启动及使用Dae
使用如下命令可以启动Dae。
在OpenWRT软路由中,启动命令为:
如果需要在前台使用Dae,便于查看Dae运行情况,可以使用:
在OpenWRT系统中则为如下命令:
当修改配置文件后,需要重载Dae配置文件时,可以使用:
在OpenWRT中则为如下命令
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部分相同。🤗 Dae的其他用法
如果需要图形界面进行配置,可以选择Daed,配置文件内容大同小异,主要就是DNS和Routing部分,对应截取之后粘贴到控制台里面就好。
OpenAI相关规则
geosite:openai 规则并不全面,如果遇到无法使用的情况或者降智情况,可以添加以下部分规则,替换ai 代理组为你的代理组名称:以上规则包括Gemini,Openai,Copilot,Apple Intelligence, Claude这些AI服务提供商。
更新一版Daed Routing规则
这版规则合并了大多数的重复项,避免规则过于混乱。同时针对使用海外手机号的Wechat进行优化,减少图片和视频因CDN错配导致的加载时间过长。
关于Dae的CPU占用率高及内存泄露
建议添加如下规则禁止Quic。Daed也建议添加该规则。Quic实测并不会导致内存泄漏或者高内存占用,主要是CPU使用会稍高。
关于Dae及Daed内存泄露
一方面,建议添加机场节点域名至Direct规则内,避免回环产生的内存泄露。另外一方面,个人实测内存泄漏的一个场景是:Dae所在局域网内,存在移动设备开启使用同样节点的代理,造成类似回环的情况。在移动端设备开启根据SSID使用DIRECT(直连)规则后,没有再产生Dae内存泄漏的情况。
📎 参考文章
有关Dae安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~