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