dae
dae(读音同"day")是一个基于 eBPF 技术实现的 Linux 透明代理工具,项目地址为 github.com/daeuniverse/dae。与 Mihomo、sing-box 等在用户态实现透明代理的工具不同,dae 直接在 Linux 内核层面拦截和处理网络流量,绕过了传统用户态代理的上下文切换开销,在高并发场景下性能极为出色。dae 是目前 Linux 平台上性能最高的透明代理方案之一,专为 Linux 桌面和服务器设计,不支持其他平台。
什么是 eBPF
eBPF(extended Berkeley Packet Filter)是 Linux 内核的一项核心技术,允许用户在不修改内核源码的前提下,将自定义程序注入内核执行。这些程序运行在内核的安全沙箱中,可以在数据包处理的极早期阶段介入流量,实现网络监控、流量过滤、性能追踪等功能。
与传统的 iptables/nftables + TUN 方案相比,eBPF 的优势在于:
- 流量在内核层直接处理,无需在内核态和用户态之间来回拷贝数据
- 不需要创建 TUN 虚拟网卡,减少了网络栈的跳转层次
- 对于"直连"的流量,eBPF 可以在不经过用户态代理进程的情况下直接放行,几乎零开销
- 并发连接数极多时,相对于用户态代理的性能优势更为明显
dae 正是利用了 eBPF 的这些特性,在 Linux 内核层面实现流量的透明拦截和分流。
核心特性
- 内核级透明代理:基于 eBPF,在内核层面拦截流量,无需 TUN 虚拟网卡,性能极高
- 直连流量零开销:命中直连规则的流量直接在内核中放行,不经过用户态,几乎不消耗 CPU
- 协议支持全面:Shadowsocks、Shadowsocks 2022、VMess、VLESS(含 Reality)、Trojan、Hysteria 2、TUIC、AnyTLS、ShadowTLS、WireGuard 等主流协议均已支持
- 灵活的分流规则:支持基于域名、IP CIDR、GEOIP、GEOSITE、进程名、MAC 地址等多维度规则
- DNS 透明劫持:自动劫持系统 DNS 查询,支持 DoH、DoT 等加密 DNS,防止 DNS 泄露
- LAN 代理支持:可作为局域网内其他设备的透明代理网关,无需在每台设备上单独配置
- 订阅管理:内置订阅解析功能,支持从机场订阅链接批量导入节点
- 多节点策略:支持固定选择、延迟优先(min_moving_avg)等节点选择策略
系统要求
dae 对系统有明确的最低要求,这是使用前必须确认的:
| 要求 | 最低版本 | 推荐版本 |
|---|---|---|
| Linux 内核 | 5.8 | 6.1 或更高 |
| 架构 | x86_64、arm64、arm | x86_64 |
| 系统 | 任何支持上述内核的 Linux 发行版 | Debian 12、Ubuntu 22.04、Arch Linux |
检查当前内核版本:
uname -r
关于内核版本
如果你的 Linux 内核版本低于 5.8,dae 将无法运行。部分云服务商(如某些 OpenVZ 架构的 VPS)由于虚拟化限制,可能无法支持 eBPF 功能。在安装 dae 之前,请先确认你的内核版本和 eBPF 支持情况。
KVM 和裸金属服务器通常没有此限制,大多数现代 VPS(Vultr、Linode、DigitalOcean、DMIT 等)均可正常使用 dae。
检查 eBPF 是否可用:
# 检查是否有 eBPF 支持(应该存在此文件)
ls /sys/fs/bpf
# 检查是否能加载 eBPF 程序(需要 root 权限)
bpftool prog list 2>/dev/null && echo "eBPF available" || echo "eBPF not available"
安装
方法一:使用官方安装脚本(推荐)
dae 提供了针对 Debian / Ubuntu 的 APT 安装方式:
# 安装 dae(Debian / Ubuntu)
curl -fsSL https://github.com/daeuniverse/dae/releases/latest/download/dae-install.sh | bash
安装完成后:
- 二进制文件位于:
/usr/bin/dae - 配置文件位于:
/etc/dae/config.dae - systemd 服务单元已创建,服务名为
dae - 内置 GeoIP 和 GeoSite 数据文件
方法二:包管理器安装
Arch Linux(AUR):
yay -S dae
# 或使用 paru
paru -S dae
Arch Linux(官方源):
pacman -S dae
Debian / Ubuntu(deb 包):
从 GitHub Releases 下载最新的 .deb 包:
# 替换版本号为实际最新版
wget https://github.com/daeuniverse/dae/releases/latest/download/dae-linux-x86_64.deb
dpkg -i dae-linux-x86_64.deb
方法三:手动安装预编译二进制文件
从 GitHub Releases 下载对应架构的预编译文件:
# 以 Linux x86_64 为例
wget https://github.com/daeuniverse/dae/releases/latest/download/dae-linux-x86_64.zip
unzip dae-linux-x86_64.zip
chmod +x dae-linux-x86_64
mv dae-linux-x86_64 /usr/bin/dae
# 下载 GeoIP 和 GeoSite 数据文件
mkdir -p /usr/share/dae
wget https://github.com/v2fly/geoip/releases/latest/download/geoip.dat \
-O /usr/share/dae/geoip.dat
wget https://github.com/v2fly/domain-list-community/releases/latest/download/dlc.dat \
-O /usr/share/dae/geosite.dat
验证安装:
dae version
方法四:从源码编译
如果需要最新的开发版本,或者目标架构没有预编译包,可以从源码编译:
# 安装依赖
apt install golang clang llvm make libpcap-dev -y # Debian / Ubuntu
# 或
pacman -S go clang llvm make libpcap # Arch Linux
# 克隆仓库(包含子模块)
git clone --recursive https://github.com/daeuniverse/dae.git
cd dae
# 编译
make
# 安装
install -Dm755 dae /usr/bin/dae
配置文件格式
dae 使用一种专有的配置文件格式(.dae 文件),与 Mihomo 的 YAML 和 Xray 的 JSON 均不同,语法上更接近结构化的脚本语言。默认配置文件路径为 /etc/dae/config.dae。
完整配置文件由以下几个部分组成:
# 全局配置
global {
...
}
# 订阅(从 URL 或文件导入节点)
subscription {
...
}
# 自定义节点(手动输入)
node {
...
}
# DNS 配置
dns {
...
}
# 分流规则组
routing {
...
}
完整配置示例
以下是一个功能完整的 dae 配置文件示例,适合 Linux 桌面或服务器用户直接参考:
global {
# 监听的网卡名称,根据实际网卡名修改
# 使用 ip link 命令查看当前网卡名
lan_interface: eth0
wan_interface: auto
# 日志级别:error / warn / info / debug / trace
log_level: warn
# 允许连接到本机 socks5 / http 代理端口(可选)
# tproxy_port: 12345
# 是否允许局域网内其他设备使用本机作为透明代理网关
# allow_insecure: false
# 自动配置系统 DNS
auto_config_kernel_parameter: true
}
# 机场订阅(Clash 格式或通用 base64 URI 格式均可)
subscription {
my-airport: "https://your-airport.com/api/v1/client/subscribe?token=xxx"
}
# 手动添加自建节点示例
node {
# VLESS + Reality 节点
my-vless: "vless://uuid@your.server.ip:443?security=reality&sni=www.apple.com&fp=chrome&pbk=publickey&sid=shortid&flow=xtls-rprx-vision&type=tcp#MyNode"
# Hysteria 2 节点
my-hy2: "hysteria2://password@your.domain.com:443?sni=your.domain.com#HY2Node"
}
dns {
upstream {
# 国内 DNS(走直连)
alidns: "udp://223.5.5.5:53"
dnspub: "https://doh.pub/dns-query"
# 境外 DNS(走代理)
google: "tcp+udp://8.8.8.8:53"
cloudflare: "https://1.1.1.1/dns-query"
}
routing {
# 私有地址使用本地 DNS
request {
qname(geosite:private) -> alidns
qname(geosite:cn) -> dnspub
fallback -> cloudflare
}
}
}
routing {
# 定义代理组
pname(dae) -> must_direct # dae 进程本身直连,防止循环
# 私有地址直连
ip(private) -> direct
# 本地回环和保留地址直连
ip(224.0.0.0/4) -> direct
# 广告过滤(屏蔽)
domain(geosite:category-ads-all) -> block
# 国内域名直连
domain(geosite:cn) -> direct
# 国内 IP 直连
ip(geoip:cn) -> direct
# 其余流量走代理
fallback: my-airport
}
分步部署教程
第一步:查看网卡名称
dae 需要绑定到具体的网卡接口,首先查看系统中的网卡名称:
ip link show
输出示例:
1: lo: <LOOPBACK,UP,LOWER_UP> ...
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> ...
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> ...
常见的网卡名称:
| 名称 | 说明 |
|---|---|
eth0 | 有线网卡(传统命名) |
enp2s0、enp3s0 | 有线网卡(新式预测性命名) |
wlan0、wlp2s0 | 无线网卡 |
ens3、ens4 | 虚拟机或云服务器网卡 |
将查到的网卡名称填入配置文件的 lan_interface 字段。如果你只想代理本机流量而不需要 LAN 网关功能,可以将 lan_interface 留空,只配置 wan_interface: auto。
第二步:编写配置文件
编辑 /etc/dae/config.dae,至少需要配置以下内容:
global块中的网卡名称- 节点信息(通过
subscription或node块) routing块中的分流规则
一个最简化的可用配置(使用机场订阅):
global {
wan_interface: auto
log_level: warn
auto_config_kernel_parameter: true
}
subscription {
my-airport: "https://your-airport.com/subscribe?token=xxx"
}
dns {
upstream {
domestic: "https://doh.pub/dns-query"
abroad: "https://1.1.1.1/dns-query"
}
routing {
request {
qname(geosite:cn) -> domestic
fallback -> abroad
}
}
}
routing {
pname(dae) -> must_direct
ip(private) -> direct
domain(geosite:cn) -> direct
ip(geoip:cn) -> direct
fallback: my-airport
}
第三步:验证配置文件语法
在启动服务前,先用内置工具检查配置文件是否有语法错误:
dae validate -c /etc/dae/config.dae
如果输出 Validate OK,说明配置语法正确。如果有错误,会显示具体的错误位置和原因。
第四步:启动服务
# 设置开机自启并立即启动
systemctl enable dae --now
# 查看运行状态
systemctl status dae
# 查看实时日志
journalctl -u dae -f
第五步:验证代理是否生效
# 检查出口 IP 是否已经变为代理节点的 IP
curl -s https://api.ipify.org
# 或者使用 ipinfo.io 获取更详细的地理位置信息
curl -s https://ipinfo.io
如果返回的 IP 是代理节点所在地区的 IP,说明代理已经生效。
节点配置方式
方式一:使用订阅链接
dae 支持从 Clash 格式的订阅链接批量导入节点:
subscription {
airport1: "https://airport1.example.com/api/subscribe?token=xxx&type=clash"
airport2: "https://airport2.example.com/subscribe?token=yyy"
}
在 routing 块中,可以直接将订阅名称作为策略使用:
routing {
fallback: airport1 # 默认走 airport1 的节点
}
也可以指定订阅中的特定节点:
routing {
# 指定具体节点(节点名称来自订阅中的 name 字段)
domain(geosite:netflix) -> airport1.节点名称
fallback: airport2
}
方式二:手动添加节点
支持多种节点 URI 格式:
node {
# VLESS + Reality
vless-node: "vless://uuid@ip:443?security=reality&sni=www.apple.com&fp=chrome&pbk=pubkey&sid=shortid&flow=xtls-rprx-vision&type=tcp#名称"
# Hysteria 2
hy2-node: "hysteria2://password@domain.com:443?sni=domain.com#名称"
# Shadowsocks 2022
ss-node: "ss://2022-blake3-aes-256-gcm:base64key@ip:8388#名称"
# Trojan
trojan-node: "trojan://password@domain.com:443?sni=domain.com#名称"
# TUIC v5
tuic-node: "tuic://uuid:password@domain.com:443?sni=domain.com&congestion_control=bbr#名称"
}
方式三:节点组策略
当有多个节点时,可以配置节点选择策略:
routing {
# min_moving_avg:选择延迟移动平均值最低的节点(自动测速)
fallback: min_moving_avg(airport1)
# 对特定流量指定固定节点
domain(geosite:netflix) -> fixed(0, airport1) # 固定使用 airport1 中序号为 0 的节点
}
分流规则详解
dae 的 routing 块支持多种匹配条件:
匹配条件
| 条件 | 示例 | 说明 |
|---|---|---|
domain | domain(example.com) | 精确匹配域名 |
domain | domain(suffix:example.com) | 匹配域名及其子域名 |
domain | domain(keyword:google) | 匹配包含关键词的域名 |
domain | domain(geosite:cn) | 引用 GeoSite 域名集合 |
domain | domain(regex:^.*\.example\..*$) | 正则表达式匹配 |
ip | ip(192.168.0.0/16) | CIDR 匹配 |
ip | ip(geoip:cn) | 引用 GeoIP 集合 |
ip | ip(private) | 匹配所有私有 IP 地址 |
pname | pname(chrome) | 匹配进程名(需要 root 权限) |
mac | mac(aa:bb:cc:dd:ee:ff) | 匹配源 MAC 地址(LAN 模式) |
port | port(80, 443) | 匹配目标端口 |
l4proto | l4proto(tcp) 或 l4proto(udp) | 匹配传输层协议 |
动作(出站)
| 动作 | 说明 |
|---|---|
direct | 直接连接,不经过代理 |
must_direct | 强制直连,即使被其他规则捕获也强制直连 |
block | 丢弃流量 |
proxy-name | 走指定的代理节点或订阅 |
min_moving_avg(subscription) | 自动选择延迟最低的节点 |
fixed(index, subscription) | 固定使用订阅中序号为 index 的节点 |
典型规则示例
基础分流(国内直连,国外代理):
routing {
pname(dae) -> must_direct
ip(private) -> direct
domain(geosite:category-ads-all) -> block
domain(geosite:cn) -> direct
ip(geoip:cn) -> direct
fallback: my-proxy
}
按进程名分流(特定应用走代理):
routing {
pname(dae) -> must_direct
pname(git, curl, wget) -> my-proxy # 这几个进程走代理
ip(private) -> direct
domain(geosite:cn) -> direct
ip(geoip:cn) -> direct
fallback: direct # 其余默认直连
}
LAN 模式(作为局域网代理网关):
global {
# 同时配置 LAN 和 WAN 网卡
lan_interface: br0 # 局域网网桥
wan_interface: eth0 # 上游网卡
}
routing {
pname(dae) -> must_direct
ip(private) -> direct
# 来自特定 MAC 地址的设备走代理
mac(aa:bb:cc:dd:ee:ff) -> my-proxy
domain(geosite:cn) -> direct
ip(geoip:cn) -> direct
fallback: my-proxy
}
DNS 配置详解
dae 的 DNS 模块通过透明劫持系统 DNS 查询,实现防污染的分域名解析策略。
upstream 块
定义可用的 DNS 服务器:
dns {
upstream {
# 支持多种协议格式
# UDP
alidns: "udp://223.5.5.5:53"
# TCP
google-tcp: "tcp://8.8.8.8:53"
# TCP + UDP(先尝试 UDP,失败则用 TCP)
google: "tcp+udp://8.8.8.8:53"
# DNS over HTTPS
cloudflare-doh: "https://1.1.1.1/dns-query"
# DNS over TLS
cloudflare-dot: "tls://1.1.1.1:853"
}
}
routing 块(DNS 路由)
dns {
routing {
request {
# 私有域名走本地 DNS
qname(geosite:private) -> reject # 直接拒绝,防止泄露私有域名
# 国内域名走国内 DNS
qname(geosite:cn) -> alidns
# 其余域名走境外加密 DNS(通过代理)
fallback -> cloudflare-doh
}
response {
# 如果境外 DNS 返回了中国 IP,可能是 DNS 污染,拒绝该结果
# (可选,较为激进)
# upstream(cloudflare-doh) && ip(geoip:cn) -> reject
fallback -> accept
}
}
}
reject 表示拒绝使用该 DNS 查询结果(不是拒绝连接),dae 会继续使用 fallback DNS 的结果。
关于 DNS 透明劫持的工作原理
dae 通过 eBPF 在内核层面拦截所有发往 UDP/TCP 53 端口的 DNS 查询,将其重定向到内置的 DNS 处理模块。这样即使应用程序硬编码了特定的 DNS 服务器地址,dae 也能完全接管 DNS 查询,防止 DNS 泄露。
关于 DNS 泄露防护
dae 的 DNS 劫持在 eBPF 层面工作,比传统的 iptables DNS 劫持更为彻底。即使使用系统调用直接发出 DNS 查询(绕过了大多数用户态 DNS 劫持工具),dae 依然能够拦截,这是其相对于传统方案的重要优势之一。
管理命令
systemd 服务管理
# 启动
systemctl start dae
# 停止
systemctl stop dae
# 重启
systemctl restart dae
# 重新加载配置(不完全重启)
systemctl reload dae
# 查看状态
systemctl status dae
# 查看实时日志
journalctl -u dae -f
# 查看最近 200 行日志
journalctl -u dae -n 200
# 设置开机自启
systemctl enable dae
# 取消开机自启
systemctl disable dae
配置验证
# 验证配置文件语法
dae validate -c /etc/dae/config.dae
# 验证其他位置的配置文件
dae validate -c /path/to/config.dae
更新订阅
dae 支持通过发送信号来刷新订阅节点列表:
# 方法一:重载服务(会重新下载所有订阅)
systemctl reload dae
# 方法二:发送 SIGHUP 信号
kill -SIGHUP $(pgrep dae)
与其他透明代理方案的对比
| 对比维度 | dae(eBPF) | Mihomo + TUN | sing-box + TUN | iptables + 代理 |
|---|---|---|---|---|
| 技术层次 | 内核态(eBPF) | 用户态 + TUN 虚拟网卡 | 用户态 + TUN 虚拟网卡 | 内核 iptables + 用户态 |
| 直连流量开销 | 极低(内核直放行) | 中(经过 TUN 入站再出站) | 中(经过 TUN 入站再出站) | 较低(iptables 放行) |
| 代理流量开销 | 低(减少上下文切换) | 较低 | 较低 | 中 |
| 对内核版本的要求 | 高(5.8+) | 低(4.x 即可) | 低 | 低 |
| 配置复杂度 | 中 | 中 | 较高 | 高 |
| LAN 网关支持 | 完善 | 支持 | 支持 | 支持 |
| 按进程分流 | 支持(需要 root) | 支持(部分) | 支持(部分) | 支持 |
| 平台支持 | 仅 Linux | 跨平台 | 跨平台 | 仅 Linux |
dae 适合哪些用户?
dae 的主要优势在于性能极高,尤其适合以下场景:
- Linux 桌面用户,追求最低的系统开销
- Linux 服务器,需要在高并发连接下也保持低 CPU 占用
- 作为局域网透明代理网关(软路由),需要处理大量并发连接
- 内核版本满足要求,并且不需要跨平台支持
如果你的系统内核版本低于 5.8,或者需要在 Windows / macOS 上使用,dae 不是合适的选择,此时应改用 Mihomo 或 sing-box。
协议支持
dae 支持的协议覆盖了大多数主流方案:
| 协议 | 支持状态 | 备注 |
|---|---|---|
| Shadowsocks(AEAD) | 支持 | — |
| Shadowsocks 2022 | 支持 | — |
| VMess | 支持 | 支持 WebSocket、gRPC 等传输层 |
| VLESS | 支持 | 支持 Reality、XTLS-Vision |
| Trojan | 支持 | — |
| Hysteria 2 | 支持 | — |
| TUIC v5 | 支持 | — |
| AnyTLS | 支持 | 需要较新版本 |
| ShadowTLS v3 | 支持 | — |
| NaiveProxy | 不支持 | — |
| WireGuard | 不支持(作为出站) | WireGuard 接口可作为 LAN 接口绑定 |
| SSH | 不支持 | — |
配合 GUI 工具使用
dae 本身没有图形界面,但社区提供了一些 Web UI 和管理工具:
daed(Web UI)
daed 是 dae 的官方 Web 界面项目,提供了节点管理、分流规则配置、实时流量监控等功能,适合不熟悉命令行配置的用户。
安装 daed:
# daed 是一个集成了 dae 内核和 Web UI 的一体化程序
wget https://github.com/daeuniverse/daed/releases/latest/download/daed-linux-x86_64.zip
unzip daed-linux-x86_64.zip
chmod +x daed
mv daed /usr/bin/daed
创建 systemd 服务单元(/etc/systemd/system/daed.service):
[Unit]
Description=daed Service
Documentation=https://github.com/daeuniverse/daed
After=network.target nss-lookup.target
[Service]
Type=simple
ExecStart=/usr/bin/daed run
LimitNPROC=512
LimitNOFILE=infinity
Restart=on-failure
[Install]
WantedBy=multi-user.target
启动 daed:
systemctl daemon-reload
systemctl enable daed --now
启动后,通过浏览器访问 http://127.0.0.1:2023 即可打开 Web 管理界面。
常见问题
Q:启动时提示 "failed to load eBPF program: permission denied"?
需要以 root 权限运行 dae。通过 systemd 管理时,服务单元通常配置为以 root 身份运行。如果手动启动,请使用 sudo。
另外,检查是否启用了 seccomp 或其他安全模块限制了 eBPF 系统调用,某些容器化环境(如 Docker 默认配置)会限制 eBPF。
Q:提示 "network interface xxx not found"?
配置文件中的 lan_interface 或 wan_interface 中填写的网卡名称不存在或拼写错误。使用 ip link show 查看实际的网卡名称,并更新配置文件。
Q:配置验证通过,但启动后 DNS 无法解析?
可能原因:
dns.upstream中配置的 DNS 服务器无法访问(特别是境外 DoH,可能因为没有代理无法首次连通)auto_config_kernel_parameter未设置为true,内核的 IP 转发参数未自动配置- 防火墙规则阻止了 dae 的 DNS 查询
排查步骤:
# 查看 dae 日志中的错误信息
journalctl -u dae -n 50 --no-pager
# 检查内核 IP 转发是否已启用
sysctl net.ipv4.ip_forward
# 手动启用 IP 转发
sysctl -w net.ipv4.ip_forward=1
Q:代理已生效,但某些应用仍然直连?
检查以下几点:
- 确认
routing块中没有将该应用的域名或 IP 匹配到direct规则 - 如果该应用硬编码了 IP 地址(不通过 DNS),需要在
routing中添加对应的 IP CIDR 规则 - 某些应用使用了非标准端口或协议(如 QUIC/HTTP3),检查
l4proto和port相关的规则
Q:订阅更新后新节点不生效?
执行 systemctl reload dae 或发送 SIGHUP 信号,触发 dae 重新下载并解析订阅:
systemctl reload dae
# 或
kill -SIGHUP $(pgrep dae)
如果重载后仍然使用旧节点,检查订阅 URL 是否可以正常访问,以及 dae 日志中是否有订阅更新失败的错误信息。
Q:开启 LAN 模式后,局域网内其他设备的流量没有被代理?
检查以下几点:
lan_interface配置的网卡是否正确(应为连接局域网的网卡,而非上游网卡)- 运行 dae 的机器是否已被其他设备设置为默认网关
- IP 转发是否已开启(
net.ipv4.ip_forward = 1) - 是否有防火墙规则阻止了从局域网流量的转发(检查
FORWARD链)
# 检查 iptables FORWARD 策略
iptables -L FORWARD -n -v
# 如果默认策略为 DROP,需要添加放行规则
iptables -I FORWARD -i br0 -j ACCEPT
iptables -I FORWARD -o br0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
Q:dae 和 Docker 能同时使用吗?
可以,但需要注意两点:
- 确保 dae 的路由规则中包含针对 Docker 网段的直连规则,避免容器间通信被代理:
ip(172.17.0.0/16) -> direct # Docker 默认网段 ip(172.18.0.0/16) -> direct # Docker Compose 网段(可能不同) - 如果在 Docker 容器中运行应用,dae 的进程名匹配(
pname)可能无法正确识别容器内的进程名,需要改用 IP 或域名规则
Q:dae 升级后是否需要修改配置文件?
通常不需要。dae 保持配置格式的向后兼容性,旧版本的配置文件在新版本中通常可以直接使用。但建议在升级后查阅 Release Notes,确认是否有不兼容的配置变更。
安全注意事项
由于 dae 以 root 权限运行并在内核层面处理所有网络流量,需要特别注意以下安全事项:
- 只从官方渠道下载 dae 二进制文件,避免使用非官方构建的版本
- 定期更新 dae,及时获取安全修复
- 谨慎使用第三方订阅,订阅文件可以指定节点,恶意订阅可能将你的流量发送到攻击者控制的服务器
- 不要在不可信的网络中暴露 dae 的 API 接口(如果启用了 Web UI,确保只监听 127.0.0.1)
- 为 eBPF 程序加载设置适当的权限,避免不必要地扩大 root 权限的作用域
相关资源
- dae 官方文档:github.com/daeuniverse/dae/wiki
- dae GitHub:github.com/daeuniverse/dae
- daed(Web UI):github.com/daeuniverse/daed
- dae-wing(后端 API):github.com/daeuniverse/dae-wing