V2 上关于 dae(大鹅)(ebpf)的讨论还是比较少啊,完美的旁路科学方案了吧? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yyysuo
V2EX    宽带症候群

V2 上关于 dae(大鹅)(ebpf)的讨论还是比较少啊,完美的旁路科学方案了吧?

  •  
  •   yyysuo 2023-10-17 17:13:20 +08:00 16020 次点击
    这是一个创建于 728 天前的主题,其中的信息可能已经有所发展或是发生改变。
    步骤:
    1:装个 debian
    2:装个大鹅
    3:添加节点或者订阅,启用大鹅,debian 成为透明旁路网关
    4:主路由下发大鹅的 ip 作为网关和 dns

    大鹅电报群: https://t.me/daeuniverse https://t.me/MetaKernel

    跑分: https://docs.google.com/spreadsheets/d/1UaWU6nNho7edBNjNqC8dfGXLlW0-cm84MM7sH6Gp7UE/edit?pli=1#gid=1965963111

    安装命令: https://github.com/daeuniverse/daed/blob/main/docs/getting-started.md

    github: https://github.com/daeuniverse/daed/releases
    71 条回复    2025-08-30 11:16:00 +08:00
    Fish1024
        1
    Fish1024  
       2023-10-17 17:24:09 +08:00
    1. 刷个 openwrt
    2. 添加订阅
    3. 主路由下发 openwrt 的 ip 作为网关和 dns

    比这个大鹅简单吧?
    SkywalkerJi
        2
    SkywalkerJi  
       2023-10-17 17:29:46 +08:00 via Android
    和 openwrt 比有什么优势?
    yyysuo
        3
    yyysuo  
    OP
       2023-10-17 17:30:47 +08:00
    @SkywalkerJi ebpf ,据说对国内的速度影响最小,约等于直连,应该跟 openwrt 比,这是旁路,原来的主路由可以不动,把主路由上的科学关了就好。
    yyysuo
        4
    yyysuo  
    OP
       2023-10-17 17:31:15 +08:00
    不应该跟 openwrt 比。
    sarices
        5
    sarices  
       2023-10-17 17:32:13 +08:00
    如何使用现有 clash 分流规则?
    yyysuo
        6
    yyysuo  
    OP
       2023-10-17 17:35:09 +08:00
    @sarices 默认 geosite 分流吧,可以自己写分流规则,也可以再装一个 debian ,裸跑 clash ,clash 开个 ss 服务端,供大鹅使用,套娃。
    https://github.com/daeuniverse/dae/discussions/81
    icetea12138
        7
    icetea12138  
       2023-10-17 17:36:18 +08:00
    这种方案客户端还是要手动改网关才行吧?
    yyysuo
        8
    yyysuo  
    OP
       2023-10-17 17:37:22 +08:00
    @icetea12138 openwrt 可以直接下发大鹅机的 ip 为网关和 dns 。
    设置 DHCP 的附加选项,例如设定 "6,192.168.2.1,192.168.2.2" 表示通告不同的 DNS 服务器给客户端。
    tty228
        9
    tty228  
       2023-10-17 17:46:54 +08:00
    OpenWrt 也可以装 dae 啊
    Archeb
        10
    Archeb  
       2023-10-17 18:34:58 +08:00
    确实是一个很先进的解决方案。

    但它主要解决的是性能问题,而这一点在其主要受众的网络环境中不明显或者有更多更简单的 workaround 。对已经有现存方案的环境来说,去改用 dae 的动力不大;但如果是新部署的环境的话,我会愿意试用一下它。
    OLOrz
        11
    OLOrz  
       2023-10-17 18:52:09 +08:00
    还是感觉走 bgp 或者 ospf 按路由分流比较好
    expy
        12
    expy  
       2023-10-17 19:04:04 +08:00
    a90405
        13
    a90405  
       2023-10-17 20:44:17 +08:00
    看了下性能测试,直连的 IP 压根就不应该进代理程序,用 nftables 直接绕过。
    a90405
        14
    a90405  
       2023-10-17 20:47:09 +08:00
    @yyysuo 旁路,影响更小了,旁路拓扑,下载流量几乎不经过旁路,直连性能优势更是无从谈起。
    a90405
        15
    a90405  
       2023-10-17 20:49:48 +08:00
    旁路还有一个很大的死穴,就是 ipv6 的网关问题很麻烦。
    Donahue
        16
    Donahue  
       2023-10-17 20:58:48 +08:00
    只有直连状态下性能有很大提升,proxy 模式提升很小,还是 openwrt+openclash 省事
    jsq2627
        17
    jsq2627  
       2023-10-17 21:07:35 +08:00 via iPhone
    感觉侵入性有点大

    像 openclash 等本身也支持用 nftable 直接把大陆 ip 绕过,直连流量一样不经过代理程序。
    mohumohu
        18
    mohumohu  
       2023-10-18 00:19:49 +08:00
    静态路由+FAKEIP ,国内直连根本就不经过旁路。https://github.com/kkkgo/PaoPaoGateWay
    ShuWei
        19
    ShuWei  
       2023-10-18 08:06:37 +08:00
    eBPF 确实有其优势,避免了部分不必要的流量复制成本,但如果不是大流量场景,节约的那点性能其实没多少意义,侵入系统更底层,很担心作者的代码水平啊,clash Premium core 其实也增加了对 eBPF 的支持
    yyysuo
        20
    yyysuo  
    OP
       2023-10-18 09:09:15 +08:00
    @mohumohu 这个跟 openclash 这种方案的优势在哪里,我觉得没啥区别呢,更复杂一些。
    SenLief
        21
    SenLief  
       2023-10-18 09:51:17 +08:00 via iPhone
    你们的主路由能下发旁路由的 ip 和网关吗?我的 tp 不行,开 dhcp 就抢了。
    SenLief
        22
    SenLief  
       2023-10-18 09:52:14 +08:00 via iPhone
    @mohumohu 你这个其实没什么区别的,旁路由主要是主设备可以是任意的设备,你这个只不过是把功能拆开了。
    SenLief
        23
    SenLief  
       2023-10-18 09:53:10 +08:00 via iPhone
    @a90405 是的,我一直没有配置好,现在 ipv6 无法使用。
    jdjingdian
        24
    jdjingdian  
       2023-10-18 09:56:16 +08:00
    我也在做 eBPF 相关的东西,这个玩意感觉研究的人确实少。

    dae 用 eBPF 一个很重要的点应该还是性能上的提升吧(针对直连的性能),非直连的,他的实现方案是通过 xdp 再把数据扔回来,再从用户态走代理出去。

    目前在 Ubuntu 和 OpenWrt-23.05 ( MT7981 )上部署成功,但是 OpenWrt 启动加载 eBPF 到内核的速度比较慢
    yyysuo
        25
    yyysuo  
    OP
       2023-10-18 10:01:39 +08:00
    @SenLief #21 被谁抢了?我的 xdr 5480 ,在 dhcp 中可以直接写网关和 dns 啊,你局域网里面还有其它设备启用了 dhcp ?
    SenLief
        26
    SenLief  
       2023-10-18 10:02:40 +08:00 via iPhone
    @yyysuo 正常应该是由旁路由下发 ip 和网关的,但是现在都是由 5480 下发的。
    yyysuo
        27
    yyysuo  
    OP
       2023-10-18 10:03:58 +08:00
    @jdjingdian 我主路由 op ,搞一个大鹅 vm ,搞了一个 clash vm ,都是 debian ,clash 开不加密的 ss 的服务端给大鹅 vm 使用。主路由下发大鹅 ip 为网关。在 op 上开 mosdns ,mosdns 国内直接丢给 223.5.5.5 ,国外扔给 clash 的 7874 解析,返回 fakeip ,然后大鹅网关根据 fakeip 来分流,fakeip 丢给 clash ,其它直连。
    yyysuo
        28
    yyysuo  
    OP
       2023-10-18 10:07:37 +08:00
    @SenLief #26 晕,为什么要让旁路由下发呢,主路由下发就行啊。
    jdjingdian
        29
    jdjingdian  
       2023-10-18 10:10:54 +08:00
    @yyysuo 你的操作太复杂了(我小白 哈哈哈
    之前也想研究 mosdns ,但感觉头大

    我目前是这样设计的
    主路由:RouterOS 旁路由:OpenWrt + dae

    openwrt 通过 ospf 把非中国的路由表同步到 routerOS ,非中国路由表走 openWrt ,中国路由表直接出去
    RouterOS 和 OpenWrt 通过 VRRP 共享一个 ip ,openwrt 为主,DNS 指向这个共享 IP

    不过这样弄 DNS 肯定不是很干净就是了,以后慢慢研究改进
    yyysuo
        30
    yyysuo  
    OP
       2023-10-18 10:33:50 +08:00
    @jdjingdian #29 你这才是大佬好吧,你搞的这一套,哪一个我都玩不转。
    SenLief
        31
    SenLief  
       2023-10-18 10:46:15 +08:00 via iPhone
    @yyysuo 主路由下发的网关不是旁路由的,还需要自己手动改。
    mohumohu
        32
    mohumohu  
       2023-10-18 12:14:41 +08:00
    @yyysuo 不需要改主路由网关,真正国内直连啊,你既然在意直连性能为啥不直接直连呢,节点挂了甚至旁路由电源拔了都不会影响正常上网。
    mohumohu
        33
    mohumohu  
       2023-10-18 12:15:43 +08:00
    @SenLief 不需要改主路由网关,旁路由电源拔了不影响上网。
    dude4
        34
    dude4  
       2023-10-18 12:16:03 +08:00
    在用 openclash+fake ip 旁路由,跑在树莓派上,开了 IPV6 ,目前已解决的问题:
    1.IPV6 DNS ,需要在主路由(也是 openwrt )关掉 V6 DNS 通告,这样只通告 V4 DNS ,可以解决部分网站 V6 优先的问题,譬如 engadget ,这样做是因为目前好像 openwrt 用的 ODHCPD 无法单独设置 V6 DNS ,或者没找到好方法
    2. 主路由用 dhcp opition+mac 方式给需要的设备通告网关和 V4 DNS ,客户端设备上设置使用设备 mac 码就可以固定分配局域网 IP 和网关,不需要梯子的设备就直连,这样就各取所需了。主路由梯子还是不适合复杂使用的情况,当然我不玩游戏,可能需求不同。

    感觉和这个实现的差不多,这个是又另外造了个轮子?
    dude4
        35
    dude4  
       2023-10-18 12:29:50 +08:00
    看了一下介绍,貌似这个轮子还是和 openclash 实现的不一样,是内核级别的,等子弹再飞一会儿, 如果好用可以试试。
    JensenQian
        36
    JensenQian  
       2023-10-18 12:33:40 +08:00 via Android
    有点牛,不过旁路由好麻烦
    mohumohu
        37
    mohumohu  
       2023-10-18 13:11:01 +08:00
    @dude4 我看了下文档描述是这样的:
    ```
    域名通过劫持 DNS 请求,将 DNS 请求的域名与所查 IP 进行关联来得到。尽管这种方式有一些问题:

    可能会出现误判。例如需要分流到国内和国外的两个网站拥有同一个 IP ,且在短时间内同时被访问,或浏览器有 DNS 缓存。
    用户的 DNS 请求必须通过 dae 。例如将 dae 设为 DNS ,或在 dae 作为网关的情况下使用公共 DNS 。
    但相比其他方案,这种方案已经是较优解了。例如 Fake IP 方案存在无法通过 IP 分流且存在严重的缓存污染问题,而域名嗅探方案存在只能嗅探 TLS/HTTP 等流量的问题。实际上,通过 SNI 嗅探来进行分流确实是更优选择,但由于 eBPF 对程序复杂度的限制,以及对循环的支持不友好,我们无法在内核空间实现域名嗅探。
    ```
    我觉得这个文档说的不完全对,FAKEIP 方案就能域名和 IP 唯一对应没有误判,通过指定静态路由也是可以进行 IP 分流的,缓存污染问题也可以通过添加嗅探解决。
    SenLief
        38
    SenLief  
       2023-10-18 13:52:31 +08:00 via iPhone
    @mohumohu 那就需要为每一台设备单独设置网关了。
    mohumohu
        39
    mohumohu  
       2023-10-18 14:29:39 +08:00
    @SenLief 不需要啊,主路由加一条 FAKEIP 的静态路由就可以了,只有分配到 FAKEIP 的域名才会走旁路。
    SenLief
        40
    SenLief  
       2023-10-18 14:30:36 +08:00 via iPhone
    @mohumohu 你用主路由做分流了,tp 没有这个功能我说嘛。
    mohumohu
        41
    mohumohu  
       2023-10-18 14:48:05 +08:00
    @SenLief 没有静态路由还能算《路由器》吗
    十几年前的 tplink 还真的有这个功能
    不说别的,光猫也有啊
    mohumohu
        42
    mohumohu  
       2023-10-18 14:53:24 +08:00
    不过好在新出的 tp 能刷机,特别是联发科的
    n18255447846
        43
    n18255447846  
       2023-10-18 15:23:54 +08:00
    核心技术点是 eBPF 吗,有无佬哥说说。。

    旁路由就 dhcp 下发网关,不过还要配 iptables 转发流量到代理程序还是有点复杂的
    SenLief
        44
    SenLief  
       2023-10-18 16:11:15 +08:00
    @mohumohu 不是,主路由没有分流的功能,你如何知道域名给旁路由呢?
    liulongquan
        45
    liulongquan  
       2023-10-18 16:15:45 +08:00
    IPV6 能解决吗
    一般旁路由 IPV6 是死穴但是 IPV6 又是刚需的
    a90405
        46
    a90405  
       2023-10-18 16:55:41 +08:00
    @n18255447846 这玩意运行在 netfilter 之前,用不到 iptables nftables
    mohumohu
        47
    mohumohu  
       2023-10-18 17:22:09 +08:00
    @SenLief 主路由可以设置 DNS 啊,然后 DNS 可以分流
    bao3
        48
    bao3  
       2023-10-18 17:30:20 +08:00
    “dhcp 下发网关” “ 设备指定网关” ,这已经不能算是透明网关了,这算是半透明网关了。
    简单来说,能在网关上搞的东西,就别用旁路由,不止是上面说的 ipv6 的问题,还有可能旁路由引起梯子瞬断。
    SenLief
        49
    SenLief  
       2023-10-18 17:44:21 +08:00
    @mohumohu 硬路由很多不支持 dns 分流的,5480 就不支持的。
    mohumohu
        50
    mohumohu  
       2023-10-18 18:07:04 +08:00
    @SenLief 路由器不会连 DNS 都不能自定义吧
    https://zhuanlan.zhihu.com/p/474982943

    不行还可以用光猫拨号,或者关闭主路由的 DHCP ,用自己的 DHCP 。
    SenLief
        51
    SenLief  
       2023-10-18 18:09:37 +08:00
    @mohumohu 这个好像没什么意义吧,他还是要全部过旁路由的。比较理想的还是主路由 dns 分流,直连直接出,代理走旁路由。
    mohumohu
        52
    mohumohu  
       2023-10-18 19:39:11 +08:00
    @SenLief 效果就是你说的比较理想的这样的,主路由设置指定 DNS 和静态路由,DNS 只有需要分流的域名才解析为 FAKEIP ,FAKEIP 静态路由到旁路由,实际国内流量不需要经过旁路由。
    R4rvZ6agNVWr56V0
        53
    R4rvZ6agNVWr56V0  
       2023-10-18 20:14:49 +08:00
    感觉对于“旁路科学”没啥意义,kernel 转发那点延迟和吞吐 在中国电信的 QoS 策略下显得苍白。
    SenLief
        54
    SenLief  
       2023-10-18 21:24:23 +08:00 via iPhone
    @mohumohu dns 分流由谁负责?
    mohumohu
        55
    mohumohu  
       2023-10-18 21:58:04 +08:00
    yyysuo
        56
    yyysuo  
    OP
       2023-10-19 00:48:00 +08:00
    @dude4 #34 op 如何关闭 v6 的 dns 通告?我目前填的是 br-lan 的 fe80 ,如果一个都不填,默认下发的 dns 好像是 br-lan 的公网 ipv6 地址。
    ambition117
        57
    ambition117  
       2023-10-19 02:18:26 +08:00
    真的要性能的话,搞个支持 ospf 的三层交换机,线速转发国内、国外的流量到不同网关...
    dude4
        58
    dude4  
       2023-10-19 12:13:09 +08:00
    @yyysuo 网络-接口-你的 lan 接口-编辑-DHCP 服务器-IPV6 设置
    取消“本地 IPV6 DNS 服务器”的钩,然后这个选项上面的“通告 IPV6 DNS 服务器”留空,重启 odhcpd 和 dnsmasq 即可。
    这样 windows 和安卓试了只显示 V4 DNS ,V6 DNS 是空白,但不影响 AAAA 解析
    yyysuo
        59
    yyysuo  
    OP
       2023-10-19 15:09:34 +08:00
    @dude4 #58 能把/etc/config/dhcp 的 config dhcp 'lan'部分粘一下吗,我的 openwrt 版本没有本地 IPV6 DNS 服务器这个勾,我知道有些版本是有的。
    qwvy2g
        60
    qwvy2g  
       2023-10-19 19:01:26 +08:00
    有没有一种不需要修改内网网关的透明网关?有的说法是透明网桥。已经测试过在同一个网段内用 iptables 命令劫持是无效的,仔细分析后发现这些设备直接是二层的。openwrt 上的 oc 上倒是很容易能实现,可是想在 openwrt 上的其他软件上也实现类似功能。
    dude4
        61
    dude4  
       2023-10-19 22:33:36 +08:00
    @yyysuo

    `
    config dhcp 'lan'
    option interface 'lan'
    option leasetime '24h'
    option dhcpv4 'server'
    option dhcpv6 'server'
    option ra 'server'
    list ra_flags 'managed-config'
    option start '100'
    option limit '150'
    option dns_service '0'
    `
    yyysuo
        62
    yyysuo  
    OP
       2023-10-20 17:50:49 +08:00
    @dude4 #61 感谢,我是有状态+无状态,没有取消按钮,不知道怎么改配置文件才能不下发 ipv6 的 dns
    config dhcp 'lan'
    option interface 'lan'
    option start '100'
    option limit '150'
    option leasetime '12h'
    option dhcpv4 'server'
    option dhcpv6 'server'
    option ra 'server'
    option ra_slaac '1'
    list ra_flags 'managed-config'
    list ra_flags 'other-config'
    option force '1'
    option ra_management '1'
    option ra_default '1'
    list dns 'fe80::20c:29ff:fe8b:e868'
    list dhcp_option '6,10.10.10.1'
    list dhcp_option '3,10.10.10.2'
    yyysuo
        63
    yyysuo  
    OP
       2023-10-20 17:53:53 +08:00
    @mohumohu #55 大佬,我自己主路由 op ,旁路装了个 debian 跑 clash ,主路由上用 mosdns 分流了 dns ,国内直接走公网了,国外部分扔给 clash 的 dns ,返回 fakeip ,然后主路由添加路由表让 fakeip 走 clash vm 。现在遇到 2 个问题,一个是 netflix 提示代理了,我怀疑是 ipv6 或者 netflix 有直连的 ip 的问题,看了一下 netflix 的 ip 段,好多,静态路由加得太多了;另外一个是 udpxy 或者 msd_lite 竟然换台卡顿了,是跃点的原因吗?
    mohumohu
        64
    mohumohu  
       2023-10-20 18:50:43 +08:00
    @yyysuo 你 mosdns 可以让他 netflix 的域名不返回 IPv6 结果吧,我觉得可能是 IPv6 的问题。也可能是没有分流到对应域名,你可以开个全局抓一下域名。udpxy 或者 msd_lite 我感觉应该没什么关系,可能是你主路由负载比较高。
    dude4
        65
    dude4  
       2023-10-22 09:50:13 +08:00
    @yyysuo 你的源码是什么?官方还是 lean 的? lean 的源码基于 openwrt lede ,和官方有些不一样,界面也自己魔改了很多。
    yyysuo
        66
    yyysuo  
    OP
       2023-10-23 03:11:42 +08:00 via iPhone
    @dude4 lean 的源码,用 fe80 也不是不能用,并且我发现如果 ipv6 的 dns 没有的话,ipv6 的测试就过不了 。 看了各位大佬的回复,也试了一下 fakeip 网关,体验也不错,实现了真正的透明网关 。
    步骤也非常简单,就是装个 debian+clash fakeip ,主路由上装 mosdns ,国内直连 国外丢给 clash dns 解析成 fakeip ,主路由上做静态路由,fakeip 丢给 debian 的 clash 处理即可,需要特殊处理的是电报和奈飞,把他们的 ip 段也添加到静态路由丢给 clash 处理
    willwon1
        67
    willwon1  
       2023-10-25 11:11:13 +08:00
    家里放个手机 手机上开个小火箭 我觉得做旁路由也没啥问题 还稳定
    Karmylr
        68
    Karmylr  
       2023-11-26 20:39:33 +08:00
    @dude4 lean 的就是官方 openwrt 的 18.06 分支改的
    teadi
        69
    teadi  
       2024-03-31 02:09:51 +08:00
    有个问题,我原本是 copilot 》 openclash 》 us 。
    现在装了大鹅是 copilot 》大鹅》就直连了。
    所以是需要在大鹅里写一遍 copilot 走代理?
    bluaze
        70
    bluaze  
       2024-04-25 22:00:08 +08:00
    @yyysuo #63 netflix 如果是 app 的话,有可能是 netflix 使用了自己的 dns ,绕过了系统 dns 配置,从而获得了真实 ip
    coolhuasen1
        71
    coolhuasen1  
       46 天前
    @jdjingdian 我的 openwrt 跟你一样,我不那么复杂了,daed 直接劫持 lan 跟 wan 口,用默认的规则,直接用节点。我测试了下 ipleak.net 跟一些 DNS 泄漏、国内外 IP 分流,很准。而且上香港中银跟众安也快了非常多。所以挺好的。感觉 daed 默认的分流已经挺强了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5457 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 47ms UTC 07:58 PVG 15:58 LAX 00:58 JFK 03:58
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86