一、简介
- 这是一个安全、稳定、高性能的内网穿透工具,用 Rust 语言编写
- 核心优势在于低资源消耗、TLS传输加密、高吞吐量
- 开源地址参考:https://github.com/rathole-org/rathole
- 与frp的性能对比,有较大的提升
- 该工具的工作原理可参考下图
二、安装与使用(Docker方式)
1. 服务端安装
- 创建配置文件 docker-compose.yml,内容如下:
version: '3' services: rathole: image: rapiz1/rathole volumes: - "./config.toml:/app/config.toml" command: --server /app/config.toml network_mode: host privileged: true restart: always
- 相同目录下创建服务端 config.toml 配置文件,内容如下:
# 服务端配置config.toml [server] bind_addr = "0.0.0.0:1443" # `1443` 配置了服务端监听客户端连接的端口 # 更多传输方式参考:https://github.com/rathole-org/rathole/blob/main/docs/transport.md [server.transport] # 要和客户端保持一致 `[client.transport]` type = "noise" # 可选:["tcp", "tls", "noise", ...],noise这种方式可以无需手动设置自签证书即可实现流量数据加密 [server.transport.noise] pattern = "Noise_XX_25519_ChaChaPoly_BLAKE2s" [server.services.portainer] #这里的portainer是自定义的服务名称 token = "test1234" # 用于验证的 token,可以设置更加复杂的 bind_addr = "0.0.0.0:9000" # 这个地址是服务端暴露的的服务端口:ip+端口,启动后这个地址作为穿透内网服务的入口 [server.services.mysql] #这里的mysql是自定义的服务名称 token = "test1234" bind_addr = "0.0.0.0:3306"
- 服务器端一键启动
docker-compose up -d
2. 客户端安装
- 同样在客户机上创建配置文件 docker-compose.yml,内容如下:
version: '3' services: rathole: image: rapiz1/rathole volumes: - "./config.toml:/app/config.toml" command: --client /app/config.toml restart: always
- 同样在相同目录下创建客户端 config.toml 配置文件,内容如下:
[client] remote_addr = "ip_or_domain:1443" # 服务器的地址。端口必须与 `server.bind_addr` 中的端口相同。 [client.transport] # 客户端传输协议配置 type = "noise" # 传输协议类型,必须与服务端一致 # 传输协议配置,也跟服务端保持一致 [client.transport.noise] pattern = "Noise_XX_25519_ChaChaPoly_BLAKE2s" [client.services.portainer] #与服务端自定义的服务名称一致 token = "test1234" # 必须与服务器相同以通过验证 local_addr = "172.17.0.1:9000" # 需要被转发的服务的地址 [client.services.mysql] token = "test1234" local_addr = "172.17.0.1:3306"
- 客户端一键启动
docker-compose up -d
3. 访问内网穿透服务示例
-
通过公网ip访问内网中的 portainer 服务
-
通过公网ip访问内网中的 mysql 服务
-
更多基于http、tcp、udp的服务均可实现穿透访问,请自行探索…
三、总结
- 该工具可以作为frp、ngrok的开源替代品
- 没有提供免费的公网网络服务,需要自定在自己的公网服务器搭建
- 有一些需要高并发访问的服务、接口,可以选择 rathole 内网穿透方案
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容