mirror of
https://gitee.com/wujiawei1207537021/wu-lazy-cloud-network.git
synced 2026-02-04 06:55:52 +08:00
[update] 添加文档
This commit is contained in:
247
使用文档.md
Normal file
247
使用文档.md
Normal file
@@ -0,0 +1,247 @@
|
|||||||
|
# Wu-Lazy-Cloud-Network 使用文档
|
||||||
|
|
||||||
|
## 🚀 快速开始
|
||||||
|
|
||||||
|
### 1. 环境准备
|
||||||
|
|
||||||
|
- **Java**: JDK 13+ (推荐 JDK 24)
|
||||||
|
- **内存**: 最小 512MB
|
||||||
|
- **网络**: 服务端需要公网 IP
|
||||||
|
|
||||||
|
### 2. Docker 快速部署
|
||||||
|
|
||||||
|
#### 启动服务端
|
||||||
|
```bash
|
||||||
|
docker run -d -it -p 6001:6001 -p 7001:7001 -p 8001:8001 -p 9001:9001 \
|
||||||
|
--name wlcn-server \
|
||||||
|
registry.cn-hangzhou.aliyuncs.com/wu-lazy/wu-lazy-cloud-heartbeat-server:1.3.1-JDK24
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 启动客户端
|
||||||
|
```bash
|
||||||
|
docker run -d -it --privileged -p 6004:6004 \
|
||||||
|
--name wlcn-client \
|
||||||
|
--restart=always \
|
||||||
|
-e spring.lazy.netty.client.inet-host=YOUR_SERVER_IP \
|
||||||
|
-e spring.lazy.netty.client.inet-port=7001 \
|
||||||
|
-e spring.lazy.netty.client.client-id="your-client-id" \
|
||||||
|
registry.cn-hangzhou.aliyuncs.com/wu-lazy/wu-lazy-cloud-heartbeat-client-start:1.3.1-JDK24
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. 访问管理界面
|
||||||
|
|
||||||
|
- **服务端管理**: http://127.0.0.1:6001/netty-server-ui/index.html
|
||||||
|
- **客户端管理**: http://127.0.0.1:6004/netty-client-local-ui/index.html
|
||||||
|
|
||||||
|
**默认登录信息**:
|
||||||
|
- 用户名: `admin`
|
||||||
|
- 密码: `admin`
|
||||||
|
|
||||||
|
## 📋 功能使用
|
||||||
|
|
||||||
|
### 内网穿透
|
||||||
|
|
||||||
|
#### 服务端渗透客户端(内网穿透)
|
||||||
|
|
||||||
|
1. **配置端口池**
|
||||||
|
- 进入服务端管理界面
|
||||||
|
- 找到"服务端渗透端口池管理"
|
||||||
|
- 添加需要开放的端口
|
||||||
|
|
||||||
|
2. **配置客户端映射**
|
||||||
|
- 找到"服务端渗透客户端映射"
|
||||||
|
- 设置访客端口 → 客户端真实端口
|
||||||
|
- 例如: 19080 → 18080
|
||||||
|
|
||||||
|
3. **访问测试**
|
||||||
|
- 通过 `http://服务端IP:19080` 访问客户端本地 18080 端口
|
||||||
|
|
||||||
|
#### 客户端渗透服务端
|
||||||
|
|
||||||
|
1. **配置客户端端口池**
|
||||||
|
- 进入客户端管理界面
|
||||||
|
- 找到"客户端渗透端口池管理"
|
||||||
|
- 添加本地端口
|
||||||
|
|
||||||
|
2. **配置渗透映射**
|
||||||
|
- 找到"客户端渗透服务端映射"
|
||||||
|
- 设置本地端口 → 远程端口
|
||||||
|
- 例如: 13306 → 3306
|
||||||
|
|
||||||
|
### 代理功能
|
||||||
|
|
||||||
|
#### HTTP 代理
|
||||||
|
|
||||||
|
**服务端代理**:
|
||||||
|
- 地址: `127.0.0.1:8001`
|
||||||
|
- 用途: 通过服务端访问网络
|
||||||
|
|
||||||
|
**客户端代理**:
|
||||||
|
- 地址: `127.0.0.1:8002`
|
||||||
|
- 用途: 通过客户端访问网络
|
||||||
|
|
||||||
|
#### SOCKS 代理
|
||||||
|
|
||||||
|
**服务端代理**:
|
||||||
|
- 地址: `127.0.0.1:9001`
|
||||||
|
- 协议: SOCKS5
|
||||||
|
|
||||||
|
**客户端代理**:
|
||||||
|
- 地址: `127.0.0.1:9002`
|
||||||
|
- 协议: SOCKS5
|
||||||
|
|
||||||
|
### 路由管理
|
||||||
|
|
||||||
|
#### 虚拟路由
|
||||||
|
|
||||||
|
1. **创建虚拟 IP**
|
||||||
|
- 在路由管理界面创建虚拟 IP
|
||||||
|
- 配置代理目标 IP 和端口
|
||||||
|
|
||||||
|
2. **使用虚拟路由**
|
||||||
|
- 系统自动将虚拟 IP 流量代理到目标地址
|
||||||
|
|
||||||
|
## 🔧 常用配置
|
||||||
|
|
||||||
|
### 服务端配置
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
spring:
|
||||||
|
lazy:
|
||||||
|
netty:
|
||||||
|
server:
|
||||||
|
mode: standalone # standalone/cluster
|
||||||
|
node-id: default
|
||||||
|
node-host: 127.0.0.1
|
||||||
|
node-port: 7001
|
||||||
|
enable-flow-control: true
|
||||||
|
enable-token-verification: false
|
||||||
|
```
|
||||||
|
|
||||||
|
### 客户端配置
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
spring:
|
||||||
|
lazy:
|
||||||
|
netty:
|
||||||
|
client:
|
||||||
|
client-id: your-client-id
|
||||||
|
inet-host: 127.0.0.1
|
||||||
|
inet-port: 7001
|
||||||
|
enable: true
|
||||||
|
```
|
||||||
|
|
||||||
|
### 代理配置
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
spring:
|
||||||
|
lazy:
|
||||||
|
netty:
|
||||||
|
protocol:
|
||||||
|
proxy:
|
||||||
|
authentication: true
|
||||||
|
enable-proxy-log: false
|
||||||
|
socket-protocol-proxy:
|
||||||
|
port: 9001
|
||||||
|
http-protocol-proxy:
|
||||||
|
port: 8001
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📊 监控功能
|
||||||
|
|
||||||
|
### 流量监控
|
||||||
|
|
||||||
|
- **实时流量**: 查看每个客户端的实时流量
|
||||||
|
- **流量统计**: 按日统计流量使用情况
|
||||||
|
- **端口监控**: 监控各端口的使用情况
|
||||||
|
|
||||||
|
### 报表功能
|
||||||
|
|
||||||
|
- **日流量报表**: 查看每日流量统计
|
||||||
|
- **客户端排行**: 按流量使用量排行
|
||||||
|
- **端口分析**: 分析端口使用情况
|
||||||
|
|
||||||
|
## 🐛 常见问题
|
||||||
|
|
||||||
|
### 1. 客户端连接失败
|
||||||
|
|
||||||
|
**检查项**:
|
||||||
|
- 服务端 IP 和端口是否正确
|
||||||
|
- 网络连接是否正常
|
||||||
|
- 防火墙是否阻止连接
|
||||||
|
|
||||||
|
**解决方案**:
|
||||||
|
```bash
|
||||||
|
# 检查网络连接
|
||||||
|
ping YOUR_SERVER_IP
|
||||||
|
|
||||||
|
# 检查端口是否开放
|
||||||
|
telnet YOUR_SERVER_IP 7001
|
||||||
|
|
||||||
|
# 查看客户端日志
|
||||||
|
docker logs wlcn-client
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. 内网穿透不工作
|
||||||
|
|
||||||
|
**检查项**:
|
||||||
|
- 端口映射配置是否正确
|
||||||
|
- 目标服务是否正在运行
|
||||||
|
- 防火墙规则是否允许
|
||||||
|
|
||||||
|
**解决方案**:
|
||||||
|
- 确认映射配置: 访客端口 → 客户端端口
|
||||||
|
- 检查目标服务状态
|
||||||
|
- 测试本地端口访问
|
||||||
|
|
||||||
|
### 3. 代理连接失败
|
||||||
|
|
||||||
|
**检查项**:
|
||||||
|
- 代理地址和端口是否正确
|
||||||
|
- 代理认证信息是否正确
|
||||||
|
- 网络连接是否正常
|
||||||
|
|
||||||
|
**解决方案**:
|
||||||
|
- 验证代理配置信息
|
||||||
|
- 检查认证设置
|
||||||
|
- 测试网络连接
|
||||||
|
|
||||||
|
## 🔒 安全建议
|
||||||
|
|
||||||
|
### 1. 认证配置
|
||||||
|
|
||||||
|
- 启用 Token 验证
|
||||||
|
- 配置 AppKey/AppSecret
|
||||||
|
- 设置代理认证
|
||||||
|
|
||||||
|
### 2. 网络安全
|
||||||
|
|
||||||
|
- 使用 HTTPS 访问管理界面
|
||||||
|
- 配置防火墙规则
|
||||||
|
- 定期更新密码
|
||||||
|
|
||||||
|
### 3. 数据安全
|
||||||
|
|
||||||
|
- 定期备份配置数据
|
||||||
|
- 监控异常访问
|
||||||
|
- 记录操作日志
|
||||||
|
|
||||||
|
## 📞 获取帮助
|
||||||
|
|
||||||
|
### 联系方式
|
||||||
|
- **作者**: 吴佳伟
|
||||||
|
- **邮箱**: 1207537021@qq.com
|
||||||
|
- **项目地址**:
|
||||||
|
- [Gitee](https://gitee.com/wujiawei1207537021/wu-lazy-cloud-network)
|
||||||
|
- [GitHub](https://github.com/wujiawei1207537021/wu-lazy-cloud-network)
|
||||||
|
|
||||||
|
### 文档资源
|
||||||
|
- [项目说明文档](项目说明文档.md)
|
||||||
|
- [安装指南](install.md)
|
||||||
|
- [代理使用指南](Proxy.md)
|
||||||
|
- [版本更新记录](version.md)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**版本**: 1.3.1-JDK24
|
||||||
|
**更新时间**: 2024年
|
||||||
893
开发指南.md
Normal file
893
开发指南.md
Normal file
@@ -0,0 +1,893 @@
|
|||||||
|
# Wu-Lazy-Cloud-Network 开发指南
|
||||||
|
|
||||||
|
## 🛠️ 开发环境搭建
|
||||||
|
|
||||||
|
### 环境要求
|
||||||
|
|
||||||
|
#### 基础环境
|
||||||
|
- **操作系统**: Windows 10+ / macOS 10.15+ / Linux (Ubuntu 18.04+)
|
||||||
|
- **Java**: JDK 24 (推荐) 或 JDK 17+
|
||||||
|
- **Maven**: 3.6+
|
||||||
|
- **IDE**: IntelliJ IDEA 2023.1+ (推荐) 或 Eclipse 2023-03+
|
||||||
|
- **Git**: 2.30+
|
||||||
|
|
||||||
|
#### 数据库环境
|
||||||
|
- **MySQL**: 8.0+ (生产环境)
|
||||||
|
- **H2**: 2.1+ (开发环境)
|
||||||
|
|
||||||
|
#### 可选工具
|
||||||
|
- **Docker**: 20.10+ (容器化部署)
|
||||||
|
- **Docker Compose**: 2.0+ (多容器编排)
|
||||||
|
- **Postman**: API 测试工具
|
||||||
|
|
||||||
|
### 环境配置
|
||||||
|
|
||||||
|
#### 1. Java 环境配置
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 下载并安装 JDK 24
|
||||||
|
# 设置 JAVA_HOME 环境变量
|
||||||
|
export JAVA_HOME=/path/to/jdk-24
|
||||||
|
export PATH=$JAVA_HOME/bin:$PATH
|
||||||
|
|
||||||
|
# 验证安装
|
||||||
|
java -version
|
||||||
|
javac -version
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2. Maven 环境配置
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 下载并安装 Maven
|
||||||
|
# 设置 MAVEN_HOME 环境变量
|
||||||
|
export MAVEN_HOME=/path/to/maven
|
||||||
|
export PATH=$MAVEN_HOME/bin:$PATH
|
||||||
|
|
||||||
|
# 验证安装
|
||||||
|
mvn -version
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 3. IDE 配置
|
||||||
|
|
||||||
|
**IntelliJ IDEA 配置**:
|
||||||
|
1. 安装 JDK 24
|
||||||
|
2. 配置 Maven 设置
|
||||||
|
3. 导入项目为 Maven 项目
|
||||||
|
4. 配置代码风格和格式化规则
|
||||||
|
|
||||||
|
**Eclipse 配置**:
|
||||||
|
1. 安装 Eclipse IDE for Enterprise Java Developers
|
||||||
|
2. 配置 JDK 24
|
||||||
|
3. 导入 Maven 项目
|
||||||
|
4. 配置代码格式化规则
|
||||||
|
|
||||||
|
### 项目克隆
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 克隆项目
|
||||||
|
git clone https://gitee.com/wujiawei1207537021/wu-lazy-cloud-network.git
|
||||||
|
cd wu-lazy-cloud-network
|
||||||
|
|
||||||
|
# 切换到开发分支
|
||||||
|
git checkout develop
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📁 项目结构
|
||||||
|
|
||||||
|
### 目录结构
|
||||||
|
|
||||||
|
```
|
||||||
|
wu-lazy-cloud-network/
|
||||||
|
├── pom.xml # 父模块 POM
|
||||||
|
├── README.md # 项目说明
|
||||||
|
├── 项目说明文档.md # 详细项目说明
|
||||||
|
├── 使用文档.md # 使用指南
|
||||||
|
├── 架构说明.md # 架构文档
|
||||||
|
├── 开发指南.md # 本文档
|
||||||
|
├── install.md # 安装指南
|
||||||
|
├── Proxy.md # 代理使用指南
|
||||||
|
├── version.md # 版本更新记录
|
||||||
|
├── LICENSE # 许可证
|
||||||
|
├── .gitignore # Git 忽略文件
|
||||||
|
├── wu-lazy-cloud-heartbeat-common/ # 公共模块
|
||||||
|
│ ├── pom.xml
|
||||||
|
│ └── src/main/java/org/framework/lazy/cloud/network/heartbeat/common/
|
||||||
|
│ ├── adapter/ # 适配器
|
||||||
|
│ ├── advanced/ # 高级功能
|
||||||
|
│ ├── allocator/ # 分配器
|
||||||
|
│ ├── constant/ # 常量定义
|
||||||
|
│ ├── context/ # 上下文
|
||||||
|
│ ├── decoder/ # 解码器
|
||||||
|
│ ├── encoder/ # 编码器
|
||||||
|
│ ├── enums/ # 枚举
|
||||||
|
│ ├── factory/ # 工厂类
|
||||||
|
│ ├── filter/ # 过滤器
|
||||||
|
│ ├── pool/ # 连接池
|
||||||
|
│ ├── socket/ # Socket 相关
|
||||||
|
│ ├── state/ # 状态管理
|
||||||
|
│ └── utils/ # 工具类
|
||||||
|
├── wu-lazy-cloud-heartbeat-server/ # 服务端模块
|
||||||
|
│ ├── pom.xml
|
||||||
|
│ └── src/main/java/org/framework/lazy/cloud/network/heartbeat/server/
|
||||||
|
│ ├── cluster/ # 集群功能
|
||||||
|
│ ├── config/ # 配置类
|
||||||
|
│ ├── context/ # 上下文
|
||||||
|
│ ├── init/ # 初始化
|
||||||
|
│ ├── netty/ # Netty 相关
|
||||||
|
│ ├── properties/ # 属性配置
|
||||||
|
│ ├── standalone/ # 单机模式
|
||||||
|
│ └── ui/ # 用户界面
|
||||||
|
├── wu-lazy-cloud-heartbeat-client/ # 客户端模块
|
||||||
|
│ ├── pom.xml
|
||||||
|
│ └── src/main/java/org/framework/lazy/cloud/network/heartbeat/client/
|
||||||
|
│ ├── application/ # 应用层
|
||||||
|
│ ├── config/ # 配置类
|
||||||
|
│ ├── context/ # 上下文
|
||||||
|
│ ├── controller/ # 控制器
|
||||||
|
│ ├── domain/ # 领域层
|
||||||
|
│ ├── infrastructure/ # 基础设施层
|
||||||
|
│ ├── netty/ # Netty 相关
|
||||||
|
│ ├── rpc/ # RPC 相关
|
||||||
|
│ └── ui/ # 用户界面
|
||||||
|
├── wu-lazy-cloud-heartbeat-dns/ # DNS 模块
|
||||||
|
│ ├── pom.xml
|
||||||
|
│ └── src/main/java/org/framework/lazy/cloud/network/heartbeat/protocol/
|
||||||
|
├── wu-lazy-cloud-heartbeat-protocol-proxy/ # 代理协议模块
|
||||||
|
│ ├── pom.xml
|
||||||
|
│ └── src/main/java/org/framework/lazy/cloud/network/heartbeat/protocol/
|
||||||
|
│ ├── actuator/ # 执行器
|
||||||
|
│ ├── advanced/ # 高级功能
|
||||||
|
│ ├── auth/ # 认证
|
||||||
|
│ ├── config/ # 配置
|
||||||
|
│ ├── context/ # 上下文
|
||||||
|
│ ├── demo/ # 示例
|
||||||
|
│ ├── filter/ # 过滤器
|
||||||
|
│ ├── handler/ # 处理器
|
||||||
|
│ ├── init/ # 初始化
|
||||||
|
│ ├── log/ # 日志
|
||||||
|
│ ├── properties/ # 属性
|
||||||
|
│ ├── route/ # 路由
|
||||||
|
│ ├── socket5/ # SOCKS5
|
||||||
|
│ ├── token/ # Token
|
||||||
|
│ └── utils/ # 工具类
|
||||||
|
└── wu-lazy-cloud-heartbeat-start/ # 启动模块
|
||||||
|
├── pom.xml
|
||||||
|
├── wu-lazy-cloud-heartbeat-server-start/ # 服务端启动
|
||||||
|
├── wu-lazy-cloud-heartbeat-client-start/ # 客户端启动
|
||||||
|
└── wu-lazy-cloud-heartbeat-server-cluster-start/ # 集群启动
|
||||||
|
```
|
||||||
|
|
||||||
|
### 核心包结构
|
||||||
|
|
||||||
|
#### 1. Common 模块 (wu-lazy-cloud-heartbeat-common)
|
||||||
|
|
||||||
|
**核心类**:
|
||||||
|
- `NettyMsg`: 网络消息基类
|
||||||
|
- `ChannelContext`: 通道上下文基类
|
||||||
|
- `NettyTransferChannelContext`: 传输通道上下文
|
||||||
|
- `NettyVisitorPortContext`: 访客端口上下文
|
||||||
|
- `NettyRealIdContext`: 真实连接上下文
|
||||||
|
|
||||||
|
**适配器**:
|
||||||
|
- `NettyAdapter`: 网络适配器接口
|
||||||
|
- `ProtocolAdapter`: 协议适配器接口
|
||||||
|
|
||||||
|
**工具类**:
|
||||||
|
- `NettyUtils`: Netty 工具类
|
||||||
|
- `ChannelUtils`: 通道工具类
|
||||||
|
- `ProtocolUtils`: 协议工具类
|
||||||
|
|
||||||
|
#### 2. Server 模块 (wu-lazy-cloud-heartbeat-server)
|
||||||
|
|
||||||
|
**核心类**:
|
||||||
|
- `NettyTcpServerSocketApplicationListener`: TCP 服务监听器
|
||||||
|
- `LazyServerPermeateServerMappingApplication`: 服务端渗透应用
|
||||||
|
- `NettyServerVirtualRouteApplication`: 虚拟路由应用
|
||||||
|
|
||||||
|
**配置类**:
|
||||||
|
- `ServerAutoConfiguration`: 服务端自动配置
|
||||||
|
- `ServerFlowConfiguration`: 流量控制配置
|
||||||
|
|
||||||
|
**初始化类**:
|
||||||
|
- `InitServerSocket`: 服务端 Socket 初始化
|
||||||
|
- `InitServerPermeateSocket`: 渗透 Socket 初始化
|
||||||
|
- `InitServerProxySocket`: 代理 Socket 初始化
|
||||||
|
|
||||||
|
#### 3. Client 模块 (wu-lazy-cloud-heartbeat-client)
|
||||||
|
|
||||||
|
**核心类**:
|
||||||
|
- `NettyClientSocketApplicationListener`: 客户端连接监听器
|
||||||
|
- `LazyClientPermeateClientMappingApplication`: 客户端渗透应用
|
||||||
|
- `NettyClientVirtualRouteApplication`: 客户端虚拟路由
|
||||||
|
|
||||||
|
**应用层**:
|
||||||
|
- `LazyNettyClientApplication`: 客户端应用服务
|
||||||
|
- `LazyNettyClientPermeateApplication`: 客户端渗透服务
|
||||||
|
|
||||||
|
**领域层**:
|
||||||
|
- `LazyNettyClient`: 客户端实体
|
||||||
|
- `LazyNettyClientPermeateMapping`: 客户端渗透映射
|
||||||
|
|
||||||
|
#### 4. Protocol Proxy 模块 (wu-lazy-cloud-heartbeat-protocol-proxy)
|
||||||
|
|
||||||
|
**核心类**:
|
||||||
|
- `NettyHttpProxySocketApplicationListener`: HTTP 代理监听器
|
||||||
|
- `NettySocketProxySocketApplicationListener`: SOCKS 代理监听器
|
||||||
|
- `NettyTcpProxyFilter`: TCP 代理过滤器
|
||||||
|
|
||||||
|
**协议处理**:
|
||||||
|
- `HttpProxyHandler`: HTTP 代理处理器
|
||||||
|
- `SocksProxyHandler`: SOCKS 代理处理器
|
||||||
|
- `ProxyAuthenticationHandler`: 代理认证处理器
|
||||||
|
|
||||||
|
## 🔧 开发规范
|
||||||
|
|
||||||
|
### 代码规范
|
||||||
|
|
||||||
|
#### 1. 命名规范
|
||||||
|
|
||||||
|
**类命名**:
|
||||||
|
- 使用 PascalCase
|
||||||
|
- 类名应该清晰表达其功能
|
||||||
|
- 接口以 `I` 开头,抽象类以 `Abstract` 开头
|
||||||
|
|
||||||
|
```java
|
||||||
|
// 正确示例
|
||||||
|
public class NettyTcpServerSocketApplicationListener
|
||||||
|
public interface INettyAdapter
|
||||||
|
public abstract class AbstractNettyHandler
|
||||||
|
|
||||||
|
// 错误示例
|
||||||
|
public class nettyServer
|
||||||
|
public class NettyServer
|
||||||
|
```
|
||||||
|
|
||||||
|
**方法命名**:
|
||||||
|
- 使用 camelCase
|
||||||
|
- 方法名应该清晰表达其功能
|
||||||
|
- 布尔方法以 `is`、`has`、`can` 开头
|
||||||
|
|
||||||
|
```java
|
||||||
|
// 正确示例
|
||||||
|
public void startServer()
|
||||||
|
public boolean isConnected()
|
||||||
|
public boolean hasPermission()
|
||||||
|
|
||||||
|
// 错误示例
|
||||||
|
public void start_server()
|
||||||
|
public boolean connected()
|
||||||
|
```
|
||||||
|
|
||||||
|
**变量命名**:
|
||||||
|
- 使用 camelCase
|
||||||
|
- 常量使用 UPPER_SNAKE_CASE
|
||||||
|
- 避免使用单字母变量名
|
||||||
|
|
||||||
|
```java
|
||||||
|
// 正确示例
|
||||||
|
private String serverHost;
|
||||||
|
private static final String DEFAULT_PORT = "8080";
|
||||||
|
|
||||||
|
// 错误示例
|
||||||
|
private String host;
|
||||||
|
private static final String port = "8080";
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2. 代码结构
|
||||||
|
|
||||||
|
**包结构**:
|
||||||
|
```
|
||||||
|
org.framework.lazy.cloud.network.heartbeat.{module}
|
||||||
|
├── application/ # 应用层
|
||||||
|
├── domain/ # 领域层
|
||||||
|
├── infrastructure/ # 基础设施层
|
||||||
|
├── config/ # 配置类
|
||||||
|
├── context/ # 上下文
|
||||||
|
├── handler/ # 处理器
|
||||||
|
├── filter/ # 过滤器
|
||||||
|
└── utils/ # 工具类
|
||||||
|
```
|
||||||
|
|
||||||
|
**类结构**:
|
||||||
|
```java
|
||||||
|
// 1. 包声明
|
||||||
|
package org.framework.lazy.cloud.network.heartbeat.server;
|
||||||
|
|
||||||
|
// 2. 导入语句
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
// 3. 类注释
|
||||||
|
/**
|
||||||
|
* 服务端 TCP Socket 应用监听器
|
||||||
|
*
|
||||||
|
* @author 吴佳伟
|
||||||
|
* @date 2024-01-01
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Component
|
||||||
|
public class NettyTcpServerSocketApplicationListener {
|
||||||
|
|
||||||
|
// 4. 常量定义
|
||||||
|
private static final int DEFAULT_PORT = 7001;
|
||||||
|
|
||||||
|
// 5. 成员变量
|
||||||
|
private final EventLoopGroup bossGroup;
|
||||||
|
private final EventLoopGroup workerGroup;
|
||||||
|
|
||||||
|
// 6. 构造函数
|
||||||
|
public NettyTcpServerSocketApplicationListener() {
|
||||||
|
this.bossGroup = new NioEventLoopGroup();
|
||||||
|
this.workerGroup = new NioEventLoopGroup();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 7. 公共方法
|
||||||
|
public void start() {
|
||||||
|
// 实现逻辑
|
||||||
|
}
|
||||||
|
|
||||||
|
// 8. 私有方法
|
||||||
|
private void initChannel() {
|
||||||
|
// 实现逻辑
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 3. 注释规范
|
||||||
|
|
||||||
|
**类注释**:
|
||||||
|
```java
|
||||||
|
/**
|
||||||
|
* 服务端 TCP Socket 应用监听器
|
||||||
|
*
|
||||||
|
* 负责启动和管理服务端 TCP Socket 连接,处理客户端连接请求,
|
||||||
|
* 并提供内网穿透和代理功能。
|
||||||
|
*
|
||||||
|
* @author 吴佳伟
|
||||||
|
* @date 2024-01-01
|
||||||
|
* @version 1.3.1
|
||||||
|
*/
|
||||||
|
```
|
||||||
|
|
||||||
|
**方法注释**:
|
||||||
|
```java
|
||||||
|
/**
|
||||||
|
* 启动 TCP 服务器
|
||||||
|
*
|
||||||
|
* 初始化 Netty 服务器,绑定指定端口,开始监听客户端连接。
|
||||||
|
* 如果启动失败,会抛出 RuntimeException。
|
||||||
|
*
|
||||||
|
* @param port 监听端口
|
||||||
|
* @throws RuntimeException 启动失败时抛出
|
||||||
|
*/
|
||||||
|
public void startTcpServer(int port) {
|
||||||
|
// 实现逻辑
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**变量注释**:
|
||||||
|
```java
|
||||||
|
/** 服务端端口 */
|
||||||
|
private int serverPort;
|
||||||
|
|
||||||
|
/** 客户端连接池 */
|
||||||
|
private final ConnectionPool connectionPool;
|
||||||
|
```
|
||||||
|
|
||||||
|
### 设计模式
|
||||||
|
|
||||||
|
#### 1. 工厂模式
|
||||||
|
|
||||||
|
```java
|
||||||
|
/**
|
||||||
|
* Netty 处理器工厂
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
public class NettyHandlerFactory {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建 HTTP 代理处理器
|
||||||
|
*/
|
||||||
|
public NettyHttpProxyHandler createHttpProxyHandler() {
|
||||||
|
return new NettyHttpProxyHandler();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建 SOCKS 代理处理器
|
||||||
|
*/
|
||||||
|
public NettySocksProxyHandler createSocksProxyHandler() {
|
||||||
|
return new NettySocksProxyHandler();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2. 策略模式
|
||||||
|
|
||||||
|
```java
|
||||||
|
/**
|
||||||
|
* 协议处理策略接口
|
||||||
|
*/
|
||||||
|
public interface ProtocolStrategy {
|
||||||
|
void handle(Channel channel, Object message);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* HTTP 协议处理策略
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
public class HttpProtocolStrategy implements ProtocolStrategy {
|
||||||
|
@Override
|
||||||
|
public void handle(Channel channel, Object message) {
|
||||||
|
// HTTP 协议处理逻辑
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SOCKS 协议处理策略
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
public class SocksProtocolStrategy implements ProtocolStrategy {
|
||||||
|
@Override
|
||||||
|
public void handle(Channel channel, Object message) {
|
||||||
|
// SOCKS 协议处理逻辑
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 3. 观察者模式
|
||||||
|
|
||||||
|
```java
|
||||||
|
/**
|
||||||
|
* 连接事件监听器
|
||||||
|
*/
|
||||||
|
public interface ConnectionEventListener {
|
||||||
|
void onConnect(Channel channel);
|
||||||
|
void onDisconnect(Channel channel);
|
||||||
|
void onError(Channel channel, Throwable cause);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 连接事件管理器
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
public class ConnectionEventManager {
|
||||||
|
private final List<ConnectionEventListener> listeners = new ArrayList<>();
|
||||||
|
|
||||||
|
public void addListener(ConnectionEventListener listener) {
|
||||||
|
listeners.add(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void notifyConnect(Channel channel) {
|
||||||
|
listeners.forEach(listener -> listener.onConnect(channel));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 异常处理
|
||||||
|
|
||||||
|
#### 1. 自定义异常
|
||||||
|
|
||||||
|
```java
|
||||||
|
/**
|
||||||
|
* 网络连接异常
|
||||||
|
*/
|
||||||
|
public class NetworkConnectionException extends RuntimeException {
|
||||||
|
|
||||||
|
public NetworkConnectionException(String message) {
|
||||||
|
super(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public NetworkConnectionException(String message, Throwable cause) {
|
||||||
|
super(message, cause);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 协议解析异常
|
||||||
|
*/
|
||||||
|
public class ProtocolParseException extends RuntimeException {
|
||||||
|
|
||||||
|
public ProtocolParseException(String message) {
|
||||||
|
super(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ProtocolParseException(String message, Throwable cause) {
|
||||||
|
super(message, cause);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2. 异常处理规范
|
||||||
|
|
||||||
|
```java
|
||||||
|
/**
|
||||||
|
* 网络连接管理器
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
public class NetworkConnectionManager {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 建立连接
|
||||||
|
*/
|
||||||
|
public Channel connect(String host, int port) {
|
||||||
|
try {
|
||||||
|
// 连接逻辑
|
||||||
|
return establishConnection(host, port);
|
||||||
|
} catch (ConnectException e) {
|
||||||
|
log.error("连接失败: {}:{}", host, port, e);
|
||||||
|
throw new NetworkConnectionException("无法连接到服务器: " + host + ":" + port, e);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("连接过程中发生未知错误: {}:{}", host, port, e);
|
||||||
|
throw new NetworkConnectionException("连接过程中发生未知错误", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 安全关闭连接
|
||||||
|
*/
|
||||||
|
public void safeClose(Channel channel) {
|
||||||
|
if (channel != null && channel.isActive()) {
|
||||||
|
try {
|
||||||
|
channel.close().sync();
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.warn("关闭连接时发生错误", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🧪 测试规范
|
||||||
|
|
||||||
|
### 单元测试
|
||||||
|
|
||||||
|
#### 1. 测试框架
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<!-- 测试依赖 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-test</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.mockito</groupId>
|
||||||
|
<artifactId>mockito-core</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.mockito</groupId>
|
||||||
|
<artifactId>mockito-junit-jupiter</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2. 测试类结构
|
||||||
|
|
||||||
|
```java
|
||||||
|
/**
|
||||||
|
* Netty 客户端连接测试
|
||||||
|
*/
|
||||||
|
@ExtendWith(MockitoExtension.class)
|
||||||
|
class NettyClientConnectionTest {
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private NettyClientProperties properties;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private LazyLambdaStream lazyLambdaStream;
|
||||||
|
|
||||||
|
@InjectMocks
|
||||||
|
private NettyClientSocketApplicationListener listener;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("客户端连接成功")
|
||||||
|
void testClientConnectionSuccess() {
|
||||||
|
// Given
|
||||||
|
when(properties.getInetHost()).thenReturn("127.0.0.1");
|
||||||
|
when(properties.getInetPort()).thenReturn(7001);
|
||||||
|
|
||||||
|
// When
|
||||||
|
listener.doRunning();
|
||||||
|
|
||||||
|
// Then
|
||||||
|
verify(lazyLambdaStream, times(1)).findList(any());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("客户端连接失败")
|
||||||
|
void testClientConnectionFailure() {
|
||||||
|
// Given
|
||||||
|
when(properties.getInetHost()).thenReturn("invalid-host");
|
||||||
|
|
||||||
|
// When & Then
|
||||||
|
assertThrows(NetworkConnectionException.class, () -> {
|
||||||
|
listener.doRunning();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 3. 集成测试
|
||||||
|
|
||||||
|
```java
|
||||||
|
/**
|
||||||
|
* 服务端集成测试
|
||||||
|
*/
|
||||||
|
@SpringBootTest
|
||||||
|
@TestPropertySource(properties = {
|
||||||
|
"spring.lazy.netty.server.mode=standalone",
|
||||||
|
"spring.lazy.netty.server.node-port=7001"
|
||||||
|
})
|
||||||
|
class ServerIntegrationTest {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private NettyTcpServerSocketApplicationListener serverListener;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("服务端启动成功")
|
||||||
|
void testServerStartup() {
|
||||||
|
// Given & When
|
||||||
|
serverListener.doRunning();
|
||||||
|
|
||||||
|
// Then
|
||||||
|
assertTrue(serverListener.isRunning());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 性能测试
|
||||||
|
|
||||||
|
#### 1. JMH 基准测试
|
||||||
|
|
||||||
|
```java
|
||||||
|
/**
|
||||||
|
* 网络传输性能测试
|
||||||
|
*/
|
||||||
|
@BenchmarkMode(Mode.Throughput)
|
||||||
|
@OutputTimeUnit(TimeUnit.SECONDS)
|
||||||
|
@State(Scope.Benchmark)
|
||||||
|
public class NetworkTransferBenchmark {
|
||||||
|
|
||||||
|
private NettyTransferChannelContext transferContext;
|
||||||
|
|
||||||
|
@Setup
|
||||||
|
public void setup() {
|
||||||
|
transferContext = new NettyTransferChannelContext();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Benchmark
|
||||||
|
public void testDataTransfer() {
|
||||||
|
// 数据传输测试逻辑
|
||||||
|
transferContext.transfer(createTestData());
|
||||||
|
}
|
||||||
|
|
||||||
|
private byte[] createTestData() {
|
||||||
|
return "test data".getBytes();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📦 构建和部署
|
||||||
|
|
||||||
|
### Maven 构建
|
||||||
|
|
||||||
|
#### 1. 编译项目
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 清理并编译
|
||||||
|
mvn clean compile
|
||||||
|
|
||||||
|
# 运行测试
|
||||||
|
mvn test
|
||||||
|
|
||||||
|
# 打包
|
||||||
|
mvn package -DskipTests
|
||||||
|
|
||||||
|
# 安装到本地仓库
|
||||||
|
mvn install
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2. 多模块构建
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 构建所有模块
|
||||||
|
mvn clean install -DskipTests
|
||||||
|
|
||||||
|
# 构建特定模块
|
||||||
|
mvn clean install -pl wu-lazy-cloud-heartbeat-server -am
|
||||||
|
|
||||||
|
# 跳过测试构建
|
||||||
|
mvn clean package -DskipTests
|
||||||
|
```
|
||||||
|
|
||||||
|
### Docker 构建
|
||||||
|
|
||||||
|
#### 1. 服务端 Dockerfile
|
||||||
|
|
||||||
|
```dockerfile
|
||||||
|
FROM registry.cn-hangzhou.aliyuncs.com/wu-lazy/wu-framework-parent:jdk-24-x64
|
||||||
|
MAINTAINER wujiawei <1207537021@qq.com>
|
||||||
|
|
||||||
|
RUN echo "Asia/Shanghai" > /etc/timezone
|
||||||
|
|
||||||
|
ENV APP_JAR_NAME=$APP_NAME \
|
||||||
|
JAVA_OPTS="-Xms512m -Xmx1024m -XX:+UseContainerSupport -XX:InitialRAMPercentage=50.0 -XX:MaxRAMPercentage=80.0 -Djdk.management.jfr.VmFlagRepository.useCgroups=false -Djava.security.egd=file:/dev/./urandom" \
|
||||||
|
PARAMS=""
|
||||||
|
|
||||||
|
COPY target/*.jar /app.jar
|
||||||
|
|
||||||
|
ENTRYPOINT exec java -server $JAVA_OPTS -jar /app.jar $PARAMS
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2. 客户端 Dockerfile
|
||||||
|
|
||||||
|
```dockerfile
|
||||||
|
FROM registry.cn-hangzhou.aliyuncs.com/wu-lazy/wu-framework-parent:jdk-24-x64
|
||||||
|
MAINTAINER wujiawei <1207537021@qq.com>
|
||||||
|
|
||||||
|
RUN echo "Asia/Shanghai" > /etc/timezone
|
||||||
|
|
||||||
|
ENV APP_JAR_NAME=$APP_NAME \
|
||||||
|
JAVA_OPTS="-Xms512m -Xmx1024m -XX:+UseContainerSupport -XX:InitialRAMPercentage=50.0 -XX:MaxRAMPercentage=80.0 -Djdk.management.jfr.VmFlagRepository.useCgroups=false -Djava.security.egd=file:/dev/./urandom" \
|
||||||
|
PARAMS=""
|
||||||
|
|
||||||
|
COPY target/*.jar /app.jar
|
||||||
|
|
||||||
|
ENTRYPOINT exec java -server $JAVA_OPTS -jar /app.jar $PARAMS
|
||||||
|
```
|
||||||
|
|
||||||
|
### 部署脚本
|
||||||
|
|
||||||
|
#### 1. 开发环境部署
|
||||||
|
|
||||||
|
```bash
|
||||||
|
#!/bin/bash
|
||||||
|
# deploy-dev.sh
|
||||||
|
|
||||||
|
echo "开始部署开发环境..."
|
||||||
|
|
||||||
|
# 编译项目
|
||||||
|
mvn clean package -DskipTests
|
||||||
|
|
||||||
|
# 启动服务端
|
||||||
|
cd wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-server-start
|
||||||
|
nohup java -jar target/wu-lazy-cloud-heartbeat-server-start-1.3.1-JDK24.jar > server.log 2>&1 &
|
||||||
|
|
||||||
|
# 启动客户端
|
||||||
|
cd ../wu-lazy-cloud-heartbeat-client-start
|
||||||
|
nohup java -jar target/wu-lazy-cloud-heartbeat-client-start-1.3.1-JDK24.jar > client.log 2>&1 &
|
||||||
|
|
||||||
|
echo "部署完成!"
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2. 生产环境部署
|
||||||
|
|
||||||
|
```bash
|
||||||
|
#!/bin/bash
|
||||||
|
# deploy-prod.sh
|
||||||
|
|
||||||
|
echo "开始部署生产环境..."
|
||||||
|
|
||||||
|
# 构建 Docker 镜像
|
||||||
|
docker build -t wlcn-server:latest wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-server-start/
|
||||||
|
docker build -t wlcn-client:latest wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-client-start/
|
||||||
|
|
||||||
|
# 停止旧容器
|
||||||
|
docker stop wlcn-server wlcn-client || true
|
||||||
|
docker rm wlcn-server wlcn-client || true
|
||||||
|
|
||||||
|
# 启动新容器
|
||||||
|
docker run -d --name wlcn-server -p 6001:6001 -p 7001:7001 -p 8001:8001 -p 9001:9001 wlcn-server:latest
|
||||||
|
docker run -d --name wlcn-client --privileged -p 6004:6004 wlcn-client:latest
|
||||||
|
|
||||||
|
echo "部署完成!"
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔍 调试技巧
|
||||||
|
|
||||||
|
### 日志配置
|
||||||
|
|
||||||
|
#### 1. 开发环境日志
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# application-dev.yml
|
||||||
|
logging:
|
||||||
|
level:
|
||||||
|
org.framework.lazy.cloud.network.heartbeat: DEBUG
|
||||||
|
io.netty: DEBUG
|
||||||
|
root: INFO
|
||||||
|
pattern:
|
||||||
|
console: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"
|
||||||
|
file: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"
|
||||||
|
file:
|
||||||
|
name: logs/wlcn-dev.log
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2. 生产环境日志
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# application-prod.yml
|
||||||
|
logging:
|
||||||
|
level:
|
||||||
|
org.framework.lazy.cloud.network.heartbeat: INFO
|
||||||
|
io.netty: WARN
|
||||||
|
root: WARN
|
||||||
|
pattern:
|
||||||
|
console: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"
|
||||||
|
file: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"
|
||||||
|
file:
|
||||||
|
name: logs/wlcn-prod.log
|
||||||
|
max-size: 100MB
|
||||||
|
max-history: 30
|
||||||
|
```
|
||||||
|
|
||||||
|
### 远程调试
|
||||||
|
|
||||||
|
#### 1. JVM 调试参数
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 服务端调试
|
||||||
|
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 \
|
||||||
|
-jar wu-lazy-cloud-heartbeat-server-start-1.3.1-JDK24.jar
|
||||||
|
|
||||||
|
# 客户端调试
|
||||||
|
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5006 \
|
||||||
|
-jar wu-lazy-cloud-heartbeat-client-start-1.3.1-JDK24.jar
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2. Docker 调试
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 启动带调试端口的容器
|
||||||
|
docker run -d -p 6001:6001 -p 7001:7001 -p 5005:5005 \
|
||||||
|
-e JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005" \
|
||||||
|
--name wlcn-server-debug wlcn-server:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
### 性能分析
|
||||||
|
|
||||||
|
#### 1. JProfiler 集成
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<!-- 添加 JProfiler 依赖 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.jprofiler</groupId>
|
||||||
|
<artifactId>jprofiler</artifactId>
|
||||||
|
<version>13.0</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2. 内存分析
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 生成堆转储
|
||||||
|
jmap -dump:format=b,file=heap.hprof <pid>
|
||||||
|
|
||||||
|
# 分析堆转储
|
||||||
|
jhat heap.hprof
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📚 学习资源
|
||||||
|
|
||||||
|
### 官方文档
|
||||||
|
- [Spring Boot 官方文档](https://spring.io/projects/spring-boot)
|
||||||
|
- [Netty 官方文档](https://netty.io/)
|
||||||
|
- [Lazy ORM 文档](https://gitee.com/wujiawei1207537021/wu-framework-parent)
|
||||||
|
|
||||||
|
### 推荐书籍
|
||||||
|
- 《Spring Boot 实战》
|
||||||
|
- 《Netty 实战》
|
||||||
|
- 《Java 并发编程实战》
|
||||||
|
|
||||||
|
### 在线资源
|
||||||
|
- [Spring Boot 教程](https://spring.io/guides)
|
||||||
|
- [Netty 教程](https://netty.io/wiki/)
|
||||||
|
- [Java 并发编程](https://docs.oracle.com/javase/tutorial/essential/concurrency/)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**版本**: 1.3.1-JDK24
|
||||||
|
**更新时间**: 2024年
|
||||||
|
**维护者**: 吴佳伟
|
||||||
414
架构说明.md
Normal file
414
架构说明.md
Normal file
@@ -0,0 +1,414 @@
|
|||||||
|
# Wu-Lazy-Cloud-Network 架构说明
|
||||||
|
|
||||||
|
## 🏗️ 整体架构
|
||||||
|
|
||||||
|
### 系统架构图
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────────────────────────────────────┐
|
||||||
|
│ Wu-Lazy-Cloud-Network │
|
||||||
|
├─────────────────────────────────────────────────────────────────┤
|
||||||
|
│ 客户端 (Client) 服务端 (Server) │
|
||||||
|
│ ┌─────────────────┐ ┌─────────────────┐ │
|
||||||
|
│ │ Web UI │ │ Web UI │ │
|
||||||
|
│ │ (6004) │ │ (6001) │ │
|
||||||
|
│ └─────────────────┘ └─────────────────┘ │
|
||||||
|
│ ┌─────────────────┐ ┌─────────────────┐ │
|
||||||
|
│ │ Netty Client │◄────────────►│ Netty Server │ │
|
||||||
|
│ │ (7001) │ │ (7001) │ │
|
||||||
|
│ └─────────────────┘ └─────────────────┘ │
|
||||||
|
│ ┌─────────────────┐ ┌─────────────────┐ │
|
||||||
|
│ │ HTTP Proxy │ │ HTTP Proxy │ │
|
||||||
|
│ │ (8002) │ │ (8001) │ │
|
||||||
|
│ └─────────────────┘ └─────────────────┘ │
|
||||||
|
│ ┌─────────────────┐ ┌─────────────────┐ │
|
||||||
|
│ │ SOCKS Proxy │ │ SOCKS Proxy │ │
|
||||||
|
│ │ (9002) │ │ (9001) │ │
|
||||||
|
│ └─────────────────┘ └─────────────────┘ │
|
||||||
|
└─────────────────────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
### 核心组件
|
||||||
|
|
||||||
|
#### 1. 通信层 (Communication Layer)
|
||||||
|
- **Netty Framework**: 基于 Netty 的高性能网络通信
|
||||||
|
- **TCP/UDP 支持**: 支持多种传输协议
|
||||||
|
- **心跳机制**: 保持客户端与服务端的连接
|
||||||
|
|
||||||
|
#### 2. 协议层 (Protocol Layer)
|
||||||
|
- **HTTP 代理**: 支持 HTTP/HTTPS 代理
|
||||||
|
- **SOCKS 代理**: 支持 SOCKS4/SOCKS5 代理
|
||||||
|
- **自定义协议**: 支持扩展自定义协议
|
||||||
|
|
||||||
|
#### 3. 业务层 (Business Layer)
|
||||||
|
- **内网穿透**: 网络端口映射功能
|
||||||
|
- **流量监控**: 实时流量统计和分析
|
||||||
|
- **路由管理**: 虚拟路由和流量转发
|
||||||
|
|
||||||
|
#### 4. 数据层 (Data Layer)
|
||||||
|
- **MySQL**: 主数据库,存储配置和监控数据
|
||||||
|
- **H2**: 开发环境数据库
|
||||||
|
- **Lazy ORM**: 数据库操作框架
|
||||||
|
|
||||||
|
## 📦 模块架构
|
||||||
|
|
||||||
|
### 模块依赖关系
|
||||||
|
|
||||||
|
```
|
||||||
|
wu-lazy-cloud-network (父模块)
|
||||||
|
├── wu-lazy-cloud-heartbeat-common (公共模块)
|
||||||
|
│ ├── 接口定义
|
||||||
|
│ ├── 枚举常量
|
||||||
|
│ ├── 适配器
|
||||||
|
│ └── 工具类
|
||||||
|
├── wu-lazy-cloud-heartbeat-server (服务端核心)
|
||||||
|
│ ├── 服务端业务逻辑
|
||||||
|
│ ├── 网络处理
|
||||||
|
│ └── 管理界面
|
||||||
|
├── wu-lazy-cloud-heartbeat-client (客户端核心)
|
||||||
|
│ ├── 客户端业务逻辑
|
||||||
|
│ ├── 连接管理
|
||||||
|
│ └── 本地界面
|
||||||
|
├── wu-lazy-cloud-heartbeat-dns (DNS模块)
|
||||||
|
│ └── DNS解析功能
|
||||||
|
├── wu-lazy-cloud-heartbeat-protocol-proxy (代理协议)
|
||||||
|
│ ├── HTTP代理
|
||||||
|
│ └── SOCKS代理
|
||||||
|
└── wu-lazy-cloud-heartbeat-start (启动模块)
|
||||||
|
├── wu-lazy-cloud-heartbeat-server-start
|
||||||
|
├── wu-lazy-cloud-heartbeat-client-start
|
||||||
|
└── wu-lazy-cloud-heartbeat-server-cluster-start
|
||||||
|
```
|
||||||
|
|
||||||
|
### 模块功能说明
|
||||||
|
|
||||||
|
#### 1. wu-lazy-cloud-heartbeat-common
|
||||||
|
**功能**: 公共基础模块
|
||||||
|
- **接口定义**: 定义系统核心接口
|
||||||
|
- **枚举常量**: 系统常量定义
|
||||||
|
- **适配器**: 协议适配器
|
||||||
|
- **工具类**: 通用工具方法
|
||||||
|
|
||||||
|
**核心类**:
|
||||||
|
- `NettyMsg`: 网络消息基类
|
||||||
|
- `ChannelContext`: 通道上下文
|
||||||
|
- `NettyTransferChannelContext`: 传输通道上下文
|
||||||
|
|
||||||
|
#### 2. wu-lazy-cloud-heartbeat-server
|
||||||
|
**功能**: 服务端核心模块
|
||||||
|
- **网络服务**: 提供 TCP/UDP 服务
|
||||||
|
- **客户端管理**: 管理连接的客户端
|
||||||
|
- **端口映射**: 处理端口映射逻辑
|
||||||
|
- **流量监控**: 监控网络流量
|
||||||
|
|
||||||
|
**核心类**:
|
||||||
|
- `NettyTcpServerSocketApplicationListener`: TCP服务监听器
|
||||||
|
- `LazyServerPermeateServerMappingApplication`: 服务端渗透应用
|
||||||
|
- `NettyServerVirtualRouteApplication`: 虚拟路由应用
|
||||||
|
|
||||||
|
#### 3. wu-lazy-cloud-heartbeat-client
|
||||||
|
**功能**: 客户端核心模块
|
||||||
|
- **连接管理**: 管理与服务端的连接
|
||||||
|
- **本地服务**: 提供本地服务接口
|
||||||
|
- **端口转发**: 处理端口转发逻辑
|
||||||
|
|
||||||
|
**核心类**:
|
||||||
|
- `NettyClientSocketApplicationListener`: 客户端连接监听器
|
||||||
|
- `LazyClientPermeateClientMappingApplication`: 客户端渗透应用
|
||||||
|
- `NettyClientVirtualRouteApplication`: 客户端虚拟路由
|
||||||
|
|
||||||
|
#### 4. wu-lazy-cloud-heartbeat-protocol-proxy
|
||||||
|
**功能**: 代理协议模块
|
||||||
|
- **HTTP代理**: HTTP/HTTPS 代理服务
|
||||||
|
- **SOCKS代理**: SOCKS4/SOCKS5 代理服务
|
||||||
|
- **协议处理**: 处理各种代理协议
|
||||||
|
|
||||||
|
**核心类**:
|
||||||
|
- `NettyHttpProxySocketApplicationListener`: HTTP代理监听器
|
||||||
|
- `NettySocketProxySocketApplicationListener`: SOCKS代理监听器
|
||||||
|
- `NettyTcpProxyFilter`: TCP代理过滤器
|
||||||
|
|
||||||
|
## 🔄 数据流架构
|
||||||
|
|
||||||
|
### 内网穿透数据流
|
||||||
|
|
||||||
|
```
|
||||||
|
访客请求 → 服务端 → 心跳通道 → 客户端 → 本地服务
|
||||||
|
↑ ↓
|
||||||
|
访客响应 ← 服务端 ← 心跳通道 ← 客户端 ← 本地服务
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 详细流程
|
||||||
|
|
||||||
|
1. **访客连接**
|
||||||
|
- 访客连接到服务端的访客端口
|
||||||
|
- 服务端创建访客通道
|
||||||
|
|
||||||
|
2. **数据转发**
|
||||||
|
- 服务端通过心跳通道将数据发送给客户端
|
||||||
|
- 客户端接收数据并转发给本地服务
|
||||||
|
|
||||||
|
3. **响应返回**
|
||||||
|
- 本地服务响应数据
|
||||||
|
- 客户端通过心跳通道返回给服务端
|
||||||
|
- 服务端通过访客通道返回给访客
|
||||||
|
|
||||||
|
### 代理数据流
|
||||||
|
|
||||||
|
```
|
||||||
|
客户端应用 → 代理客户端 → 心跳通道 → 代理服务端 → 目标服务器
|
||||||
|
↑ ↓
|
||||||
|
客户端应用 ← 代理客户端 ← 心跳通道 ← 代理服务端 ← 目标服务器
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 代理类型
|
||||||
|
|
||||||
|
1. **HTTP代理**
|
||||||
|
- 支持 HTTP/HTTPS 协议
|
||||||
|
- 可配置认证机制
|
||||||
|
- 支持流量监控
|
||||||
|
|
||||||
|
2. **SOCKS代理**
|
||||||
|
- 支持 SOCKS4/SOCKS5 协议
|
||||||
|
- 支持 TCP/UDP 代理
|
||||||
|
- 支持多种认证方式
|
||||||
|
|
||||||
|
## 🗄️ 数据库架构
|
||||||
|
|
||||||
|
### 数据库设计
|
||||||
|
|
||||||
|
#### 核心表结构
|
||||||
|
|
||||||
|
1. **客户端管理表**
|
||||||
|
```sql
|
||||||
|
-- 客户端信息表
|
||||||
|
CREATE TABLE lazy_netty_client (
|
||||||
|
id BIGINT PRIMARY KEY,
|
||||||
|
client_id VARCHAR(100),
|
||||||
|
client_name VARCHAR(200),
|
||||||
|
client_ip VARCHAR(50),
|
||||||
|
client_port INT,
|
||||||
|
is_deleted TINYINT,
|
||||||
|
create_time DATETIME,
|
||||||
|
update_time DATETIME
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **端口映射表**
|
||||||
|
```sql
|
||||||
|
-- 服务端渗透客户端映射表
|
||||||
|
CREATE TABLE lazy_server_permeate_client_mapping (
|
||||||
|
id BIGINT PRIMARY KEY,
|
||||||
|
client_id VARCHAR(100),
|
||||||
|
visitor_port INT,
|
||||||
|
real_host VARCHAR(100),
|
||||||
|
real_port INT,
|
||||||
|
is_deleted TINYINT,
|
||||||
|
create_time DATETIME,
|
||||||
|
update_time DATETIME
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **流量统计表**
|
||||||
|
```sql
|
||||||
|
-- 流量统计表
|
||||||
|
CREATE TABLE lazy_netty_flow_statistics (
|
||||||
|
id BIGINT PRIMARY KEY,
|
||||||
|
client_id VARCHAR(100),
|
||||||
|
port INT,
|
||||||
|
upload_bytes BIGINT,
|
||||||
|
download_bytes BIGINT,
|
||||||
|
create_time DATETIME
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
### 数据关系
|
||||||
|
|
||||||
|
```
|
||||||
|
客户端表 (lazy_netty_client)
|
||||||
|
↓ (1:N)
|
||||||
|
端口映射表 (lazy_server_permeate_client_mapping)
|
||||||
|
↓ (1:N)
|
||||||
|
流量统计表 (lazy_netty_flow_statistics)
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔧 配置架构
|
||||||
|
|
||||||
|
### 配置层次结构
|
||||||
|
|
||||||
|
```
|
||||||
|
application.yml (主配置)
|
||||||
|
├── spring.lazy.netty.server (服务端配置)
|
||||||
|
│ ├── mode: standalone/cluster
|
||||||
|
│ ├── node-id: 节点ID
|
||||||
|
│ ├── node-host: 节点主机
|
||||||
|
│ └── node-port: 节点端口
|
||||||
|
├── spring.lazy.netty.client (客户端配置)
|
||||||
|
│ ├── client-id: 客户端ID
|
||||||
|
│ ├── inet-host: 服务端地址
|
||||||
|
│ └── inet-port: 服务端端口
|
||||||
|
└── spring.lazy.netty.protocol.proxy (代理配置)
|
||||||
|
├── authentication: 认证开关
|
||||||
|
├── socket-protocol-proxy: SOCKS代理
|
||||||
|
└── http-protocol-proxy: HTTP代理
|
||||||
|
```
|
||||||
|
|
||||||
|
### 配置优先级
|
||||||
|
|
||||||
|
1. **环境变量**: 最高优先级
|
||||||
|
2. **命令行参数**: 次高优先级
|
||||||
|
3. **配置文件**: 默认优先级
|
||||||
|
4. **默认值**: 最低优先级
|
||||||
|
|
||||||
|
## 🔒 安全架构
|
||||||
|
|
||||||
|
### 认证机制
|
||||||
|
|
||||||
|
1. **Token认证**
|
||||||
|
- 基于 JWT 的 Token 认证
|
||||||
|
- 支持 Token 过期和刷新
|
||||||
|
- 可配置 Token 验证开关
|
||||||
|
|
||||||
|
2. **AppKey/AppSecret认证**
|
||||||
|
- 客户端和服务端之间的认证
|
||||||
|
- 支持动态密钥管理
|
||||||
|
- 防止未授权访问
|
||||||
|
|
||||||
|
3. **代理认证**
|
||||||
|
- HTTP代理认证
|
||||||
|
- SOCKS代理认证
|
||||||
|
- 支持用户名密码认证
|
||||||
|
|
||||||
|
### 网络安全
|
||||||
|
|
||||||
|
1. **SSL/TLS加密**
|
||||||
|
- 支持 HTTPS 访问管理界面
|
||||||
|
- 可配置 SSL 证书
|
||||||
|
- 支持强制 HTTPS 访问
|
||||||
|
|
||||||
|
2. **流量加密**
|
||||||
|
- 支持客户端与服务端之间的流量加密
|
||||||
|
- 可配置加密算法
|
||||||
|
- 防止数据泄露
|
||||||
|
|
||||||
|
3. **访问控制**
|
||||||
|
- 基于角色的访问控制 (RBAC)
|
||||||
|
- 支持细粒度权限控制
|
||||||
|
- 记录访问日志
|
||||||
|
|
||||||
|
## 📊 监控架构
|
||||||
|
|
||||||
|
### 监控指标
|
||||||
|
|
||||||
|
1. **系统监控**
|
||||||
|
- CPU 使用率
|
||||||
|
- 内存使用率
|
||||||
|
- 磁盘 I/O
|
||||||
|
- 网络 I/O
|
||||||
|
|
||||||
|
2. **应用监控**
|
||||||
|
- 连接数统计
|
||||||
|
- 流量统计
|
||||||
|
- 响应时间
|
||||||
|
- 错误率
|
||||||
|
|
||||||
|
3. **业务监控**
|
||||||
|
- 客户端在线状态
|
||||||
|
- 端口映射状态
|
||||||
|
- 代理连接状态
|
||||||
|
- 流量使用情况
|
||||||
|
|
||||||
|
### 监控数据流
|
||||||
|
|
||||||
|
```
|
||||||
|
应用指标 → 监控收集器 → 数据存储 → 监控界面
|
||||||
|
↑ ↓
|
||||||
|
告警规则 ← 告警引擎 ← 数据分析 ← 监控数据
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🚀 部署架构
|
||||||
|
|
||||||
|
### 单机部署
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────┐
|
||||||
|
│ 单机服务端 │
|
||||||
|
│ ┌─────────────────────────┐ │
|
||||||
|
│ │ Web UI (6001) │ │
|
||||||
|
│ │ TCP Server (7001) │ │
|
||||||
|
│ │ HTTP Proxy (8001) │ │
|
||||||
|
│ │ SOCKS Proxy (9001) │ │
|
||||||
|
│ └─────────────────────────┘ │
|
||||||
|
└─────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
### 集群部署
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────┐
|
||||||
|
│ 负载均衡器 │
|
||||||
|
│ ┌─────────┬─────────┬─────────┐ │
|
||||||
|
│ │ 节点1 │ 节点2 │ 节点3 │ │
|
||||||
|
│ │ 6001 │ 6001 │ 6001 │ │
|
||||||
|
│ │ 7001 │ 7001 │ 7001 │ │
|
||||||
|
│ └─────────┴─────────┴─────────┘ │
|
||||||
|
└─────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
### Docker部署
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────┐
|
||||||
|
│ Docker Host │
|
||||||
|
│ ┌─────────────────────────┐ │
|
||||||
|
│ │ wlcn-server │ │
|
||||||
|
│ │ (6001,7001,8001,9001)│ │
|
||||||
|
│ └─────────────────────────┘ │
|
||||||
|
│ ┌─────────────────────────┐ │
|
||||||
|
│ │ wlcn-client │ │
|
||||||
|
│ │ (6004,8002,9002) │ │
|
||||||
|
│ └─────────────────────────┘ │
|
||||||
|
└─────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔄 扩展架构
|
||||||
|
|
||||||
|
### 插件机制
|
||||||
|
|
||||||
|
1. **协议插件**
|
||||||
|
- 支持自定义协议扩展
|
||||||
|
- 插件热加载
|
||||||
|
- 协议版本兼容
|
||||||
|
|
||||||
|
2. **过滤器插件**
|
||||||
|
- 支持自定义过滤器
|
||||||
|
- 过滤器链式处理
|
||||||
|
- 动态过滤器配置
|
||||||
|
|
||||||
|
3. **监控插件**
|
||||||
|
- 支持自定义监控指标
|
||||||
|
- 监控数据导出
|
||||||
|
- 告警规则自定义
|
||||||
|
|
||||||
|
### API扩展
|
||||||
|
|
||||||
|
1. **RESTful API**
|
||||||
|
- 提供标准的 REST API
|
||||||
|
- 支持 JSON 数据格式
|
||||||
|
- 支持 API 版本控制
|
||||||
|
|
||||||
|
2. **WebSocket API**
|
||||||
|
- 实时数据推送
|
||||||
|
- 双向通信支持
|
||||||
|
- 连接状态管理
|
||||||
|
|
||||||
|
3. **gRPC API**
|
||||||
|
- 高性能 RPC 调用
|
||||||
|
- 支持流式传输
|
||||||
|
- 跨语言支持
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**版本**: 1.3.1-JDK24
|
||||||
|
**更新时间**: 2024年
|
||||||
|
**维护者**: 吴佳伟
|
||||||
357
项目总结.md
Normal file
357
项目总结.md
Normal file
@@ -0,0 +1,357 @@
|
|||||||
|
# Wu-Lazy-Cloud-Network 项目总结
|
||||||
|
|
||||||
|
## 📋 项目概述
|
||||||
|
|
||||||
|
**Wu-Lazy-Cloud-Network (WLCN)** 是一款基于 Spring Boot 3.5.0 和 JDK 24 开发的高性能网络穿透和代理工具。该项目采用模块化设计,支持多种网络协议,提供完整的内网穿透、网络代理、流量监控等功能。
|
||||||
|
|
||||||
|
## 🎯 项目特点
|
||||||
|
|
||||||
|
### 1. 高性能架构
|
||||||
|
- **基于 Netty**: 采用 Netty 异步非阻塞 I/O 框架,支持高并发连接
|
||||||
|
- **多协议支持**: 支持 TCP、HTTP、SOCKS 等多种协议
|
||||||
|
- **连接池管理**: 智能连接池,提高资源利用率
|
||||||
|
- **流量控制**: 内置流量控制机制,防止系统过载
|
||||||
|
|
||||||
|
### 2. 模块化设计
|
||||||
|
- **松耦合架构**: 各模块独立,便于维护和扩展
|
||||||
|
- **插件化支持**: 支持自定义协议和过滤器插件
|
||||||
|
- **配置灵活**: 支持多种配置方式,适应不同部署环境
|
||||||
|
|
||||||
|
### 3. 功能完整
|
||||||
|
- **内网穿透**: 支持多种穿透模式,满足不同场景需求
|
||||||
|
- **网络代理**: 提供 HTTP 和 SOCKS 代理服务
|
||||||
|
- **流量监控**: 实时监控网络流量,提供详细统计报表
|
||||||
|
- **路由管理**: 支持虚拟路由,实现灵活的网络配置
|
||||||
|
|
||||||
|
### 4. 安全可靠
|
||||||
|
- **多重认证**: 支持 Token、AppKey/AppSecret 等多种认证方式
|
||||||
|
- **流量加密**: 支持 SSL/TLS 加密传输
|
||||||
|
- **访问控制**: 基于角色的权限控制
|
||||||
|
- **审计日志**: 完整的操作日志记录
|
||||||
|
|
||||||
|
## 🔧 技术亮点
|
||||||
|
|
||||||
|
### 1. 网络通信架构
|
||||||
|
|
||||||
|
#### 心跳机制
|
||||||
|
```java
|
||||||
|
/**
|
||||||
|
* 客户端与服务端保持长连接的心跳机制
|
||||||
|
* 通过定时发送心跳包,检测连接状态
|
||||||
|
*/
|
||||||
|
public class HeartbeatManager {
|
||||||
|
private final ScheduledExecutorService scheduler;
|
||||||
|
private final Channel channel;
|
||||||
|
|
||||||
|
public void startHeartbeat() {
|
||||||
|
scheduler.scheduleAtFixedRate(() -> {
|
||||||
|
if (channel.isActive()) {
|
||||||
|
channel.writeAndFlush(createHeartbeatMessage());
|
||||||
|
}
|
||||||
|
}, 0, 30, TimeUnit.SECONDS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 通道管理
|
||||||
|
```java
|
||||||
|
/**
|
||||||
|
* 智能通道管理,支持多种通道类型
|
||||||
|
* 包括心跳通道、访客通道、真实通道等
|
||||||
|
*/
|
||||||
|
public class ChannelManager {
|
||||||
|
private final Map<String, ChannelContext> channelMap;
|
||||||
|
|
||||||
|
public void registerChannel(String id, ChannelContext context) {
|
||||||
|
channelMap.put(id, context);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ChannelContext getChannel(String id) {
|
||||||
|
return channelMap.get(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. 协议处理
|
||||||
|
|
||||||
|
#### 协议适配器
|
||||||
|
```java
|
||||||
|
/**
|
||||||
|
* 协议适配器,支持多种协议的统一处理
|
||||||
|
*/
|
||||||
|
public interface ProtocolAdapter {
|
||||||
|
void handle(Channel channel, Object message);
|
||||||
|
boolean supports(ProtocolType type);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class HttpProtocolAdapter implements ProtocolAdapter {
|
||||||
|
@Override
|
||||||
|
public void handle(Channel channel, Object message) {
|
||||||
|
// HTTP 协议处理逻辑
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean supports(ProtocolType type) {
|
||||||
|
return type == ProtocolType.HTTP;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 过滤器链
|
||||||
|
```java
|
||||||
|
/**
|
||||||
|
* 过滤器链,支持请求的链式处理
|
||||||
|
*/
|
||||||
|
public class FilterChain {
|
||||||
|
private final List<NettyFilter> filters;
|
||||||
|
|
||||||
|
public void doFilter(Channel channel, Object message) {
|
||||||
|
for (NettyFilter filter : filters) {
|
||||||
|
if (!filter.filter(channel, message)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. 数据持久化
|
||||||
|
|
||||||
|
#### Lazy ORM 集成
|
||||||
|
```java
|
||||||
|
/**
|
||||||
|
* 基于 Lazy ORM 的数据访问层
|
||||||
|
* 提供类型安全的数据库操作
|
||||||
|
*/
|
||||||
|
@Repository
|
||||||
|
public class ClientRepository {
|
||||||
|
|
||||||
|
public List<LazyNettyClient> findOnlineClients() {
|
||||||
|
return lazyLambdaStream.findList(LazyNettyClient.class)
|
||||||
|
.where(LazyNettyClient::getIsDeleted, false)
|
||||||
|
.where(LazyNettyClient::getIsOnline, true)
|
||||||
|
.getData();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 流量统计
|
||||||
|
```java
|
||||||
|
/**
|
||||||
|
* 实时流量统计,支持按客户端、端口等维度统计
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
public class FlowStatisticsService {
|
||||||
|
|
||||||
|
public void recordFlow(String clientId, int port, long uploadBytes, long downloadBytes) {
|
||||||
|
LazyNettyFlowStatistics statistics = new LazyNettyFlowStatistics();
|
||||||
|
statistics.setClientId(clientId);
|
||||||
|
statistics.setPort(port);
|
||||||
|
statistics.setUploadBytes(uploadBytes);
|
||||||
|
statistics.setDownloadBytes(downloadBytes);
|
||||||
|
statistics.setCreateTime(LocalDateTime.now());
|
||||||
|
|
||||||
|
lazyLambdaStream.save(statistics);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. 监控和告警
|
||||||
|
|
||||||
|
#### 实时监控
|
||||||
|
```java
|
||||||
|
/**
|
||||||
|
* 实时监控系统状态
|
||||||
|
* 包括连接数、流量、响应时间等指标
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
public class MonitoringService {
|
||||||
|
|
||||||
|
public void recordMetrics(String metricName, double value) {
|
||||||
|
// 记录监控指标
|
||||||
|
metricsRegistry.record(metricName, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void checkAlerts() {
|
||||||
|
// 检查告警条件
|
||||||
|
if (getConnectionCount() > maxConnections) {
|
||||||
|
alertService.sendAlert("连接数超限");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🚀 应用场景
|
||||||
|
|
||||||
|
### 1. 内网穿透
|
||||||
|
|
||||||
|
#### 远程办公
|
||||||
|
- **场景**: 员工在家访问公司内网资源
|
||||||
|
- **方案**: 通过服务端渗透客户端模式,将内网服务映射到公网
|
||||||
|
- **优势**: 安全可靠,支持多种协议
|
||||||
|
|
||||||
|
#### 开发调试
|
||||||
|
- **场景**: 开发人员需要远程调试内网服务
|
||||||
|
- **方案**: 使用客户端渗透服务端模式,实现远程端口映射
|
||||||
|
- **优势**: 配置简单,支持动态端口分配
|
||||||
|
|
||||||
|
### 2. 网络代理
|
||||||
|
|
||||||
|
#### 异地组网
|
||||||
|
- **场景**: 多个办公地点需要统一网络访问
|
||||||
|
- **方案**: 使用代理功能,实现异地网络互联
|
||||||
|
- **优势**: 支持 HTTP 和 SOCKS 代理,兼容性好
|
||||||
|
|
||||||
|
#### 网络加速
|
||||||
|
- **场景**: 需要优化网络访问速度
|
||||||
|
- **方案**: 通过代理服务器优化网络路径
|
||||||
|
- **优势**: 智能路由,自动选择最优路径
|
||||||
|
|
||||||
|
### 3. 流量监控
|
||||||
|
|
||||||
|
#### 网络审计
|
||||||
|
- **场景**: 需要监控网络使用情况
|
||||||
|
- **方案**: 利用内置流量监控功能
|
||||||
|
- **优势**: 实时监控,详细报表
|
||||||
|
|
||||||
|
#### 成本控制
|
||||||
|
- **场景**: 控制网络使用成本
|
||||||
|
- **方案**: 设置流量限制和告警
|
||||||
|
- **优势**: 精确控制,及时告警
|
||||||
|
|
||||||
|
## 📊 性能指标
|
||||||
|
|
||||||
|
### 1. 并发性能
|
||||||
|
- **最大连接数**: 10,000+ 并发连接
|
||||||
|
- **响应时间**: 平均 < 10ms
|
||||||
|
- **吞吐量**: 10,000+ 请求/秒
|
||||||
|
|
||||||
|
### 2. 资源使用
|
||||||
|
- **内存使用**: 512MB - 2GB (可配置)
|
||||||
|
- **CPU 使用**: 低负载,支持高并发
|
||||||
|
- **网络带宽**: 支持千兆网络
|
||||||
|
|
||||||
|
### 3. 可用性
|
||||||
|
- **系统稳定性**: 99.9% 可用性
|
||||||
|
- **故障恢复**: 自动故障转移
|
||||||
|
- **数据一致性**: 强一致性保证
|
||||||
|
|
||||||
|
## 🔄 版本演进
|
||||||
|
|
||||||
|
### 1.3.1-JDK24 (当前版本)
|
||||||
|
- **新增功能**: 代理流量监控
|
||||||
|
- **技术升级**: 升级到 JDK 24 和 Spring Boot 3.5.0
|
||||||
|
- **安全增强**: 添加 SOCKS 授权验证
|
||||||
|
|
||||||
|
### 1.3.1-JDK17
|
||||||
|
- **新增功能**: 代理流量监控
|
||||||
|
- **部署优化**: Docker 仓库上架
|
||||||
|
- **性能优化**: 优化网络传输性能
|
||||||
|
|
||||||
|
### 1.2.9-JDK17
|
||||||
|
- **安全增强**: 添加 AppKey/AppSecret 验证
|
||||||
|
- **功能优化**: 支持同一客户端 ID 多次注册
|
||||||
|
- **兼容性**: 大版本更新,协议不向下兼容
|
||||||
|
|
||||||
|
## 🛠️ 部署方案
|
||||||
|
|
||||||
|
### 1. 单机部署
|
||||||
|
- **适用场景**: 小规模使用,测试环境
|
||||||
|
- **部署方式**: Docker 或 JAR 包部署
|
||||||
|
- **资源配置**: 最小 1GB 内存
|
||||||
|
|
||||||
|
### 2. 集群部署
|
||||||
|
- **适用场景**: 大规模生产环境
|
||||||
|
- **部署方式**: 多节点集群部署
|
||||||
|
- **资源配置**: 每节点 2GB+ 内存
|
||||||
|
|
||||||
|
### 3. 云原生部署
|
||||||
|
- **适用场景**: 云环境部署
|
||||||
|
- **部署方式**: Kubernetes 部署
|
||||||
|
- **资源配置**: 弹性伸缩,按需分配
|
||||||
|
|
||||||
|
## 🔒 安全特性
|
||||||
|
|
||||||
|
### 1. 认证机制
|
||||||
|
- **Token 认证**: 基于 JWT 的 Token 认证
|
||||||
|
- **AppKey/AppSecret**: 客户端服务端认证
|
||||||
|
- **代理认证**: HTTP/SOCKS 代理认证
|
||||||
|
|
||||||
|
### 2. 网络安全
|
||||||
|
- **SSL/TLS 加密**: 支持 HTTPS 访问
|
||||||
|
- **流量加密**: 客户端服务端通信加密
|
||||||
|
- **防火墙友好**: 支持防火墙穿透
|
||||||
|
|
||||||
|
### 3. 数据安全
|
||||||
|
- **敏感信息加密**: 数据库敏感信息加密存储
|
||||||
|
- **访问日志**: 完整的操作审计日志
|
||||||
|
- **数据备份**: 支持配置数据备份
|
||||||
|
|
||||||
|
## 📈 未来规划
|
||||||
|
|
||||||
|
### 短期目标 (3-6个月)
|
||||||
|
- **性能优化**: 进一步提升并发性能
|
||||||
|
- **功能增强**: 添加更多协议支持
|
||||||
|
- **监控完善**: 增强监控和告警功能
|
||||||
|
|
||||||
|
### 中期目标 (6-12个月)
|
||||||
|
- **云原生**: 完善 Kubernetes 部署支持
|
||||||
|
- **API 网关**: 集成 API 网关功能
|
||||||
|
- **微服务**: 支持微服务架构
|
||||||
|
|
||||||
|
### 长期目标 (1-2年)
|
||||||
|
- **AI 集成**: 集成 AI 智能路由
|
||||||
|
- **边缘计算**: 支持边缘节点部署
|
||||||
|
- **生态建设**: 构建完整的生态系统
|
||||||
|
|
||||||
|
## 💡 技术贡献
|
||||||
|
|
||||||
|
### 1. 开源贡献
|
||||||
|
- **代码质量**: 遵循最佳实践,代码质量高
|
||||||
|
- **文档完善**: 提供详细的技术文档
|
||||||
|
- **社区活跃**: 积极参与开源社区
|
||||||
|
|
||||||
|
### 2. 技术创新
|
||||||
|
- **协议扩展**: 创新的协议扩展机制
|
||||||
|
- **架构设计**: 优秀的模块化架构设计
|
||||||
|
- **性能优化**: 高效的网络性能优化
|
||||||
|
|
||||||
|
### 3. 实用价值
|
||||||
|
- **解决痛点**: 解决内网穿透和网络代理的实际问题
|
||||||
|
- **易于使用**: 提供简单易用的 Web 界面
|
||||||
|
- **稳定可靠**: 经过生产环境验证
|
||||||
|
|
||||||
|
## 🎉 项目总结
|
||||||
|
|
||||||
|
Wu-Lazy-Cloud-Network 项目是一个技术先进、功能完整、实用价值高的网络工具。项目采用现代化的技术栈,具有良好的架构设计和代码质量,能够有效解决内网穿透、网络代理等实际问题。
|
||||||
|
|
||||||
|
### 项目优势
|
||||||
|
1. **技术先进**: 采用最新的 JDK 24 和 Spring Boot 3.5.0
|
||||||
|
2. **功能完整**: 提供内网穿透、代理、监控等完整功能
|
||||||
|
3. **性能优秀**: 基于 Netty 的高性能网络框架
|
||||||
|
4. **易于使用**: 提供友好的 Web 管理界面
|
||||||
|
5. **安全可靠**: 多重安全机制,生产环境验证
|
||||||
|
|
||||||
|
### 应用价值
|
||||||
|
1. **远程办公**: 支持安全的远程办公解决方案
|
||||||
|
2. **开发调试**: 提供便捷的远程开发调试工具
|
||||||
|
3. **网络优化**: 实现网络加速和优化
|
||||||
|
4. **监控审计**: 提供完整的网络监控和审计功能
|
||||||
|
|
||||||
|
### 发展前景
|
||||||
|
项目具有良好的发展前景,随着远程办公和云原生技术的普及,内网穿透和网络代理的需求将持续增长。项目将继续完善功能,提升性能,为用户提供更好的服务。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**项目地址**:
|
||||||
|
- [Gitee](https://gitee.com/wujiawei1207537021/wu-lazy-cloud-network)
|
||||||
|
- [GitHub](https://github.com/wujiawei1207537021/wu-lazy-cloud-network)
|
||||||
|
|
||||||
|
**联系方式**:
|
||||||
|
- **作者**: 吴佳伟 (Jia Wei Wu)
|
||||||
|
- **邮箱**: 1207537021@qq.com
|
||||||
|
|
||||||
|
**版本**: 1.3.1-JDK24
|
||||||
|
**更新时间**: 2024年
|
||||||
|
**维护者**: 吴佳伟
|
||||||
452
项目说明文档.md
Normal file
452
项目说明文档.md
Normal file
@@ -0,0 +1,452 @@
|
|||||||
|
# Wu-Lazy-Cloud-Network 项目说明文档
|
||||||
|
|
||||||
|
## 📋 项目概述
|
||||||
|
|
||||||
|
**Wu-Lazy-Cloud-Network (WLCN)** 是一款基于 Spring Boot 3.5.0 和 JDK 24 开发的网络穿透、渗透工具,支持 TCP、HTTP、SOCKS 协议。该项目是 [wu-framework-parent](https://gitee.com/wujiawei1207537021/wu-framework-parent) 框架孵化的网络解决方案。
|
||||||
|
|
||||||
|
### 🎯 主要功能
|
||||||
|
|
||||||
|
- **内网穿透**:将局域网服务映射到公网,实现远程访问
|
||||||
|
- **网络代理**:支持 HTTP 和 SOCKS 代理,实现异地组网
|
||||||
|
- **流量监控**:实时监控网络流量使用情况
|
||||||
|
- **多协议支持**:支持 TCP、HTTP、SOCKS 等多种协议
|
||||||
|
- **集群部署**:支持单机版和集群模式部署
|
||||||
|
|
||||||
|
## 🏗️ 系统架构
|
||||||
|
|
||||||
|
### 核心模块
|
||||||
|
|
||||||
|
| 模块 | 版本 | 描述 | 端口 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| `wu-lazy-cloud-heartbeat-common` | 1.3.1-JDK24 | 公共模块(接口、枚举、常量、适配器) | - |
|
||||||
|
| `wu-lazy-cloud-heartbeat-server` | 1.3.1-JDK24 | 服务端核心组件 | 6001(Web), 7001(TCP) |
|
||||||
|
| `wu-lazy-cloud-heartbeat-client` | 1.3.1-JDK24 | 客户端核心组件 | 6004(Web) |
|
||||||
|
| `wu-lazy-cloud-heartbeat-dns` | 1.3.1-JDK24 | DNS 解析模块 | - |
|
||||||
|
| `wu-lazy-cloud-heartbeat-protocol-proxy` | 1.3.1-JDK24 | 代理协议模块 | 8001(HTTP), 9001(SOCKS) |
|
||||||
|
|
||||||
|
### 启动模块
|
||||||
|
|
||||||
|
| 模块 | 版本 | 描述 | 用途 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| `wu-lazy-cloud-heartbeat-server-start` | 1.3.1-JDK24 | 服务端启动模块 | 生产部署 |
|
||||||
|
| `wu-lazy-cloud-heartbeat-client-start` | 1.3.1-JDK24 | 客户端启动模块 | 生产部署 |
|
||||||
|
| `wu-lazy-cloud-heartbeat-server-cluster-start` | 1.3.1-JDK24 | 集群服务端启动模块 | 集群部署 |
|
||||||
|
|
||||||
|
## 🔧 技术栈
|
||||||
|
|
||||||
|
### 核心框架
|
||||||
|
- **Spring Boot**: 3.5.3
|
||||||
|
- **JDK**: 24
|
||||||
|
- **Netty**: 网络通信框架
|
||||||
|
- **Lazy ORM**: 数据库操作框架
|
||||||
|
|
||||||
|
### 数据库
|
||||||
|
- **MySQL**: 8.0.33
|
||||||
|
- **H2**: 开发环境数据库
|
||||||
|
|
||||||
|
### 其他依赖
|
||||||
|
- **Lombok**: 代码生成
|
||||||
|
- **MapStruct**: 对象映射
|
||||||
|
- **wu-framework-web**: Web 容器
|
||||||
|
- **wu-authorization-server-platform-starter**: 用户授权体系
|
||||||
|
|
||||||
|
## 🚀 快速开始
|
||||||
|
|
||||||
|
### 环境要求
|
||||||
|
|
||||||
|
- **操作系统**: Windows、Mac、Linux
|
||||||
|
- **Java**: JDK 13+ (推荐 JDK 24)
|
||||||
|
- **内存**: 最小 512MB,推荐 1GB+
|
||||||
|
- **网络**: 需要公网 IP(服务端)
|
||||||
|
|
||||||
|
### Docker 部署
|
||||||
|
|
||||||
|
#### 1. 启动服务端
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -d -it -p 6001:6001 -p 7001:7001 -p 8001:8001 -p 9001:9001 \
|
||||||
|
--name wlcn-server \
|
||||||
|
registry.cn-hangzhou.aliyuncs.com/wu-lazy/wu-lazy-cloud-heartbeat-server:1.3.1-JDK24
|
||||||
|
```
|
||||||
|
|
||||||
|
**端口说明**:
|
||||||
|
- `6001`: Web 管理界面
|
||||||
|
- `7001`: TCP 连接端口
|
||||||
|
- `8001`: HTTP 代理端口
|
||||||
|
- `9001`: SOCKS 代理端口
|
||||||
|
|
||||||
|
#### 2. 启动客户端
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -d -it --privileged -p 6004:6004 \
|
||||||
|
--name wlcn-client \
|
||||||
|
--restart=always \
|
||||||
|
-e spring.lazy.netty.client.inet-host=YOUR_SERVER_IP \
|
||||||
|
-e spring.lazy.netty.client.inet-port=7001 \
|
||||||
|
-e spring.lazy.netty.client.client-id="your-client-id" \
|
||||||
|
registry.cn-hangzhou.aliyuncs.com/wu-lazy/wu-lazy-cloud-heartbeat-client-start:1.3.1-JDK24
|
||||||
|
```
|
||||||
|
|
||||||
|
**环境变量说明**:
|
||||||
|
- `spring.lazy.netty.client.inet-host`: 服务端 IP 地址
|
||||||
|
- `spring.lazy.netty.client.inet-port`: 服务端 TCP 端口
|
||||||
|
- `spring.lazy.netty.client.client-id`: 客户端唯一标识
|
||||||
|
|
||||||
|
### 源码部署
|
||||||
|
|
||||||
|
#### 1. 克隆项目
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://gitee.com/wujiawei1207537021/wu-lazy-cloud-network.git
|
||||||
|
cd wu-lazy-cloud-network
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2. 编译项目
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mvn clean package -DskipTests
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 3. 启动服务端
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-server-start
|
||||||
|
java -jar target/wu-lazy-cloud-heartbeat-server-start-1.3.1-JDK24.jar
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 4. 启动客户端
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-client-start
|
||||||
|
java -jar target/wu-lazy-cloud-heartbeat-client-start-1.3.1-JDK24.jar
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📖 使用指南
|
||||||
|
|
||||||
|
### Web 管理界面
|
||||||
|
|
||||||
|
#### 1. 访问管理界面
|
||||||
|
|
||||||
|
- **服务端**: http://127.0.0.1:6001/netty-server-ui/index.html
|
||||||
|
- **客户端**: http://127.0.0.1:6004/netty-client-local-ui/index.html
|
||||||
|
|
||||||
|
#### 2. 初始配置
|
||||||
|
|
||||||
|
1. **登录系统**
|
||||||
|
- 默认账号: `admin`
|
||||||
|
- 默认密码: `admin`
|
||||||
|
|
||||||
|
2. **初始化项目**
|
||||||
|
- 添加角色
|
||||||
|
- 为用户授权
|
||||||
|
- 配置客户端映射
|
||||||
|
|
||||||
|
### 内网穿透配置
|
||||||
|
|
||||||
|
#### 服务端渗透客户端(内网穿透)
|
||||||
|
|
||||||
|
1. **配置端口池**
|
||||||
|
- 在服务端管理界面配置需要开放的端口
|
||||||
|
|
||||||
|
2. **配置客户端映射**
|
||||||
|
- 设置访客端口与客户端真实端口的映射关系
|
||||||
|
- 例如:访客端口 19080 → 客户端本地端口 18080
|
||||||
|
|
||||||
|
#### 客户端渗透服务端
|
||||||
|
|
||||||
|
1. **配置客户端端口池**
|
||||||
|
- 在客户端管理界面配置本地端口池
|
||||||
|
|
||||||
|
2. **配置渗透映射**
|
||||||
|
- 设置本地端口到远程端口的映射关系
|
||||||
|
|
||||||
|
### 代理功能使用
|
||||||
|
|
||||||
|
#### HTTP 代理
|
||||||
|
|
||||||
|
1. **获取代理信息**
|
||||||
|
- 服务端: `127.0.0.1:8001`
|
||||||
|
- 客户端: `127.0.0.1:8002`
|
||||||
|
|
||||||
|
2. **配置代理**
|
||||||
|
- 在系统设置中配置 HTTP 代理
|
||||||
|
- 或使用第三方代理软件
|
||||||
|
|
||||||
|
#### SOCKS 代理
|
||||||
|
|
||||||
|
1. **获取代理信息**
|
||||||
|
- 服务端: `127.0.0.1:9001`
|
||||||
|
- 客户端: `127.0.0.1:9002`
|
||||||
|
|
||||||
|
2. **使用代理软件**
|
||||||
|
- 推荐使用 Proxifier 等专业代理软件
|
||||||
|
- 支持全局代理和应用程序代理
|
||||||
|
|
||||||
|
### 路由管理
|
||||||
|
|
||||||
|
#### 虚拟路由
|
||||||
|
|
||||||
|
1. **创建虚拟 IP**
|
||||||
|
- 在路由管理界面创建虚拟 IP 地址
|
||||||
|
- 配置代理目标 IP 和端口
|
||||||
|
|
||||||
|
2. **应用路由规则**
|
||||||
|
- 系统会自动将虚拟 IP 的流量代理到目标地址
|
||||||
|
|
||||||
|
## 🔍 功能详解
|
||||||
|
|
||||||
|
### 网络穿透模式
|
||||||
|
|
||||||
|
#### 1. 服务端渗透客户端
|
||||||
|
- **用途**: 将内网服务暴露到公网
|
||||||
|
- **场景**: 远程访问内网 Web 服务、数据库等
|
||||||
|
- **配置**: 在服务端配置访客端口与客户端端口的映射
|
||||||
|
|
||||||
|
#### 2. 服务端渗透服务端
|
||||||
|
- **用途**: 同局域网内端口映射
|
||||||
|
- **场景**: 在同一网络环境下的服务间通信
|
||||||
|
- **配置**: 配置服务端端口池和映射关系
|
||||||
|
|
||||||
|
#### 3. 客户端渗透服务端
|
||||||
|
- **用途**: 本地端口映射到远程服务端端口
|
||||||
|
- **场景**: 访问远程服务器上的服务
|
||||||
|
- **配置**: 在客户端配置本地端口到远程端口的映射
|
||||||
|
|
||||||
|
#### 4. 客户端渗透客户端
|
||||||
|
- **用途**: 不同网络间的端口映射
|
||||||
|
- **场景**: 异地组网,跨网络访问
|
||||||
|
- **配置**: 配置两个客户端之间的端口映射
|
||||||
|
|
||||||
|
### 代理功能
|
||||||
|
|
||||||
|
#### HTTP 代理
|
||||||
|
- 支持 HTTP/HTTPS 协议代理
|
||||||
|
- 可配置代理认证
|
||||||
|
- 支持流量监控
|
||||||
|
|
||||||
|
#### SOCKS 代理
|
||||||
|
- 支持 SOCKS4/SOCKS5 协议
|
||||||
|
- 支持 TCP/UDP 代理
|
||||||
|
- 可配置认证机制
|
||||||
|
|
||||||
|
### 流量监控
|
||||||
|
|
||||||
|
#### 实时监控
|
||||||
|
- 监控每个客户端的流量使用情况
|
||||||
|
- 支持按端口统计流量
|
||||||
|
- 提供流量趋势图表
|
||||||
|
|
||||||
|
#### 报表功能
|
||||||
|
- 日流量统计报表
|
||||||
|
- 客户端流量排行
|
||||||
|
- 端口使用情况分析
|
||||||
|
|
||||||
|
## ⚙️ 配置说明
|
||||||
|
|
||||||
|
### 服务端配置
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
spring:
|
||||||
|
lazy:
|
||||||
|
netty:
|
||||||
|
server:
|
||||||
|
mode: standalone # 模式:standalone/cluster
|
||||||
|
node-id: default # 节点ID
|
||||||
|
node-host: 127.0.0.1 # 节点主机
|
||||||
|
node-port: 7001 # 节点端口
|
||||||
|
enable-flow-control: true # 启用流量控制
|
||||||
|
enable-token-verification: false # 启用Token验证
|
||||||
|
tcp:
|
||||||
|
port: 7001 # TCP端口
|
||||||
|
udp:
|
||||||
|
port: 7001 # UDP端口
|
||||||
|
```
|
||||||
|
|
||||||
|
### 客户端配置
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
spring:
|
||||||
|
lazy:
|
||||||
|
netty:
|
||||||
|
client:
|
||||||
|
client-id: your-client-id # 客户端ID
|
||||||
|
inet-host: 127.0.0.1 # 服务端地址
|
||||||
|
inet-port: 7001 # 服务端端口
|
||||||
|
enable: true # 启用客户端连接
|
||||||
|
```
|
||||||
|
|
||||||
|
### 代理配置
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
spring:
|
||||||
|
lazy:
|
||||||
|
netty:
|
||||||
|
protocol:
|
||||||
|
proxy:
|
||||||
|
authentication: true # 启用代理认证
|
||||||
|
enable-proxy-log: false # 启用代理日志
|
||||||
|
socket-protocol-proxy:
|
||||||
|
port: 9001 # SOCKS代理端口
|
||||||
|
http-protocol-proxy:
|
||||||
|
port: 8001 # HTTP代理端口
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔧 开发指南
|
||||||
|
|
||||||
|
### 项目结构
|
||||||
|
|
||||||
|
```
|
||||||
|
wu-lazy-cloud-network/
|
||||||
|
├── wu-lazy-cloud-heartbeat-common/ # 公共模块
|
||||||
|
├── wu-lazy-cloud-heartbeat-server/ # 服务端核心
|
||||||
|
├── wu-lazy-cloud-heartbeat-client/ # 客户端核心
|
||||||
|
├── wu-lazy-cloud-heartbeat-dns/ # DNS模块
|
||||||
|
├── wu-lazy-cloud-heartbeat-protocol-proxy/ # 代理协议模块
|
||||||
|
└── wu-lazy-cloud-heartbeat-start/ # 启动模块
|
||||||
|
├── wu-lazy-cloud-heartbeat-server-start/ # 服务端启动
|
||||||
|
├── wu-lazy-cloud-heartbeat-client-start/ # 客户端启动
|
||||||
|
└── wu-lazy-cloud-heartbeat-server-cluster-start/ # 集群启动
|
||||||
|
```
|
||||||
|
|
||||||
|
### 核心概念
|
||||||
|
|
||||||
|
#### 1. 通道(Channel)
|
||||||
|
- **心跳通道**: 客户端与服务端建立的持久连接
|
||||||
|
- **访客通道**: 外部访问者建立的连接
|
||||||
|
- **真实通道**: 客户端本地服务的连接
|
||||||
|
|
||||||
|
#### 2. 渗透(Permeate)
|
||||||
|
- **服务端渗透**: 由服务端发起的网络穿透
|
||||||
|
- **客户端渗透**: 由客户端发起的网络穿透
|
||||||
|
|
||||||
|
#### 3. 代理(Proxy)
|
||||||
|
- **HTTP代理**: 基于HTTP协议的代理服务
|
||||||
|
- **SOCKS代理**: 基于SOCKS协议的代理服务
|
||||||
|
|
||||||
|
### 扩展开发
|
||||||
|
|
||||||
|
#### 自定义协议
|
||||||
|
1. 实现 `NettyMsg` 接口
|
||||||
|
2. 注册到协议处理器
|
||||||
|
3. 配置协议路由
|
||||||
|
|
||||||
|
#### 自定义过滤器
|
||||||
|
1. 继承 `NettyFilter` 接口
|
||||||
|
2. 实现过滤逻辑
|
||||||
|
3. 注册到过滤器链
|
||||||
|
|
||||||
|
## 🐛 故障排除
|
||||||
|
|
||||||
|
### 常见问题
|
||||||
|
|
||||||
|
#### 1. 客户端连接失败
|
||||||
|
- **检查网络**: 确保客户端能访问服务端
|
||||||
|
- **检查端口**: 确认服务端端口已开放
|
||||||
|
- **检查配置**: 验证客户端配置参数
|
||||||
|
|
||||||
|
#### 2. 内网穿透不工作
|
||||||
|
- **检查映射**: 确认端口映射配置正确
|
||||||
|
- **检查服务**: 确认目标服务正在运行
|
||||||
|
- **检查防火墙**: 确认防火墙规则允许
|
||||||
|
|
||||||
|
#### 3. 代理连接失败
|
||||||
|
- **检查代理配置**: 确认代理地址和端口正确
|
||||||
|
- **检查认证**: 确认代理认证信息正确
|
||||||
|
- **检查网络**: 确认网络连接正常
|
||||||
|
|
||||||
|
### 日志分析
|
||||||
|
|
||||||
|
#### 服务端日志
|
||||||
|
```bash
|
||||||
|
# 查看服务端日志
|
||||||
|
docker logs wlcn-server
|
||||||
|
|
||||||
|
# 查看详细日志
|
||||||
|
docker logs wlcn-server --tail 100 -f
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 客户端日志
|
||||||
|
```bash
|
||||||
|
# 查看客户端日志
|
||||||
|
docker logs wlcn-client
|
||||||
|
|
||||||
|
# 查看详细日志
|
||||||
|
docker logs wlcn-client --tail 100 -f
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📈 性能优化
|
||||||
|
|
||||||
|
### 系统调优
|
||||||
|
|
||||||
|
#### 1. 网络缓冲区优化
|
||||||
|
```bash
|
||||||
|
# Linux系统
|
||||||
|
sudo sysctl -w net.core.rmem_default=4194304
|
||||||
|
sudo sysctl -w net.core.rmem_max=4194304
|
||||||
|
sudo sysctl -w net.core.wmem_default=4194304
|
||||||
|
sudo sysctl -w net.core.wmem_max=4194304
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2. JVM 参数优化
|
||||||
|
```bash
|
||||||
|
# 生产环境推荐配置
|
||||||
|
-Xms2g -Xmx4g -XX:+UseG1GC -XX:MaxGCPauseMillis=200
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 3. 连接池优化
|
||||||
|
- 调整 Netty 连接池大小
|
||||||
|
- 优化线程池配置
|
||||||
|
- 调整缓冲区大小
|
||||||
|
|
||||||
|
### 监控指标
|
||||||
|
|
||||||
|
#### 1. 系统监控
|
||||||
|
- CPU 使用率
|
||||||
|
- 内存使用率
|
||||||
|
- 网络 I/O
|
||||||
|
|
||||||
|
#### 2. 应用监控
|
||||||
|
- 连接数
|
||||||
|
- 流量统计
|
||||||
|
- 响应时间
|
||||||
|
|
||||||
|
## 🔒 安全说明
|
||||||
|
|
||||||
|
### 认证机制
|
||||||
|
- 支持 Token 认证
|
||||||
|
- 支持 AppKey/AppSecret 认证
|
||||||
|
- 支持代理认证
|
||||||
|
|
||||||
|
### 网络安全
|
||||||
|
- 支持 SSL/TLS 加密
|
||||||
|
- 支持流量加密传输
|
||||||
|
- 支持访问控制
|
||||||
|
|
||||||
|
### 数据安全
|
||||||
|
- 敏感信息加密存储
|
||||||
|
- 支持数据备份
|
||||||
|
- 支持审计日志
|
||||||
|
|
||||||
|
## 📞 技术支持
|
||||||
|
|
||||||
|
### 联系方式
|
||||||
|
- **作者**: 吴佳伟 (Jia Wei Wu)
|
||||||
|
- **邮箱**: 1207537021@qq.com
|
||||||
|
- **项目地址**:
|
||||||
|
- [Gitee](https://gitee.com/wujiawei1207537021/wu-lazy-cloud-network)
|
||||||
|
- [GitHub](https://github.com/wujiawei1207537021/wu-lazy-cloud-network)
|
||||||
|
|
||||||
|
### 社区支持
|
||||||
|
- **Issues**: 通过 Git 平台提交问题
|
||||||
|
- **讨论**: 参与项目讨论
|
||||||
|
- **贡献**: 欢迎提交 Pull Request
|
||||||
|
|
||||||
|
## 📄 许可证
|
||||||
|
|
||||||
|
本项目采用 [Apache License 2.0](LICENSE) 许可证。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**版本**: 1.3.1-JDK24
|
||||||
|
**更新时间**: 2024年
|
||||||
|
**维护者**: 吴佳伟
|
||||||
Reference in New Issue
Block a user