dae 基于 eBPF 的分流效率很高,直连的效率轻轻松松千兆,只是现在配置和订阅还有点原始,需要手动设置。Clash 或者 Singbox 后续不知道会不会跟进,集成 dae ,跑在内核态
1
iamyangyiok 285 天前 via Android
本来想体验下的 无赖我核心只有 5.4 要 5.14 才行
|
2
mohumohu 285 天前
其实我不太理解强调直连性能的痛点在哪,既然对内核有要求的话,那么移动端安卓/iOS 不说,Windows 也不用,那么作为透明路由的话,现在大多数插件都是策略路由 ipset 的,本来就是直连不经过程序分流的,直连性能都是 100%。
|
3
tiscool OP @mohumohu 一切都是关于效率 这边有篇文章讲的很好 历史上网络很慢,包都是顺序处理去匹配 chain 的规则集的,整个 iptables 的规则很难做到灵活的增量管理 而且 ipset 本身也不是为分流/路由设计的 https://cilium.io/blog/2018/04/17/why-is-the-kernel-community-replacing-iptables/
|
4
mohumohu 285 天前
@tiscool 你这个文章也没有指出 ipset 存在什么问题,只是强调 iptables 规则数量过多需要遍历。实际上你要分流并不需要太多的 iptables/nft 规则,ipset 本来就是可以动态增删的,文章强调增删规则是因为他说的场景是对多个容器进行 nat 而不是分流,iptables 增量管理实际上可以通过定义不同的 chain 来做,这一点 nft 或许也更灵活,跑题了,实际上他文章说的跟你用的场景基本上没有交叉。对于 Linux 的策略路由来说,ipset 的确是主流的解决方案。
简单来说,你的路由器用上 eBPF 了吗? iptables/nft 我想应该目前没有能被替代的 eBPF 程序/防火墙,甚至硬路由有对应的硬件加速,就连商业的 RouterOS 的语法也是 iptables like 的。 |
5
tiscool OP @mohumohu 现状如你所说 的确还是 iptables or ipset 但是现在 nft 底层 hook 已经有在往 eBPF 切换了。简单说现在能做的,并不妨碍有其他方式(更好 or not )的解决问题。毕竟 eBPF 比较新,但是潜力是巨大的。硬路由不在这个话题的讨论范围了,毕竟没有那个硬的路由 Chipset 需要考虑如果高效的分流 geoip 和 geosite 数据集。。。我的需求是前置一个 Linux 网关,分流出可以直连的请求,直接交给主路由(硬),无法直连的请求在转给节点去出站。这个网关现在看 dae 是做的性能最高的,如果有其他方案,虚心请教,请赐予我知识。
|
6
mohumohu 284 天前
@tiscool 几种直连性能 100%的方案,取决于你的网络拓扑:
1 、在主路由本机上弄,使用 DNS 程序(如 mosdns 或者 smartdns )的 ipset 插件功能,把解析成非 CN IP 的域名(或者其他规则或者手动加入的 CIDR )的解析结果加入 ipset ,然后把这个 ipset 策略路由扔去代理程序。这样的话只有被判定需要代理的 IP 的 ipset 走代理,默认就是直连。缺点就是对主路由器的性能有影响,all in one 稳定性打折扣。这应该是目前 openwrt 里面那些插件的常用方案之一。 2 、主路由和网关分开弄,然后利用 OSPF 之类的协议分流,可以实现直连并且无法直连的请求走网关,网关炸了也不影响正常上网还能回退。缺点就是操作配置维护比较复杂,比较依赖 IP 库,并且对 BT 等 P2P 应用有影响,不像方案 1 那样可以灵活用域名清单/IP 来控制。这个搜一下 OSPF 分流应该有很多现成教程。 3 、主路由和网关分开弄,然后网关使用 fakeip ,DNS 程序把需要分流的域名(比如可以判定非 CN 域名或者手动配置的规则)解析成 fakeip ,然后主路由添加一条 fakeip 的静态路由即可,比较灵活稳定,配置也很清晰,直连的时候完全不经过网关,网关炸了也是不影响正常上网,缺点就是纯 IP 直连的应用需要手动额外添加一些静态路由来分流,因为没有解析成 fakeip 的机会。这种应用比较少,比如 telegram 。这个可以搜一下 paopaogateway 参考拓扑教程。 |