内网穿透系列十:高性能内网穿透工具 rathole,支持 Docker 一键部署

一、简介

  • 这是一个安全、稳定、高性能的内网穿透工具,用 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
喜欢就支持一下吧
点赞11 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容