我用 Rust 重写(并重新设计)了 frp,性能和资源占用有很大改善

2022-01-04 18:53:16 +08:00
 rapiz

rathole - 安全、稳定、高性能的内网穿透工具,用 Rust 语言编写。


先博一下眼球,让各位有兴趣继续看下去:

如果你对性能和内存的测试数据感兴趣,可以直接拉到帖子下面的图表感受一下

你可以先看看 README ,其中介绍了特性、配置和用法


下面写写我为什么要做这个工具,和我开发的时候在想什么。

frp 是优秀的基于内网穿透反向代理工具,方便易用,集成了很多功能。

但我对一个内网穿透工具的期望不太一样,我相信一个工具应该专注做一件事,通过简单优雅的设计接口来提供扩展能力。

我仔细思考了如何设计这样一个工具,它应该:

相比于 frp ,除了数据上的优势,rathole 还有更多的可能性:

未来

rathole 已经持续开发了一段时间,必要的特性已经趋于完善和稳定。我觉得是时候发布出来,让大家体验使用和反馈。

目前已经决定的开发计划有 HTTP API (或其他形式的 API )。API 实现后,能够支持 Dashboard 和复杂动态管理需求的开发。

最后,如果你还没有查看 项目 README ,这里是一个方便的链接

性能测试

测试的具体数字随机器变化,测试方法见此,主要用 iperf3 测试 TCP/UDP 吞吐量, vegeta + nginx 测试 HTTP 吞吐量,同时检测内存占用

23205 次点击
所在节点    分享创造
117 条回复
levinit
2022-01-14 08:50:36 +08:00
有类似 frp 的 stcp 模式吗? 不用暴露端口在中转服务器上。
LeeReamond
2022-01-14 13:36:15 +08:00
有关安全性和稳定性有相关测试吗
rapiz
2022-01-14 15:49:46 +08:00
@levinit 这个实际上是 VPN 需求,建议用 wireguard
rapiz
2022-01-14 15:51:34 +08:00
@LeeReamond 支持开启 TLS/noise 加密。但被暴露的服务总需要自身足够安全。关于稳定性,目前有高并发测试,表现优秀。长期运行的稳定性,主要是弱网环境下的测试和稳定性,还在补齐和加强。
junyee
2022-01-14 19:49:46 +08:00
frp 是好东西。但是体积确实有些大。

另外把 token 和服务器信息等 以明文暴露在客户端让我很不放心。。
虽然可以服务器挂插件.


对了,p2p 很重要。
rapiz
2022-01-14 20:33:33 +08:00
@junyee

另外把 token 和服务器信息等 以明文暴露在客户端让我很不放心。。
虽然可以服务器挂插件.

这个你应该说的是 frp 吧? rathole 在设计时就考虑要配置分离了
LeeReamond
2022-01-15 04:53:49 +08:00
@rapiz 很棒,有兴趣在生产服务上测试! frp 实际应用中的一种主流场景是 stcp 持有 token 才能正常访问,不知道有没有实现类似功能。
40EaE5uJO3Xt1VVa
2022-01-16 16:32:28 +08:00
我们几乎重写了 frp
Decent
2022-05-01 23:07:56 +08:00
遇到一个比较奇怪的现象:
相同环境下,用 frp + TLS + v2 开网页响应速度很快,但是峰值速率最多 15 Mbps 。
用 rathole + TLS + v2 网页响应会稍微慢点,但是峰值能去到 100 Mbps 。
v2defy
2022-11-21 14:50:44 +08:00
大佬,rathole 的 http api 还在做吗
rapiz
2022-11-24 14:26:31 +08:00
@v2defy 前大半年在实习,歇了一阵子,会做的!
rapiz
2022-11-24 14:27:33 +08:00
@Decent 可以考虑开一下配置文件里的 TCP nodelay 。另外,看起来使用的异步框架 tokio 比 go corountine 的调度 delay 会更高一些
TweakiOS
2022-12-04 07:56:39 +08:00
这个名字其实挺好的,就是老鼠洞嘛!
另外外行人问下,client 和 server 之间隧道打通之后是否可以双向跑服务,现在看起来主要是外网访问内网,理论上是否内网也可以把 server 当作代理或网关呢?还是一定得用别的工具来实现从内到外的访问?谢谢!
promiser3d
2023-06-20 10:34:46 +08:00
确实是个好东西,不知道后续还有进一步的开发计划不
ccpbisi
2023-07-12 17:10:55 +08:00
老哥我有点疑问,你有没有研究过商业内网穿透,感觉那些内网穿透有种更加稳定的感觉,之前用神卓,感觉很稳定比 frp 稳定很多
Ju33Huang22
2023-08-14 14:00:19 +08:00
试了一下,rathole 确实要比 frp 的性能更高,速度提升了不少 ^_^
ryc111
2023-10-10 08:10:54 +08:00
好久以前看到的帖子,今天有个需求就配置了一下

- 和 frp 的 client side config 不一样,需要 c-s 同时配置,爬了下楼,看到了 lz 的想法觉得这样也不错。

- 测试了一下极限性能(我网络速度下的性能) frp 大概跑 200M, rathole 能到 600M 多,极限带宽的确增加不少,虽然我主要用来连 vscode ssh 到远程服务器两者差别不大。

- 都是 docker 部署,和 frp 差不多。加几行 service 写个 toml 就成了,非常好配置。

赞。已 star !

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/826182

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX