luler 一、简介 这是一个安全、稳定、高性能的内网穿透工具,用 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 内网穿透方案