From 44dc94a0c471764decbf6ff94b9ea58b7a7e2acc Mon Sep 17 00:00:00 2001 From: gitee-bot Date: Thu, 31 Jul 2025 10:28:14 +0000 Subject: [PATCH] Update README.md --- README.md | 180 +++++++++++++++++++++++++----------------------------- 1 file changed, 84 insertions(+), 96 deletions(-) diff --git a/README.md b/README.md index 09897c4..b3ade27 100644 --- a/README.md +++ b/README.md @@ -1,96 +1,84 @@ -# jrp-nat内网穿透工具(Java Reverse Proxy Network Address Translation) -## 内网穿透工具介绍 -基于spring boot、vert.x开发的跨平台的内网穿透工具,服务中转方式实现。 - -jrp-nat包括服务端jrp-server和客户端jrp-client。 - -先在有固定公网IP和开放对应端口的服务器上部署穿透服务端jrp-server,然后在内网部署服务穿透客户端jrp-client,客户端支持通过web配置页面或者配置文件管理配置(配置文件修改后会自动重新注册,不需要重启客户端)。 - -## 工具特点 -![feature.png](jrp-doc/images/feature.png) -1. **跨平台好维护**: 都通过java启动,装有jdk或jre 1.8+就可以运行,使用vert.x开发,代码量少好维护。 -2. **安全可靠**: 服务注册有验证,外网访问代理服务也需要先通过用户名密码验证,可以根据需求快速修改验证功能。 -3. **部署简单**: 部署只需3步:1.Linux、windows等系统上安装jdk或jre;2.修改配置文件;3.执行启动脚本运行程序。 -4. **使用便捷**: 配置简单,客户端支持json文件方式或者客户端web界面配置穿透信息,穿透配置调整后,不需要重启客户端,客户端会自动重新注册,支持断线重连,可通过参数配置重连次数。 - -## 软件架构 -1. 软件架构说明: - - Spring Boot 2.7.14(运行控制、配置管理)+Vert.x 4.5.3(服务管理、服务代理、服务中转)+vue3(element ui实现web端管理配置信息) -2. 功能实现图解: - ![description.png](jrp-doc/images/description.png) -## 安装教程 -1. 安装jdk8+或jre8+ -2. 修改配置文件application.yml里vertx.jrp下参数: - a. 内网穿透中转服务jrp-server配置(带独立外网ip和端口的服务器): - - ``` - vertx: - jrp: - #内网服务注册访问地址 - register-port: 2000 - #内网穿透中转服务web管理页面端口 - page-port: 10086 - #内网穿透中转服务web管理页面访问路径 - page-path: /jrp-server - #内网穿透中转服务web管理页面登录用户名 - username: admin - #内网穿透中转服务web管理页面密码 - password: 10010 - #http Digest认证算法 - algorithm: MD5 - #内网穿透服务注册验证信息,客户端需要和服务端一样,不然不能注册。 - token: 2023202 - ``` - b. 内网穿透客户端服务jrp-client配置(没有外网ip,能联网访问到带外网ip和端口服务器的局域网机器): - ``` - vertx: - jrp: - #配置文件存储方式 - config-store-type: file - #内网穿透代理服务注册地址,服务端外网ip和端口(vertx.jrp.register-port) - register-address: 127.0.0.1:2000 - #内网穿透验证信息和jrp-server配置值一样,不然不能注册。 - token: 2023202 - ``` -3. window通过[start.bat](jrp-server/src/bin/start.bat),linux通过[start.sh](jrp-server/src/bin/start.sh)启动内网穿透服务端(有外网ip和端口的服务器上启动)。 -4. 修改内网穿透客户端穿透代理配置参数config.json,通过java -jar jrp-client-1.0.1.jar启动内网穿透客户端服务(一般是一台能联网的内网服务器),目前主要支持HTTP、TCP: - ``` - { - "path": "jrp-client",//代理服务配置管理服务HTTP访问路径 - "port": 8000,//代理服务配置管理服务HTTP访问端口 - "remote_proxies": [//内网穿透配置:内网服务注册到外网中转代理服务上实现内网穿透 - { - "type": "HTTP",//穿透类型 - "remote_port": 8001,//穿透端口,外网中转代理服务代理后的服务端口 - "proxy_pass": "http://127.0.0.1:8000"//内网服务地址 - }, - { - "type": "TCP", - "remote_port": 2022,//穿透端口,外网中转代理服务代理后的服务端口 - "proxy_pass": "127.0.0.1:22" - } - ] - } - ``` -5. 启动成功后,可以通过页面 http://127.0.0.1:8000/jrp-client/web/ 修改穿透配置,页面如下: -![config.png](jrp-doc/images/config.png) -6. 穿透代理成功后,不管是http还是tcp代理成功后,得先通过浏览器HTTP方式访问外网ip端口,输入服务端配置的用户名密码认证信息(默认为admin,10010),服务端重启后会要求重新输入认证信息。 -7. windows开机启动设置配置。 - 打开文件夹“C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp”,start.bat脚本放到里面,示例如下: - [start.bat](jrp-client/src/bin/start.bat) - ``` - chcp 65001 - cd D:\jrp-client - D: - java -server -Dfile.encoding=utf-8 -Dspring.config.location=./application.yml -jar jrp-client-1.0.1.jar - ``` -## 版本修订记录 -### 1.0.1版本 -2025-06-10: -1. 修复大文件上传容易导致断开和内存不够用问题,通过idletimeout控制websocket断线重连,通过写满控制上传速度。 -2. 去掉没用到的依赖包,优化代码结构,超时时间等参数提取成常量。 - -2025-07-28: -1. 修改重连后提示端口占用问题。 -2. 客户端增加web配置界面,和直接改配置文件等效。 \ No newline at end of file + + +# jrp-nat内网穿透工具(Java Reverse Proxy Network Address Translation) + +## 工具介绍 +jrp-nat是一款基于Java实现的内网穿透工具,使用vert.x框架开发,可以将内网服务暴露到公网进行访问。工具包含服务端和客户端两个部分,通过中转服务器实现内网服务代理。 + +## 工具特点 +- 支持TCP/UDP/SOCKET等不同协议的内网穿透 +- 提供Web管理界面进行服务配置 +- 支持多种配置存储方式(文件/数据库) +- 实现连接断开自动重连机制 +- 使用HTTP Digest认证保证安全性 + +## 软件架构 +项目采用微服务架构设计: +- 服务端(jrp-server):负责接收客户端注册,维护代理服务 +- 客户端(jrp-client):负责连接服务端,注册需要穿透的内网服务 +- �1.穿透服务通过WebSocket连接进行通信协调 +- 配置文件(application.yml)统一管理服务配置 + +## 安装教程 +1. 服务端安装: + - 执行jrp-server/src/bin/start.sh启动服务端 + - 配置application.yml修改服务参数 + +2. 客户端安装: + - 执行jrp-client/src/bin/start.sh启动客户端 + - 配置config.json设置要穿透的内网服务 + +## 服务配置 +### 中转服务配置 +```yaml +vertx: + jrp: + # Web管理页面端口 + page-port: 8080 + # Web管理页面访问路径 + page-path: /jrp + # 登录用户名 + username: admin + # 登录密码 + password: admin + # Digest认证算法 + algorithm: MD5 + # 服务注册验证token + token: jrp_token +``` + +### 内网穿透配置 +```json +{ + "path": "localhost", + "port": 80, + "remote_proxies": [ + { + "id": "proxy1", + "name": "web服务", + "proxy_pass": "http://localhost:8080", + "type": "http", + "remote_port": 8080 + } + ] +} +``` + +## 版本记录 +### 1.0.1版本 +- 新增连接断开自动重连功能 +- 优化代理服务启动逻辑 +- 完善配置文件加载机制 +- 增强安全性验证流程 + +## 使用示例 +1. 启动服务端:`./jrp-server/src/bin/start.sh` +2. 启动客户端:`./jrp-client/src/bin/start.sh` +3. 访问服务:`http://服务器IP:8080` +4. 登录管理界面:使用配置的用户名和密码 + +## 开发者信息 +本工具由tony维护,使用vert.x框架实现高性能网络通信,采用模块化设计便于扩展。代码结构清晰,包含详细的日志记录和异常处理机制。 + +## 开源协议 +本项目遵循Apache-2.0协议,请在使用时注意相关版权信息。 \ No newline at end of file -- Gitee