内网穿透系列十三:wstunnel 一款通过 Websocket 或 HTTP2 隧道传输的内网穿透工具

一、简介

  • wstunnel 是一款通过 Websocket 或 HTTP2 隧道传输所有流量的内网穿透工具
  • 使用 Rust 编写,性能较高,内置自签证书,流量加密
  • 可以利用CDN加速隧道连接
  • 提供可直接运行的静态二进制文件,也可以使用Docker快速部署
  • 支持静态正向(反向)隧道(TCP, UDP, Unix socket, Stdio),动态(反向)隧道(Socks5 代理、HTTP 代理和透明代理)
  • 该工具的开源地址参考:https://github.com/erebe/wstunnel
  • 该工具的工作原理可参考下图:

二、安装

1. 服务端安装

  • 准备一台具有外网ip的主机,提前安装好Docker、docker-compose软件环境
  • 新建docker-compose.yml配置文件,配置内容如下:
    version: '3.8'
    services:
      wstunnel:
        image: ghcr.io/erebe/wstunnel:latest
        container_name: wstunnel
        restart: always
        network_mode: host
        #安全起见需要修复restrict-http-upgrade-path-prefix的值为一个随机字符串
        command: /home/app/wstunnel server --restrict-http-upgrade-path-prefix SetARandsomStringxxx wss://[::]:8080
  • 执行下面命令,启动服务端服务
    docker-compose up -d

    服务端正常启动,参考下图:

2. 客户端安装

  • 根据需要,准备一台内网主机,提前安装好Docker、docker-compose软件环境(建议,但也可以通过二进制命令启动)
  • 同样需要新建客户端docker-compose.yml配置文件,配置内容如下:
    version: '3.8'
    services:
      wstunnel:
        image: ghcr.io/erebe/wstunnel:latest
        container_name: wstunnel
        restart: always
        network_mode: host
        #下面可以指定restrict-http-upgrade-path-prefix与服务器一致,可以设置多个-R服务映射
        command: >
            /home/app/wstunnel 
            client 
            --restrict-http-upgrade-path-prefix SetARandsomStringxxx
            -R 'tcp://[::]:9999:127.0.0.1:9000' 
            -R 'tcp://[::]:6033:127.0.0.1:3306' 
            wss://ip_or_domain:8080
  • 执行下面命令执行客户端服务
    docker-compose up -d

    成功运行截图如下:

三、使用示例

  • 如上服务端、客户端启动成功之后,可以使用相关的内网穿透服务,如上是穿透了内网中的portainer、mysql服务

  • 通过外网ip访问内网中的portainer服务,访问:http://外网ip:9999/

  • 通过外网ip访问内网中的mysql服务,只需要吧mysql的连接配置的ip换成外网ip,端口换成6033

四、总结

  • wstunnel 基于websocket等http相关协议转发数据流量,可以解决网络限制问题,也可以套上CDN加速
  • 支持自签证书,无需多层代理,直接用上tls防护
  • 支持内网穿透、网络代理,兼容各种网络协议,玩法很多,可以进一步探索
  • 部署使用简单,可以使用二进制可执行程序、Docker等快速部署使用
© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容