gTunnel:一个基于Golang的TCP隧道
字数 932 2025-08-15 21:31:40
gTunnel 使用教程:基于Golang的TCP隧道套件
1. 工具概述
gTunnel是一款基于Golang和gRPC开发的TCP隧道套件,能够管理多个基于单个TCP/HTTPS链接的正向和反向通信隧道。
主要特性
- 支持Windows和Linux客户端
- 可管理多个通信隧道
- 支持正向和反向隧道
- 提供SOCKS代理功能
- 基于Docker部署服务端
2. 环境准备
依赖项
- Docker(测试版本v19.03.6,理论上支持任何版本)
- Golang环境(用于编译)
下载安装
git clone https://github.com/hotnops/gtunnel.git
3. 服务端部署
- 进入项目目录
- 运行启动脚本:
./start_server.sh
此脚本会构建一个Docker镜像,默认不暴露任何端口。
注意:如需使用正向隧道,需手动映射响应端口或修改Docker网络配置。
4. 客户端生成
在服务端命令行界面中,可以生成预配置的客户端程序。
Windows客户端生成
>>> configclient win 172.17.0.1 443 win-client
Linux客户端生成
>>> configclient linux 172.17.0.1 443 lclient
生成的客户端可执行文件会保存在"configured"目录中,与./start_server.sh关联。
5. 客户端管理
查看已连接客户端
客户端连接成功后,终端会显示连接成功的消息。
切换客户端
>>> use test
(test) >>>
支持Tab键补全客户端名称。
返回主界面
(test) >>> back
>>>
断开客户端连接
(test) >>> disconnect
6. 隧道管理
添加隧道
本地隧道(正向)
addtunnel local 本地监听端口 目标IP 目标端口 [隧道名称]
示例:
addtunnel local 4444 10.10.1.5 445 smbtun
远程隧道(反向)
addtunnel remote 远程监听端口 目标IP 目标端口 [隧道名称]
示例:
addtunnel remote 666 192.168.1.10 443
注意:隧道名称为可选参数,不提供时会自动生成随机名称。
列出所有隧道
(test) >>> listtunnels
Tunnel ID: smbtun
Tunnel ID: dVck5Zba
删除隧道
(test) >>> deltunnel smbtun
7. SOCKS代理功能
- 在客户端主机上启动SOCKS服务器:
socks 1080
- 创建隧道通道:
addtunnel local 1080 127.0.0.1 1080
8. 退出服务端
>>> exit
9. 项目地址
GitHub仓库:https://github.com/hotnops/gtunnel
10. 注意事项
- 使用正向隧道时,确保正确映射Docker端口或配置网络
- 隧道名称不唯一时可自动生成随机名称
- 客户端程序需在目标系统上运行才能建立连接
- 所有操作都在服务端命令行界面中完成
11. 典型使用场景
- 内网穿透:通过反向隧道访问内网服务
- 端口转发:将本地服务暴露到远程
- 代理服务:通过SOCKS功能提供代理访问
- 多客户端管理:集中管理多个远程节点的隧道连接
通过以上步骤和命令,您可以充分利用gTunnel的功能建立和管理TCP隧道,实现灵活的网络通信配置。