fastnat
1.0.0
FAST NAT是基于WeNAT的扩展版,支持HTTP、TCP、UDP、WebSocket等协议。 简单的说,就是可以给你的内网电脑分配一个公网IP和端口 例如:
123.1.1.1:8888 -> 192.168.1.123:3306
当外网服务器的8888端口收到数据包后,会转发给内网的3306端口,从而实现穿透。服务器做了个中转,和传统的P2P穿透不同。
协议为JSON字符串
在第一次连接服务器的时候,需要带上用户的token,服务器进行校验合法后开放2个端口提供给后续使用。 在后续的流程中,不做任何校验。虽然有安全风险,但是常见的TCP应用:Mysql、Mongodb、Redis等,都有用户机制可以保护。
暂定三种协议
| 类型 |
|---|
| TCP |
| UDP |
| HTTP |
基本信息响应
直接连接通信服务器端口8888,不用发送任何数据,成功后响应如下数据
| 字段 | 类型 | 说明 |
|---|---|---|
| id | string(8) | 本次会话的id |
| outId | string(8) | 外网socket 会话id |
| intPort | int(5) | 内网连接的端口,5位数的端口,30000-65535 |
| outPort | int(5) | 外网连接的端口 |
| command | string | 操作命令 |
| protocol | string | 协议类型 |
{
id: 'CucfFpk7',
intPort: 61289,
outPort: 59918,
command: 'start_proxy',
outId: 'GpNYO5KW'
}主动连接服务器
收到基本信息响应后,拿到内网的端口建立一个TCP连接,并且带上outId, 第一个数据包为协议包,后续的数据就是正常的转发
| 字段 | 类型 | 说明 |
|---|---|---|
| outId | string(8) | 外网socket 会话id |
{
outId: 'GpNYO5KW'
}