Fuso:一个内网穿透工具,用 Rust 写的
文章目录
- Fuso:一个内网穿透工具,用 Rust 写的
- 支持的功能
- 实际用起来怎么样
- 和同类工具比
- 适合什么人
Fuso:一个内网穿透工具,用 Rust 写的
最近在找内网穿透方案的时候,发现了这个叫 Fuso(扶桑)的开源项目。Star 不算多,将近 2000,但用下来感觉挺扎实的。
做开发的人多少都遇到过这种场景:公司内网有台机器,你在外面想访问,没有公网 IP 就抓瞎。或者你在家调试一个服务,需要让同事远程看到效果。这些问题的根源都一样——你的机器藏在 NAT 后面,外面的人连不进来。
内网穿透工具就是干这个的。Fuso 的思路很直接:你有一台公网服务器,运行服务端程序 fus;内网机器上跑客户端程序 fuc。客户端主动连服务端,建一条通道进来。外面的人访问服务端的端口,流量就顺着这条通道转到内网机器上。
整个过程不需要在内网机器上开端口,也不需要路由器做任何配置。客户端往外连,这在大多数网络环境下都是通的。
支持的功能
Fuso 不只是简单的端口转发。它支持 SOCKS5 代理,你可以把整个内网当作一个代理节点来用。配合浏览器插件或者系统代理设置,内网里的所有服务都能通过这个代理访问到。
SOCKS5 还支持 UDP 转发和密码认证。UDP 转发对某些场景有用,比如内网里跑了 DNS 服务或者游戏服务器。密码认证则是基本的安全措施,防止别人蹭你的代理。
桥接模式也是一个实用功能。简单说,你可以把多个 Fuso 实例串起来。比如你有 A、B、C 三台机器,A 能连 B,B 能连 C,但 A 直接连不到 C。通过桥接级联,A 可以绕过 B 访问 C。这在复杂的网络拓扑里比较实用。
传输层面,Fuso 支持 RSA 和 AES 两种加密方式。数据在公网上传输,不加密的话等于裸奔。你可以根据自己的需求选择加密算法,RSA 适合密钥交换,AES 适合大数据量的加密传输。
另外它还用了 KCP 协议和 LZ4 压缩。KCP 是一种基于 UDP 的可靠传输协议,比 TCP 快,适合对延迟敏感的场景。LZ4 压缩能在传输前把数据压一下,减少带宽占用。
实际用起来怎么样
基本用法很简单。下载 release 包,解压得到 fus 和 fuc 两个可执行文件,fus 放服务器,fuc 放客户端,分别启动就行。默认情况下服务端监听 6722 端口,客户端会把流量转发到本机的 80 端口。
想自定义的话,命令行参数挺丰富的。比如你想把外网的 8888 端口映射到内网的 3389 端口(远程桌面),一条命令就搞定。想开 SOCKS5 代理加上密码认证,也是几个参数的事。
跨平台这点也重要。Fuso 是 Rust 写的,理论上 Windows、Linux、macOS 都能跑。这对混合环境的团队来说比较友好,不用纠结兼容性问题。
和同类工具比
市面上内网穿透工具不少。frp 是最出名的,Go 写的,生态成熟,文档也全。ngrok 用起来最简单,但免费版限制多。还有花生壳这类商业产品,适合不想折腾的人。
Fuso 的优势在于 Rust 带来的性能和内存安全。Rust 编译出来的二进制文件,运行时开销小,没有 GC 停顿。对穿透工具这种需要长时间稳定运行的服务来说,这是个实际的好处。
当然劣势也明显。Fuso 的社区还很小,文档不够完善,遇到问题可能不太好找解决方案。功能上也还有些没实现的,比如 WebSocket 支持和 Web 管理面板,作者自己也列在了待办里。
适合什么人
如果你是个人开发者,想在家庭网络和公司网络之间建条通道,Fuso 够用。配置不复杂,功能覆盖了常见需求。
如果你是小团队,需要一个轻量的内网穿透方案,Fuso 也值得试试。特别是对性能有要求的场景,Rust 写的工具在资源占用上通常比较克制。
但如果你需要的是一个生产级的、有完善社区支持的方案,frp 可能更稳妥。工具选型这事,没有最好的,只有最合适的。
项目的 release 页面提供了预编译的二进制文件,不用自己编译。Rust 项目自己编译的话,环境配置稍微麻烦一点,但 release 包解压就能用,门槛不高。
己编译。Rust 项目自己编译的话,环境配置稍微麻烦一点,但 release 包解压就能用,门槛不高。
