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'
}