mirror of
https://gitee.com/wujiawei1207537021/wu-lazy-cloud-network.git
synced 2026-02-04 06:55:52 +08:00
414 lines
13 KiB
Markdown
414 lines
13 KiB
Markdown
# 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年
|
|
**维护者**: 吴佳伟 |