# JavaNat **Repository Path**: dawson_jiang/java-nat ## Basic Information - **Project Name**: JavaNat - **Description**: 纯Java实现类似内网穿透,实现shell等命令直达内网终端 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 2 - **Created**: 2021-08-08 - **Last Updated**: 2024-07-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # JavaNat #### 介绍 纯Java实现类似内网穿透,实现shell等命令直达内网终端.结构简单,基础功能完整。 #### 软件架构 系统分三部分:服务端server:运行在外网服务器上,负责管理各个终端和用户端,控制和转发消息;终端terminal:运行在内网终端上,负责连接服务器和本地第三方服务,如shell;用户端user:用户操作的客户端,负责与用户交互,连接服务器和本地第三方客户端,如xshell等。 系统核心流程:1.服务器启动,完成配置初始化等工作; 2.终端和用户端启动,连接服务器固定端口,并上报配置信息,如id,name等;服务器返回支持的服务配置,端口映射关系; 3.用户端根据服务配置启动多端口监听。用户同一时间只能操作一个终端,选择终端后,等待第三方客户端连; 4.第三方客户端连接后,根据其连接端口,和当前选择的终端创建回话,并连接服务器,连接到服务器后上报会话信息,然后启动会话,相互透明转发第三方客户端和服务器的数据; 5.服务器收到新会话信息后,创建会话,同发送会话信息到对应终端;等待终端连接,然后启动会话,相互透明转发用户端和终端的数据; 6.终端收到新会话信息后,创建会话,然后连接服务器,连接到服务器后上报会话信息,再连接第三方服务,如shell;连接成功后启动会话,相互透明转发服务器端和第三方服务的数据; #### 安装教程 1.三个端均为纯java控制台程序,可以通过命令打包直接启动; 2.用户端默认也是控制命令交互,可以进行简单界面封装; 3.移动端使用终端程序需要进一步封装,比如android可以封装到单独app(该项目已创建一个app demo)或已有app创建service启动;ios端可以通过flutter等方式进行封装; #### 使用说明 1.服务器需要配置CmdConfig.json #### 参与贡献 无