惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Project Zero
Project Zero
WordPress大学
WordPress大学
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
Visual Studio Blog
爱范儿
爱范儿
P
Proofpoint News Feed
F
Fortinet All Blogs
雷峰网
雷峰网
小众软件
小众软件
Jina AI
Jina AI
人人都是产品经理
人人都是产品经理
TaoSecurity Blog
TaoSecurity Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
S
Secure Thoughts
Recent Commits to openclaw:main
Recent Commits to openclaw:main
博客园 - 司徒正美
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Microsoft Azure Blog
Microsoft Azure Blog
IT之家
IT之家
S
Security @ Cisco Blogs
Help Net Security
Help Net Security
GbyAI
GbyAI
Webroot Blog
Webroot Blog
T
Troy Hunt's Blog
B
Blog
MongoDB | Blog
MongoDB | Blog
月光博客
月光博客
H
Heimdal Security Blog
Google Online Security Blog
Google Online Security Blog
S
Security Affairs
云风的 BLOG
云风的 BLOG
Engineering at Meta
Engineering at Meta
www.infosecurity-magazine.com
www.infosecurity-magazine.com
H
Help Net Security
O
OpenAI News
H
Hacker News: Front Page
博客园 - 叶小钗
Last Week in AI
Last Week in AI
S
Schneier on Security
The Last Watchdog
The Last Watchdog
C
Cyber Attacks, Cyber Crime and Cyber Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
MyScale Blog
MyScale Blog
Recorded Future
Recorded Future
博客园 - 【当耐特】
V
Vulnerabilities – Threatpost
大猫的无限游戏
大猫的无限游戏
N
News | PayPal Newsroom
The Hacker News
The Hacker News
A
Arctic Wolf

mephisto.cc

修复rime-ice无法弹出候选框的问题 开机滚动字体显示优化 个人网站安全防护 树莓派上部署Vaultwarden 使用goaccess实时分析Caddy日志 个人网站监控 Hugo全站AVIF记 Linux下尝试使用Godot开发小游戏 Airflow接管galler-dl下载任务 如何使用gallery-dl批量下载图像 Arch核显下如何愉快玩Dota2和CS2 Arch/labwc 环境网络相关设置 Rime添加dota2词库 Arch 重装记录 Supertuxkart iOS版终于发布了 打造自己的流媒体音乐服务 剪切板管理工具clipcat推荐 MangoHud性能监控 微信小程序开发记 Rofi试用 解决Arch下VSCode无法输入中文的问题 独立窗口管理器下无法录屏问题处理 上海市二手房成交数据监控 OpenLDAP监控 Arch linux如何顺畅连接蓝牙设备 使用Git和Ansible管理配置文件 Arch Linux SSL VPN 客户端配置 简单获取celery任务实时结果 Arch linux下iNode客户端的安装和使用方法 券商费率调整记 迷你主机组装记 Labwc更换定制皮肤 树莓派跑分流代理 实用自动代理配置示例 九年老鼠标复活记 Openvpn示例 Mac下如何旋转webp图片 如何隐藏Vscode中Markdown PDF插件的头部内容 解决Linux下网络配置无法变更保存的问题 labwc环境启用wlogout Ubuntu下新官方微信尝鲜 简单检测用户是否开启广告屏蔽 Atuin ZFS下卡顿问题解决 Wine安装64位微信 Fish 和 Atuin使用记 Fastapi简单实现临时下载链接 Fastapi微信公众号开发简要 Hugo根据语种展示不同内容 如何修复Waybar微信图标错误 信封加密简要 Linux环境下维护公众号记录 快速隐藏和呼出终端 Wayland环境自动切换壁纸 SuperTuxKart 试玩 简单抓取雪球股票快讯 为什么你的kill命令不能列出信号表 Wine安装微信保姆教程 Hysteria科学上网简要 Ubuntu 23.10 钉钉无法启动解决方法 网站导航栏防止插入Adsense自动广告 Linux环境按键检测 Hugo文末添加最后修改时间 Wayland环境ksnip无法复制问题解决 我眼中的股票市场 Caddy简单图片防盗链 greetd和regreet使用教程 Wayland环境下截图加后期修改 Wayland 环境下gif录屏 Firefox的一些有趣功能 Ubuntu 切换系统语言 Firefox 标题栏高度调整 网站添加回到顶部功能 Hugo自定义字体 Labwc 便捷配置 Wofi使用教程 窗口管理器labwc使用记 文件共享软件Dufs推荐 Hugo静态站点接入Adsense广告 Fcitx5配置详解 Ubuntu安装chrome的方法总结 一种Xterm.js的全屏方案 Google网址收录api Python示例 手机听离线音乐 Snipe it资产导入 应用启动器yofi使用配置 Snipe it资产管理系统安装使用 Ubuntu开机启动加速 Vue3 vite TypeScript跨域等相关设置 Ubuntu手动升级Libreoffice Ubuntu设置alacritty为默认终端 简体文章批量转换为繁体 使用Inkscape调整svg图片大小 实用命令 使用mitmproxy给手机app抓包 Python中rstrip方法细解 Github同主机多仓库部署deploy key问题处理 Linux安装最新版本Python KeePassXC使用教程 Ubuntu 22.10连接蓝牙耳机报错br-connection-profile-unavailable解决方法 Caddy日志配置轮转和格式化
Arch linux dae 透明代理
2026-01-03 · via mephisto.cc

最近在查一些资料的时候,发现了个叫 dae 的透明代理,中文名叫大鹅(或者吃鹅?),相比 sing-box、v2ray 等来说是基于 Linux eBPF 的。

所谓 eBPF(extended Berkeley Packet Filter)是一种强大的内核技术,最初源于 BSD 系统中的 BPF(Berkeley Packet Filter),用于高效地过滤网络数据包。在 Linux 中,eBPF 已经演变为一种通用的、安全的、高性能的内核可编程机制,允许用户在不修改内核源码、无需加载内核模块(如 LKM)的情况下,在内核中运行沙箱化的程序。在可观测性、网络、安全、性能优化等领域有应用,一些求职招聘要求上也瞄到过,没想到都卷到透明代理上去了,理论上会比纯用户态代理性能好。

本来这个东西合适部署到路由器或者树莓派等设备上,供其它设备使用,但是 dae 对内核版本有要求,且 arm 设备还要额外编译内核,我的 sing-box 在树莓派上稳定跑好几年了,实在懒得折腾。

所以,只能在 Arch linux 主机上体验安装了,过程如下:

1. 安装

查看包信息,依赖如下:

1➜  ~ paru -Qi dae | grep Depends
2Depends On      : glibc  v2ray-geoip  v2ray-domain-list-community

v2ray 大概是为其提供 geoip 等分流数据(下面的软链接中可看出)

1➜  ~ ls -al /usr/share/dae/geoip.dat
2lrwxrwxrwx 1 root root 26 Dec 28 14:36 /usr/share/dae/geoip.dat -> /usr/share/v2ray/geoip.dat

2. 配置

我个人体验下来,这个配置逻辑和 sing-box 对比起来,真是清晰简单多了。sing-box 的配置动不动就冒出不兼容变动,一更新就跑不起来了。

dae 官方文档也有些示例,基本很少配置就能搞定分流规则,这点来说值得点赞👍

我的配置如下(hysteria2 部分脱敏处理了):

 1➜  ~ sudo cat /etc/dae/config.dae
 2global {
 3    # lan_interface: auto
 4    wan_interface: auto
 5    log_level: info
 6    auto_config_kernel_parameter: true
 7    allow_insecure: true
 8    bandwidth_max_tx: '20 m' # uplink, or '200 m' or '200 mb' or '200 mbps' or 25000000(which is 200/8*1000*1000)
 9    bandwidth_max_rx: '100 m'
10}
11
12node {
13    hy2: "hysteria2://password@host:port/?sni=your_name"
14}
15
16dns {
17    upstream {
18        alidns: "udp://dns.alidns.com:53"
19        googledns: "tcp+udp://dns.google:53"
20    }
21    routing {
22        request {
23            fallback: alidns
24        }
25        response {
26      	    upstream(googledns) -> accept
27            ip(geoip:private) && !qname(geosite:cn) -> googledns
28            fallback: accept
29        }
30    }
31}
32
33group {
34    proxy_group {
35        filter: name(hy2)
36        policy: random
37    }
38}
39
40routing {
41
42    pname(NetworkManager) -> direct
43    pname("dnsmasq") -> direct
44
45    #game
46    pname("Counter-Strike") -> direct
47
48    dip("127.0.0.0/8") -> direct
49
50    dip("::1/128") -> direct
51
52    dip(224.0.0.0/3, 'ff00::/8') -> direct
53
54    dip(geoip:private) -> direct
55
56    dip(geoip:cn) -> direct
57    domain(geosite:cn) -> direct
58
59    fallback: proxy_group
60}

大概意思是:

  • global 中设置一些全局配置
  • node 中配置真实的后端代理,比如我这里写的 hysteria2,每个代理能自定义一个名字(比如我这里叫 hy2)
  • group 给代理分组归类,方便分流
  • dns 这个是 dns 相关配置,上面示例的意思是,返回了私有 IP 且非中国域名,重新用 googledns 查询该域名,默认 alidns
  • routing 此部分最核心,分流规则。pname 匹配进程名,dip 匹配 ip 地址,domain 匹配域名,direct意思就是不走后端代理直连,fallabck 规则都没命中就走代理。这样应该就能很容易理解上面的分流规则了,可以根据自己的理解编写规则。

如何检查配置错误?dae 自带核查命令,如下所示:

1sudo dae validate -c /etc/dae/config.dae

没报错的话就说明配置合规。

如何知道某个请求走了代理?我个人是通过日志判断的。

日志级别 log_level: info 设置为 info 以上,通过命令过滤查看

1➜  ~ sudo journalctl -u dae -f |grep hy2
2Jan 03 19:04:58 minipc dae[199596]: level=info msg="192.168.124.5:39926 <-> api.zed.dev:443" dialer=hy2 dscp=0 ip="104.20.29.242:443" mac="e4:c7:67:3f:6a:06" network=tcp4 outbound="proxy_group" pid=0 pname=zed-editor policy=random sniffed=api.zed.dev
3Jan 03 19:06:07 minipc dae[199596]: level=info msg="192.168.124.5:52356 <-> alive.github.com:443" dialer=hy2 dscp=0 ip="140.82.112.26:443" mac="e4:c7:67:3f:6a:06" network=tcp4 outbound="proxy_group" pid=0 pname=firefox policy=random sniffed=alive.github.com

比如上面日志输出中可看出 api.zed.devalive.github.com 是走了代理 hy2 的 dialer=hy2, 如果是 dialer=direct 即表示直连。

3. 启动和查看信息

设置开机启动

1sudo systemctl enable dae.service

启动

1sudo systemctl start dae.service

顺利启动没报错的话,可看出多了一个虚拟网卡 dae0@if15, 脱敏处理,其它网卡信息我手动删除了。

 1➜  ~ ip a
 21: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
 3    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 4    inet 127.0.0.1/8 scope host lo
 5       valid_lft forever preferred_lft forever
 6    inet6 ::1/128 scope host noprefixroute
 7       valid_lft forever preferred_lft forever
 8
 916: dae0@if15: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
10    link/ether be:62:be:53:a7:f6 brd ff:ff:ff:ff:ff:ff link-netns daens
11    inet6 fe80::ecee:eeff:feee:eeee/128 scope link
12       valid_lft forever preferred_lft forever
13    inet6 fe80::b02d:10ff:fea8:77b2/64 scope link proto kernel_ll
14       valid_lft forever preferred_lft forever

查看进程

1➜  ~ ps -ef |grep config.dae
2root      199596       1  0 18:19 ?        00:00:06 /usr/bin/dae run --disable-timestamp -c /etc/dae/config.dae

也可用 lsof 命令看看打开了哪些文件,便于推断有什么依赖,这里就不贴示例了。

还可以通过 bpftool 命令查看更具体的信息。

 1➜  ~ sudo bpftool prog show | grep -A3 -B3 dae
 2	loaded_at 2026-01-03T18:19:08+0800  uid 0
 3	xlated 976B  jited 527B  memlock 4096B  map_ids 22,105
 4	btf_id 330
 5	pids dae(199596)
 6192: sk_msg  name sk_msg_fast_redirect  tag 61fe221e8612c076  gpl
 7	loaded_at 2026-01-03T18:19:08+0800  uid 0
 8	xlated 528B  jited 328B  memlock 4096B  map_ids 105
 9	btf_id 331
10	pids dae(199596)
11193: sched_cls  name tproxy_dae0_ingress  tag 8e50bed694efcc1a  gpl
12	loaded_at 2026-01-03T18:19:08+0800  uid 0
13	xlated 600B  jited 344B  memlock 4096B  map_ids 106
14	btf_id 333
15	pids dae(199596)
16......

实际体验,启动 dae 比 sing-box 要慢。

4. 测试效果

使用 curl 命令测试访问 google 和 百度,都访问正常。

1➜  ~ curl google.com
2<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
3<TITLE>301 Moved</TITLE></HEAD><BODY>
4<H1>301 Moved</H1>
5The document has moved
6<A HREF="http://www.google.com/">here</A>.
7</BODY></HTML>
8➜  ~ curl baidu.com
9<a href="http://www.baidu.com/">Moved Permanently</a>.

查看日志,可看出是否分流正确。

1➜  ~ sudo journalctl -u dae -f
2Jan 03 19:27:15 minipc dae[199596]: level=info msg="192.168.124.5:44187 <-> 223.5.5.5:53" _qname=google.com. dialer=direct dscp=0 mac="e4:c7:67:3f:6a:06" network="udp4(DNS)" outbound=direct pid=849 pname=dnsmasq policy=fixed qtype=AAAA
3Jan 03 19:27:15 minipc dae[199596]: level=info msg="192.168.124.5:52111 <-> 223.5.5.5:53" _qname=google.com. dialer=direct dscp=0 mac="e4:c7:67:3f:6a:06" network="udp4(DNS)" outbound=direct pid=849 pname=dnsmasq policy=fixed qtype=A
4Jan 03 19:27:15 minipc dae[199596]: level=info msg="192.168.124.5:54620 <-> google.com:80" dialer=hy2 dscp=0 ip="142.251.33.78:80" mac="e4:c7:67:3f:6a:06" network=tcp4 outbound="proxy_group" pid=0 pname=curl policy=random sniffed=google.com
5Jan 03 19:28:14 minipc dae[199596]: level=info msg="192.168.124.5:59191 <-> 223.5.5.5:53" _qname=baidu.com. dialer=direct dscp=0 mac="e4:c7:67:3f:6a:06" network="udp4(DNS)" outbound=direct pid=849 pname=dnsmasq policy=fixed qtype=AAAA
6Jan 03 19:28:14 minipc dae[199596]: level=info msg="192.168.124.5:36765 <-> 223.5.5.5:53" _qname=baidu.com. dialer=direct dscp=0 mac="e4:c7:67:3f:6a:06" network="udp4(DNS)" outbound=direct pid=849 pname=dnsmasq policy=fixed qtype=A

可看出 dns 查询都是 alidns,一个走代理,一个是直连。

全局透明代理,相比我之前的 firefox 浏览器设置 proxy.pac 等还是要方便些。因为很多软件是不支持或者你自己不想设置代理的,比如 paru 设置代理就比较麻烦,下载外网的软件包就会非常慢;steam 这种打游戏的,肯定不希望默认路由到外国。如果不玩游戏只查看 steam 游戏商店时,开启代理优势明显,访问速度非常快,原因你懂的。

要说速度,我感觉比 sing-box 快一点,也有可能是错觉,sing-box 也满足需求,多一个选择也挺好。

如果有一天,不用做这些分流动作,那场面简直不敢想象,人终要面对现实,现状是必须学习代理技术。

此外 dae 还有个 web 界面的版本,方便人在 web 上配置的,初看了下,提不起兴趣,读者可自行试用。