网站首页 > 教程文章 正文
大家好,我是Jack Bytes,一个专注于将人工智能应用于日常生活的程序猿,平时主要分享AI、NAS、开源项目等。
在日常开发和运维中,我们经常会遇到需要将内网服务暴露到公网的场景,比如远程访问家中的 NAS、调试内网的开发服务等。
而传统的内网穿透工具要么性能不足,要么配置复杂,难以满足高要求场景。
今天就为大家推荐一款用 Rust 编写的高性能内网穿透工具 ——rathole,它安全、稳定且资源消耗极低,或许能成为你的得力助手。
一、介绍
rathole 是一款专注于 NAT 穿透的反向代理工具,与大家熟知的 frp、ngrok 类似,能够帮助将 NAT 后的设备上的服务通过具有公网 IP 的服务器暴露到互联网。
该项目基于 Rust 语言开发,凭借 Rust 的内存安全和高性能特性,rathole 在吞吐量、稳定性和资源占用方面表现出色。
它的代码托管在 GitHub 上,开源且持续活跃开发,目前已获得大量开发者的关注和使用。
无论是个人开发者调试内网服务,还是家庭用户远程访问私有设备,rathole 都能提供可靠的解决方案。
二、功能特性
- 高性能:相比 frp,rathole 能实现更高的吞吐量,在处理大量连接时也更加稳定,这使得它在高并发场景下表现优异。
- 低资源消耗:内存占用远低于同类工具,通过特定的构建方式,其二进制文件最小可至约 500KiB,非常适合部署在路由器等嵌入式设备上。
- 安全性强:每个服务都强制进行单独鉴权,服务器和客户端各自负责自己的配置。支持 Noise 协议,无需自签证书即可轻松配置传输加密,同时也支持 TLS。
- 热重载:支持配置文件热重载,能够动态添加或移除服务,无需重启工具,极大地提升了使用的便利性。HTTP API 功能正在开发中,未来使用将更加灵活。
三、性能测试
rathole 的延迟与 frp 相近,在高并发情况下表现更好,能提供更大的带宽,内存占用更少。
对大多数用户来说,rathole 能带来的主要好处是更少的资源占用:
四、安装
4.1 安装方式
- 直接下载:可以从rathole 的 GitHub 发布页面获取全功能的预编译二进制文件。
- Docker 镜像:项目提供了 Docker 镜像,可通过docker pull rapiz1/rathole获取。
- 源码构建:对于需要最新特性或特定平台的用户,可以从源码构建。具体步骤可参考构建指南,通过调整构建参数还能实现二进制文件的最小化。例如,使用minimal配置文件构建客户端版本:
cargo build --profile minimal --no-default-features --features client
4.2 快速使用
使用 rathole 需要一台具有公网 IP 的服务器和一台在 NAT 后的设备(需要暴露服务的设备)。以下以暴露 NAS 的 ssh 服务为例:
- 服务器端配置
首先创建server.toml文件:
# server.toml
[server]
bind_addr = "0.0.0.0:2333" # 服务器监听客户端连接的端口
[server.services.my_nas_ssh]
token = "use_a_secret_that_only_you_know" # 用于验证客户端的令牌
bind_addr = "0.0.0.0:5202" # 暴露服务到公网的端口
然后运行服务器:
./rathole server.toml
- 客户端配置(NAT后的设备)
创建client.toml文件:
# client.toml
[client]
remote_addr = "myserver.com:2333" # 服务器地址,端口需与服务器的bind_addr一致
[client.services.my_nas_ssh]
token = "use_a_secret_that_only_you_know" # 需与服务器端对应服务的token一致
local_addr = "127.0.0.1:22" # 需要被转发的本地服务地址(此处为ssh服务)
然后运行客户端:
./rathole client.toml
- 使用服务
完成上述配置后,客户端会连接服务器,此时访问myserver.com:5202的流量会被转发到客户端的 22 端口,通过ssh myserver.com:5202即可远程连接 NAS。
四、总结
rathole 作为一款用 Rust 开发的内网穿透工具,凭借高性能、低资源消耗、高安全性和支持热重载等特性,为 NAT 穿透场景提供了出色的解决方案。
它的配置方式与 frp 类似,易于上手,同时在性能和资源占用上更具优势。
无论是个人用户远程访问内网设备,还是开发者调试服务,rathole 都是一个值得尝试的选择。
随着项目的持续发展,未来还将支持 HTTP API 等更多功能,进一步提升使用体验。如果你正在寻找一款高效可靠的内网穿透工具,不妨试试 rathole。
我是Jack Bytes
一个专注于将人工智能应用于日常生活的半吊子程序猿!
平时主要分享AI、NAS、Docker、搞机技巧、开源项目等技术,喜欢的话请关注吧!
猜你喜欢
- 2025-09-04 俄军测试专用通信“内网”取代“电报”
- 2025-09-04 差生文具多 | NAS搭建超级实用的开发人员备忘清单【速查表】
- 2025-09-04 阿里内网最新实战手册,7大核心组件详解SpringCloud+Jenkins+K8S
- 2025-09-04 亲测好用、实用的3款局域网共享软件
- 2025-09-04 体验IntelliJ IDEA的远程开发(Remote Development)
- 2025-09-04 nc - 网络工具箱中的「瑞士军刀」
- 2025-09-04 没有公网IP,简单3步实现局域网SVN版本控制系统远程访问
- 2025-09-04 C#开发局域网文件秒传_c#文件共享
- 最近发表
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- mybatis plus page (35)
- vue @scroll (38)
- 堆栈区别 (33)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)
- redis aof rdb 区别 (33)
- 302跳转 (33)
- http method (35)
- js array splice (33)