iStoreOS 软路由安装 daed 大鹅:内核态 eBPF 透明代理装机跑通
本期默认你已经会装 iStoreOS、能 SSH 进路由器。没装过软路由的,先看 iStoreOS 装机基础。
视频主要目标
Section titled “视频主要目标”前几期介绍了在 iStoreOS 软路由上装Openclash、passwall等插件,实现全屋设备不装任何客户端就能够自由上网,最近朋友推荐,说 daed(大鹅)很好用,daed 是跑在内核里的 eBPF 透明代理,比 OpenClash、PassWall 更省 CPU、延迟更低。我用了几天,发现确实很好用,总体评估:轻量、UI简洁、功能逻辑清晰,这里推荐给大家。
视频内容大纲
Section titled “视频内容大纲”- 安装:用 .run 一键包装好 daed,打开面板绑定网卡
- 导入机场 + 住宅订阅(都转 base64 通用格式)
- 建策略组 + 分流:AI / 社交走住宅,其余境外走机场,配 DNS 防泄漏
- 测试验收:出口 IP / AI 登录 / DNS 不泄漏
- 一台装好 iStoreOS 24.10.x 的软路由(x86 或 ARM 盒子均可)
- 一份订阅链接:必须是 base64 / v2ray 通用格式(daed 不认 Clash YAML),vmess / vless / trojan / ss / hysteria2 / anytls 都支持。
- 一份住宅 IP 订阅(解锁 AI / 社交才需要):机房 IP 的机场节点几乎必被 ChatGPT / Claude / X 风控,这类流量得走住宅出口。没有现成住宅线路的,看下面往期视频。
往期视频(建议先看)
Section titled “往期视频(建议先看)”- 没装过软路由 / 还在老固件 → 先把系统刷到 iStoreOS 24.10,再回来装 daed。
- 没有住宅线路 → CF 住宅出口链式代理
第一步:确认 iStoreOS 版本与内核
Section titled “第一步:确认 iStoreOS 版本与内核”SSH 进路由器,确认内核版本够格:
uname -r期望返回 6.6.x(如 6.6.135)——记下这个完整版本号,下一步选包要对得上。
如果返回 5.15.x 或更低 → 你还在 iStoreOS 22.03,dae 绑定网卡会失败,请先把固件升级到 24.10 再继续。
第二步:下载对应架构的 .run 一键包
Section titled “第二步:下载对应架构的 .run 一键包”到 wkccd/luci-app-daed-runfiles 的 Releases 下载最新版(当前 v1.28.0),按「OpenWrt 版本 + 架构」选文件:
| 你的软路由 | OpenWrt 版本 | 选这个架构 |
|---|---|---|
| x86 软路由 | 24.10(内核 6.6.x) | x86-64 |
| ARM 盒子 | 24.10(内核 6.6.x) | aarch64_generic |
⚠️ 别拿错版本:iStoreOS 24.10 对应内核 6.6.x,必须选 24.10 那一组。选成 25.12(内核 6.12.x)的包,里面的 vmlinux-btf 跟你的内核对不上,装完照样起不来。
包里已含 daed 本体、luci-app-daed 面板、中文包、geoip/geosite 数据库,以及匹配内核的 vmlinux-btf——一个文件装齐,不用再单独配 BTF。
第三步:上传 .run 到路由器
Section titled “第三步:上传 .run 到路由器”把下载好的 .run 传到路由器的 /tmp 目录。任选一种:
# 方式 A:电脑上用 scp 推(把文件名和路由器 IP 换成你的)scp luci-app-daed_x.x.x_24.10_x86-64.run root@192.168.1.1:/tmp/也可以用 iStoreOS 自带的「文件助手」网页上传到 /tmp,效果一样。
第四步:运行 install.sh 安装
Section titled “第四步:运行 install.sh 安装”SSH 进路由器,进入 /tmp,给脚本自解压并安装:
cd /tmpsh luci-app-daed_x.x.x_24.10_x86-64.run.run 是 makeself 自解压包,运行后会自动解包并执行内置的 install.sh,依次装上 daed、面板、中文包、geoip/geosite 和 vmlinux-btf 模块。
验证:看脚本输出是否全部 Installed,无报错。也可手动确认服务在:
/etc/init.d/daed status期望看到 daed 服务已安装、可启动。如果提示 eBPF / BTF 相关加载失败 → 多半是包的内核版本和 uname -r 对不上,回第二步重选正确版本。
第五步:打开 daed 面板
Section titled “第五步:打开 daed 面板”刷新路由器后台(LuCI),左侧菜单出现 服务 → daed(或 daed 独立入口),点进去就是面板。
💡 首次打开如果是英文界面,面板里有语言切换;中文包已随
.run装好,切到「简体中文」即可。
第六步:绑定网络接口(最关键的一步)
Section titled “第六步:绑定网络接口(最关键的一步)”进入面板的 Config(配置)→ global(全局),设置接口与节点检查 DNS:
| 字段 | 填什么 | 作用 |
|---|---|---|
lan_interface | br-lan | 局域网桥接口,daed 从这里接管内网设备的流量 |
wan_interface | 你的真实 WAN 口(如 eth0 / wan) | 出口网卡,代理后的流量从这里出去 |
udp_check_dns | 223.5.5.5:53 | 节点检查走国内直连 DNS,不依赖外网解析 |
⚠️ 绑错接口 = 不通或回环,这是首次配置最容易翻车的地方。不确定 WAN 口名的,在路由器跑
ip route | grep default,dev后面那个就是真实出口网卡名。
第七步:导入订阅(机场 + 住宅)
Section titled “第七步:导入订阅(机场 + 住宅)”⚠️ 两个订阅都必须是 base64 / v2ray / 通用格式,daed 不认 Clash(YAML)订阅——粘 Clash 链接会一个节点都拉不到。
进 Subscription(订阅),把两条链接分别加进去、各打一个 tag,保存更新,节点自动拉下来:
| 订阅 | tag | 用途 |
|---|---|---|
| 机场订阅 | airport | 日常 + 海外大流量 |
| 住宅 IP 订阅 | home | AI / 社交出口 |
💡 只有 Clash 链接时,用 subconverter 转 base64 再填:
https://<subconverter>/sub?target=mixed&url=<URL编码后的clash链接>(target=mixed即 base64 通用格式;公共实例能看到你的节点、慎用)。
第八步:建策略组 + 配分流与 DNS
Section titled “第八步:建策略组 + 配分流与 DNS”本期核心。两个订阅都进来后,建两个组、写一套分流规则、配一段防泄漏 DNS。
1. 两个策略组(Group 页,按订阅 tag 过滤):
| 组名 | 过滤 | 策略 |
|---|---|---|
proxy | subtag(airport) 机场节点 | min_moving_avg |
residential | subtag(home) 住宅节点 | min_moving_avg |
2. 分流规则(Config → 路由,进阶模式)——一句话:AI/社交 → 住宅 residential,其余境外 → 机场 proxy,国内直连:
# —— 系统进程白名单 ——pname(NetworkManager, systemd-resolved, dnsmasq, systemd-networkd, chronyd, ntpd,dhcpcd) -> must_directdip(geoip:private) -> directdport(53) && !dip(223.5.5.5, 119.29.29.29, 114.114.114.114,180.184.1.1) -> proxy
# —— AI:走住宅,必须放最前 ——domain(geosite:openai) -> residentialdomain(suffix: anthropic.com, suffix: claude.ai) -> residentialdomain(suffix: gemini.google.com, suffix: ai.google.dev, suffix: aistudio.google.com, suffix: generativelanguage.googleapis.com, suffix: notebooklm.google.com, suffix: deepmind.google) -> residentialdomain(suffix: x.ai, suffix: grok.com) -> residentialdomain(suffix: perplexity.ai) -> residentialdomain(suffix: cursor.com, suffix: cursor.sh) -> residentialdomain(suffix: codeium.com, suffix: windsurf.com, suffix: windsurf.ai) -> residentialdomain(suffix: huggingface.co, suffix: hf.co) -> residential
# —— AI + 社交:走住宅,必须放在国内 IP 规则之前 ——domain(geosite:twitter) -> residential # 已含 x.comdomain(geosite:facebook) -> residentialdomain(geosite:instagram) -> residentialdomain(geosite:whatsapp) -> residentialdomain(geosite:tiktok) -> residentialdomain(geosite:linkedin) -> residential # 登录强检测domain(geosite:reddit) -> residential
# —— 个人特殊 ——domain(geosite:youtube) -> residential
# —— 国内直连 ——domain(geosite:apple-cn) -> directdomain(geosite:apple) -> direct # 国际 Apple 服务国内能直连domain(geosite:cn) -> directdip(geoip:cn) -> direct
# —— 海外大流量留机场,省住宅带宽 ——domain(geosite:netflix,geosite:disney,geosite:github,geosite:telegram) -> proxyfallback: proxy💡 ① AI/社交两行必须在
geoip:cn之前,否则 AI 域名解析到国内 CDN IP 会被判直连、泄漏你家 IP。②fallback用冒号、不是箭头。③geosite:meta报错就换geosite:facebook, geosite:instagram。④ 苹果/微软国内白名单等细分行可按需补,不影响主干。
3. DNS 防泄漏(Config → DNS,进阶模式)——国内域名走阿里、境外走 googledns 且跟代理出隧道,ISP 看不到境外解析:
upstream { alidns: 'udp://223.5.5.5:53' googledns: 'tcp+udp://8.8.8.8:53'}routing { request { qtype(AAAA) -> reject qname(geosite:cn) -> alidns fallback: googledns } response { upstream(googledns) -> accept ip(geoip:cn) && !qname(geosite:cn) -> googledns fallback: accept }}💡 这段和分流里的
dport(53)规则互为双保险。googledns必须用 IP(8.8.8.8),不要用dns.google域名,也不要换 DoH。
第九步:启动 daed 并验收
Section titled “第九步:启动 daed 并验收”回面板首页点 Run / 启动,状态变 running、节点栏刷出延迟数值,说明 eBPF 已加载、代理在跑。然后做四项验收:
- 延迟探测:面板里点节点测延迟,有正常毫秒数(不是 timeout)。
- 查出口 IP:访问 ip.net.coffee,出口 IP 是机场节点 IP、不是你家宽带 IP。
- AI / 社交走住宅:打开 ChatGPT / Gemini 能正常登录、不弹「unusual activity」/区域限制 → 住宅出口生效。想确认 IP,临时把
ip.net.coffee也加进住宅规则,看到的应是住宅 IP。 - 查 DNS 泄漏:访问 browserleaks.com/dns 或 dnsleaktest.com,列出的 DNS 服务器是境外解析商、不含你家 ISP / 国内运营商 DNS → 没泄漏。
装完 daed 启动不了,提示 eBPF / BTF 加载失败
Section titled “装完 daed 启动不了,提示 eBPF / BTF 加载失败”原因:内核缺 BTF,或 vmlinux-btf 模块和当前内核版本对不上。iStoreOS 官方固件默认不带 BTF,全靠 .run 里那份匹配的 vmlinux-btf 补齐。
解决:
- 跑
uname -r拿到完整内核号,回第二步确认下载的包是 24.10 + 正确架构,版本号要和内核对得上(至少大版本 6.6 一致)。 - 升级过固件 / 换过内核后 daed 突然失效 → 是新内核和旧 vmlinux-btf 不匹配了,重新下当前内核对应的
.run重装一遍。
iStoreOS 还是 22.03 / 内核 5.15,能装吗
Section titled “iStoreOS 还是 22.03 / 内核 5.15,能装吗”原因:dae 绑定 lan/wan 接口要求内核 ≥ 5.17,5.15 不满足。
解决:升级到 iStoreOS 24.10.x(内核 6.6.x)。这是 daed 能跑的最低基线,没有捷径。
装了 daed,原来的 OpenClash / PassWall 还开着
Section titled “装了 daed,原来的 OpenClash / PassWall 还开着”原因:多个透明代理 / 防火墙重定向会互相打架,流量被抢、出现回环或时通时断。
解决:同一时间只跑一个代理后端。装 daed 前先停掉并禁用 OpenClash / PassWall(关掉开机自启),只留 daed。
机场订阅填进去拉不到节点
Section titled “机场订阅填进去拉不到节点”原因:daed 只认 base64 / v2ray / 通用订阅,不认 Clash(YAML)订阅;另外 daed 是直连去拉订阅,机场域名在路由器上不通也会拉空。
解决:
- 先在机场后台换成名字带 v2ray / 通用 / base64 的订阅链接重粘一次——最常见就是这条没选对。
- 只有 Clash 链接时,用 subconverter 转 base64:
https://<subconverter>/sub?target=mixed&url=<URL编码后的clash链接>。 - 还拉不到,SSH 进路由器直连测一下:
curl -sL -A "v2rayN/6.45" "<你的订阅链接>" | head -c 300——出现vmess:/// base64 乱码 = 格式对;出现proxies:YAML = Clash 格式(去转);超时 / 证书错 = 机场域名直连不通,换备用域名或自建 subconverter。
daed 和 OpenClash 到底选哪个
Section titled “daed 和 OpenClash 到底选哪个”原因:两者定位不同。daed(eBPF 内核态)省 CPU、延迟低、直连更纯粹,但挑内核、概念新;OpenClash/PassWall 生态成熟、教程多、几乎不挑内核。
解决:软路由内核够格(24.10)、想要更低占用就上 daed;图省事、要海量现成规则就留 OpenClash。本期演示的是前者。
⚠️ 免责声明:本教程仅供技术学习与网络安全研究交流,请遵守您所在国家/地区的相关法律法规及目标平台的服务条款,切勿用于任何违法用途。