用于穿透内网的工具,将局域网的端口暴漏到公网来实现穿透到局域网,类似与frp、ngork之类的软件,但更轻巧,只用于TCP连接,支持多用户多客户端。
网络IO模型采用reactor模式的事件驱动模型,实现方法参考redis源码
暂时只支持linux,windows下可以用WSL
- 可执行文件体积小(100+kb)。
- 运行方便,无需任何依赖环境,可直接以守护进程运行到后台。
- 配置文件简单,只有三四行即可搞定。
- 加密传输,经过转发的数据将经过加密再进行传输,加密算法默认采用AES-256-CBC。
- 高性能IO,基于IO多路复用,网络事件处理参考redis的Reactor的事件驱动模型。
- 编译安装
git clone https://github.com/DeaglePC/XTunnel.git && cd XTunnel/xtun/ && cmake -DCMAKE_BUILD_TYPE=Release . && make样例: ts.ini
[common]
server_port = 10087 # 服务端用于传输控制信息的端口
password = 666 # 服务端认证密码
log_path = /home/xxx/log # 日志文件保存位置, 请确保有权限读写样例: tc.ini
[common]
server_ip = 12.13.14.15 # 服务器的公网ip
server_port = 10087 # 和上面保持一致
password = 666 # 和上面保持一致
log_path = /home/xxx/log # 日志文件保存位置, 请确保有权限读写
[ssh]
local_ip = 127.0.0.1
local_port = 22 # 本地ssh监听的端口
remote_port = 12300 # 远程服务器暴露的端口
[vnc]
local_ip = 192.168.1.11
local_port = 5900
remote_port = 12301
[rdp]
local_ip = 192.168.1.12
local_port = 3389
remote_port = 12302端口映射情况如下:
| 本地局域网地址 | 公网地址 |
|---|---|
| 127.0.0.1:22 | 12.13.14.15:12300 |
| 192.168.1.11:5900 | 12.13.14.15:12301 |
| 192.168.1.12:3389 | 12.13.14.15:12302 |
如上配置文件表示, 通过连接暴漏到公网的IP:端口,就可以连接到局域网内的程序了。比如上面的配置文件将分别可以连接到SSH,VNC,Windows RDP远程桌面。
- 运行服务端(在公网ip的机器上)
./xtuns -c ts.ini -d-d 参数表示以守护进程运行
- 运行客户端(在局域网机器中运行)
./xtunc -c tc.ini -d- 访问公网ip暴露的端口即可访问本地的应用,如ssh
ssh test@12.13.14.15 -p 12300TODO:
- 1. 配置文件
- 2. 密码加密
- 3. 心跳机制
- 4. 加密数据
- 5. 断线重连
- 6. 只保留n天日志
- 7. 添加重启和停止参数
- 8. 优化代码

