OVEROUTESOVEROUTES
首页
阅读须知
  • 总览
  • 选购要点
  • 协议详解
  • 客户端使用
  • 概述
  • IP 与线路
  • 选型指南
  • 选购参考
  • 基础部署
  • 安全加固
  • 概述
  • 3X-UI
  • Xboard
  • 协议总览
  • Shadowsocks
  • Shadowsocks 2022
  • VMess
  • Trojan
  • VLESS
  • Hysteria 2
  • TUIC
  • AnyTLS
  • NaiveProxy
  • Mieru
  • ShadowTLS
  • VLESS-XHTTP
  • WireGuard
  • 传统协议
  • 孤家寡人协议
  • 软件总览
  • Mihomo
  • sing-box
  • Xray
  • V2Fly
  • dae (Linux)
  • Shadowrocket (iOS)
  • QuantumultX (iOS)
  • Stash (iOS/macOS)
  • Loon (iOS)
  • Surge (macOS/iOS)
  • NekoBox (Android)
  • Husi (Android)
  • Exclave (Android)
配置
首页
阅读须知
  • 总览
  • 选购要点
  • 协议详解
  • 客户端使用
  • 概述
  • IP 与线路
  • 选型指南
  • 选购参考
  • 基础部署
  • 安全加固
  • 概述
  • 3X-UI
  • Xboard
  • 协议总览
  • Shadowsocks
  • Shadowsocks 2022
  • VMess
  • Trojan
  • VLESS
  • Hysteria 2
  • TUIC
  • AnyTLS
  • NaiveProxy
  • Mieru
  • ShadowTLS
  • VLESS-XHTTP
  • WireGuard
  • 传统协议
  • 孤家寡人协议
  • 软件总览
  • Mihomo
  • sing-box
  • Xray
  • V2Fly
  • dae (Linux)
  • Shadowrocket (iOS)
  • QuantumultX (iOS)
  • Stash (iOS/macOS)
  • Loon (iOS)
  • Surge (macOS/iOS)
  • NekoBox (Android)
  • Husi (Android)
  • Exclave (Android)
配置
  • 全平台

    • 代理软件总览
    • Mihomo
    • sing-box
    • Xray
    • V2Fly
  • Linux

    • dae
  • iOS / macOS

    • Shadowrocket
    • Quantumult X
    • Stash
    • Loon
    • Surge
  • Android

    • NekoBox
    • Husi
    • Exclave

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.86.1 或更高
架构x86_64、arm64、armx86_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 块支持多种匹配条件:

匹配条件

条件示例说明
domaindomain(example.com)精确匹配域名
domaindomain(suffix:example.com)匹配域名及其子域名
domaindomain(keyword:google)匹配包含关键词的域名
domaindomain(geosite:cn)引用 GeoSite 域名集合
domaindomain(regex:^.*\.example\..*$)正则表达式匹配
ipip(192.168.0.0/16)CIDR 匹配
ipip(geoip:cn)引用 GeoIP 集合
ipip(private)匹配所有私有 IP 地址
pnamepname(chrome)匹配进程名(需要 root 权限)
macmac(aa:bb:cc:dd:ee:ff)匹配源 MAC 地址(LAN 模式)
portport(80, 443)匹配目标端口
l4protol4proto(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 + TUNsing-box + TUNiptables + 代理
技术层次内核态(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 无法解析?

可能原因:

  1. dns.upstream 中配置的 DNS 服务器无法访问(特别是境外 DoH,可能因为没有代理无法首次连通)
  2. auto_config_kernel_parameter 未设置为 true,内核的 IP 转发参数未自动配置
  3. 防火墙规则阻止了 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:代理已生效,但某些应用仍然直连?

检查以下几点:

  1. 确认 routing 块中没有将该应用的域名或 IP 匹配到 direct 规则
  2. 如果该应用硬编码了 IP 地址(不通过 DNS),需要在 routing 中添加对应的 IP CIDR 规则
  3. 某些应用使用了非标准端口或协议(如 QUIC/HTTP3),检查 l4proto 和 port 相关的规则

Q:订阅更新后新节点不生效?

执行 systemctl reload dae 或发送 SIGHUP 信号,触发 dae 重新下载并解析订阅:

systemctl reload dae
# 或
kill -SIGHUP $(pgrep dae)

如果重载后仍然使用旧节点,检查订阅 URL 是否可以正常访问,以及 dae 日志中是否有订阅更新失败的错误信息。

Q:开启 LAN 模式后,局域网内其他设备的流量没有被代理?

检查以下几点:

  1. lan_interface 配置的网卡是否正确(应为连接局域网的网卡,而非上游网卡)
  2. 运行 dae 的机器是否已被其他设备设置为默认网关
  3. IP 转发是否已开启(net.ipv4.ip_forward = 1)
  4. 是否有防火墙规则阻止了从局域网流量的转发(检查 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 能同时使用吗?

可以,但需要注意两点:

  1. 确保 dae 的路由规则中包含针对 Docker 网段的直连规则,避免容器间通信被代理:
    ip(172.17.0.0/16) -> direct   # Docker 默认网段
    ip(172.18.0.0/16) -> direct   # Docker Compose 网段(可能不同)
    
  2. 如果在 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

延伸阅读

  • Mihomo — 跨平台代理核心,Linux 低内核版本的替代方案
  • sing-box — 跨平台代理核心,协议支持最全面
  • Xray — 自建节点时的首选服务端程序
  • 代理软件总览 — 回到软件总览页面
最近更新: 2026/4/8 16:01