本期默认你已经会装 iStoreOS、能 SSH 进路由器。没装过软路由的,先看 iStoreOS 装机基础。

视频回看

视频主要目标

前几期介绍了在 iStoreOS 软路由上装Openclash、passwall等插件,实现全屋设备不装任何客户端就能够自由上网,最近朋友推荐,说 daed(大鹅)很好用,daed 是跑在内核里的 eBPF 透明代理,比 OpenClash、PassWall 更省 CPU、延迟更低。我用了几天,发现确实很好用,总体评估:轻量、UI简洁、功能逻辑清晰,这里推荐给大家。

视频内容大纲

  • 安装:用 .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 风控,这类流量得走住宅出口。没有现成住宅线路的,看下面往期视频。

往期视频(建议先看)


操作步骤

第一步:确认 iStoreOS 版本与内核

SSH 进路由器,确认内核版本够格:

uname -r

期望返回 6.6.x(如 6.6.135)——记下这个完整版本号,下一步选包要对得上。 如果返回 5.15.x 或更低 → 你还在 iStoreOS 22.03,dae 绑定网卡会失败,请先把固件升级到 24.10 再继续。


第二步:下载对应架构的 .run 一键包

wkccd/luci-app-daed-runfilesReleases 下载最新版(当前 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 到路由器

把下载好的 .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 安装

SSH 进路由器,进入 /tmp,给脚本自解压并安装:

cd /tmp
sh 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 面板

刷新路由器后台(LuCI),左侧菜单出现 服务 → daed(或 daed 独立入口),点进去就是面板。

💡 首次打开如果是英文界面,面板里有语言切换;中文包已随 .run 装好,切到「简体中文」即可。


第六步:绑定网络接口(最关键的一步)

进入面板的 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 defaultdev 后面那个就是真实出口网卡名。


第七步:导入订阅(机场 + 住宅)

⚠️ 两个订阅都必须是 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

本期核心。两个订阅都进来后,建两个组、写一套分流规则、配一段防泄漏 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_direct
dip(geoip:private) -> direct
dport(53) && !dip(223.5.5.5, 119.29.29.29, 114.114.114.114,180.184.1.1) -> proxy

# —— AI:走住宅,必须放最前 ——
domain(geosite:openai) -> residential
domain(suffix: anthropic.com, suffix: claude.ai) -> residential
domain(suffix: gemini.google.com, suffix: ai.google.dev, suffix: aistudio.google.com, suffix: generativelanguage.googleapis.com, suffix: notebooklm.google.com, suffix: deepmind.google) -> residential
domain(suffix: x.ai, suffix: grok.com) -> residential
domain(suffix: perplexity.ai) -> residential
domain(suffix: cursor.com, suffix: cursor.sh) -> residential
domain(suffix: codeium.com, suffix: windsurf.com, suffix: windsurf.ai) -> residential
domain(suffix: huggingface.co, suffix: hf.co) -> residential

# —— AI + 社交:走住宅,必须放在国内 IP 规则之前 ——
domain(geosite:twitter) -> residential                          # 已含 x.com
domain(geosite:facebook) -> residential
domain(geosite:instagram) -> residential
domain(geosite:whatsapp) -> residential
domain(geosite:tiktok) -> residential
domain(geosite:linkedin) -> residential                         # 登录强检测
domain(geosite:reddit) -> residential

# —— 个人特殊 ——
domain(geosite:youtube) -> residential

# —— 国内直连 ——
domain(geosite:apple-cn) -> direct
domain(geosite:apple) -> direct                                 # 国际 Apple 服务国内能直连
domain(geosite:cn) -> direct
dip(geoip:cn) -> direct

# —— 海外大流量留机场,省住宅带宽 ——
domain(geosite:netflix,geosite:disney,geosite:github,geosite:telegram) -> proxy
fallback: 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 并验收

回面板首页点 Run / 启动,状态变 running、节点栏刷出延迟数值,说明 eBPF 已加载、代理在跑。然后做四项验收:

  • 延迟探测:面板里点节点测延迟,有正常毫秒数(不是 timeout)。

  • 查出口 IP:访问 ip.net.coffee,出口 IP 是机场节点 IP、不是你家宽带 IP。

  • AI / 社交走住宅:打开 ChatGPT / Gemini 能正常登录、不弹「unusual activity」/区域限制 → 住宅出口生效。想确认 IP,临时把 ip.net.coffee 也加进住宅规则,看到的应是住宅 IP。

  • 查 DNS 泄漏:访问 browserleaks.com/dnsdnsleaktest.com,列出的 DNS 服务器是境外解析商、不含你家 ISP / 国内运营商 DNS → 没泄漏。


常见问题

装完 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,能装吗

原因:dae 绑定 lan/wan 接口要求内核 ≥ 5.17,5.15 不满足。

解决:升级到 iStoreOS 24.10.x(内核 6.6.x)。这是 daed 能跑的最低基线,没有捷径。

装了 daed,原来的 OpenClash / PassWall 还开着

原因:多个透明代理 / 防火墙重定向会互相打架,流量被抢、出现回环或时通时断。

解决:同一时间只跑一个代理后端。装 daed 前先停掉并禁用 OpenClash / PassWall(关掉开机自启),只留 daed。

机场订阅填进去拉不到节点

原因: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 到底选哪个

原因:两者定位不同。daed(eBPF 内核态)省 CPU、延迟低、直连更纯粹,但挑内核、概念新;OpenClash/PassWall 生态成熟、教程多、几乎不挑内核。

解决:软路由内核够格(24.10)、想要更低占用就上 daed;图省事、要海量现成规则就留 OpenClash。本期演示的是前者。