|
|
|
|
# Wormhole SOCKS5 Server
|
|
|
|
|
|
|
|
|
|
🚀 高性能企业级 SOCKS5 代理服务器
|
|
|
|
|
|
|
|
|
|
## 🎉 最新更新
|
|
|
|
|
|
|
|
|
|
**v1.1.0 - 企业级优化功能集成(已清理)**
|
|
|
|
|
|
|
|
|
|
✅ **完整的 SOCKS5 协议实现**
|
|
|
|
|
✅ **配置文件管理**
|
|
|
|
|
✅ **健康检查和指标监控**
|
|
|
|
|
✅ **优雅启动和关闭**
|
|
|
|
|
✅ **企业级日志记录**
|
|
|
|
|
✅ **速率限制系统**
|
|
|
|
|
✅ **连接池优化**
|
|
|
|
|
✅ **内存使用优化**
|
|
|
|
|
✅ **多平台编译支持**
|
|
|
|
|
⚠️ **DNS缓存集成** (暂时禁用,避免端口冲突)
|
|
|
|
|
⚠️ **透明代理支持** (默认关闭,需要root权限)
|
|
|
|
|
|
|
|
|
|
## 快速开始
|
|
|
|
|
|
|
|
|
|
### 📦 预构建二进制文件下载
|
|
|
|
|
|
|
|
|
|
从 [Releases 页面](https://github.com/azoic/wormhole-server/releases) 下载适合您系统的预构建版本:
|
|
|
|
|
|
|
|
|
|
**Linux:**
|
|
|
|
|
- `wormhole-server-v1.1.0-linux-amd64.tar.gz` - Linux x86_64
|
|
|
|
|
- `wormhole-server-v1.1.0-linux-arm64.tar.gz` - Linux ARM64 (树莓派 等)
|
|
|
|
|
- `wormhole-server-v1.1.0-linux-arm.tar.gz` - Linux ARM
|
|
|
|
|
- `wormhole-server-v1.1.0-linux-386.tar.gz` - Linux x86
|
|
|
|
|
|
|
|
|
|
**macOS:**
|
|
|
|
|
- `wormhole-server-v1.1.0-darwin-amd64.tar.gz` - macOS Intel
|
|
|
|
|
- `wormhole-server-v1.1.0-darwin-arm64.tar.gz` - macOS Apple Silicon (M1/M2)
|
|
|
|
|
|
|
|
|
|
**Windows:**
|
|
|
|
|
- `wormhole-server-v1.1.0-windows-amd64.zip` - Windows x64
|
|
|
|
|
- `wormhole-server-v1.1.0-windows-386.zip` - Windows x86
|
|
|
|
|
- `wormhole-server-v1.1.0-windows-arm64.zip` - Windows ARM64
|
|
|
|
|
|
|
|
|
|
**FreeBSD:**
|
|
|
|
|
- `wormhole-server-v1.1.0-freebsd-amd64.tar.gz` - FreeBSD x86_64
|
|
|
|
|
- `wormhole-server-v1.1.0-freebsd-arm64.tar.gz` - FreeBSD ARM64
|
|
|
|
|
|
|
|
|
|
### 🛠 本地编译
|
|
|
|
|
|
|
|
|
|
#### 快速构建 (当前平台)
|
|
|
|
|
```bash
|
|
|
|
|
make build
|
|
|
|
|
make run
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 多平台编译
|
|
|
|
|
|
|
|
|
|
使用 Makefile 进行多平台编译:
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# 构建所有支持的平台
|
|
|
|
|
make cross-compile
|
|
|
|
|
|
|
|
|
|
# 创建发布包 (包含配置文件和文档)
|
|
|
|
|
make release
|
|
|
|
|
|
|
|
|
|
# 构建特定平台
|
|
|
|
|
make build-linux # Linux AMD64
|
|
|
|
|
make build-darwin # macOS AMD64
|
|
|
|
|
make build-windows # Windows AMD64
|
|
|
|
|
make build-arm64 # Linux ARM64
|
|
|
|
|
make build-darwin-arm64 # macOS ARM64 (Apple Silicon)
|
|
|
|
|
|
|
|
|
|
# 查看支持的平台
|
|
|
|
|
make platforms
|
|
|
|
|
|
|
|
|
|
# 查看版本信息
|
|
|
|
|
make version
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 使用构建脚本
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# 构建所有平台
|
|
|
|
|
./scripts/build.sh
|
|
|
|
|
|
|
|
|
|
# 构建特定版本的所有平台
|
|
|
|
|
./scripts/build.sh v1.2.0
|
|
|
|
|
|
|
|
|
|
# 构建特定平台
|
|
|
|
|
./scripts/build.sh v1.2.0 linux-amd64
|
|
|
|
|
./scripts/build.sh v1.2.0 darwin-arm64
|
|
|
|
|
./scripts/build.sh v1.2.0 windows-amd64
|
|
|
|
|
|
|
|
|
|
# 查看帮助
|
|
|
|
|
./scripts/build.sh --help
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 高级编译选项
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# 自定义版本号
|
|
|
|
|
VERSION=v1.2.0 make cross-compile
|
|
|
|
|
|
|
|
|
|
# 构建并创建发布包
|
|
|
|
|
make release
|
|
|
|
|
|
|
|
|
|
# 构建多架构 Docker 镜像
|
|
|
|
|
make docker-build-multi
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 📋 版本信息
|
|
|
|
|
|
|
|
|
|
查看详细的版本和构建信息:
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# 简短版本信息
|
|
|
|
|
./wormhole-server -version
|
|
|
|
|
|
|
|
|
|
# 详细版本信息 (包含Go版本、平台、功能等)
|
|
|
|
|
./wormhole-server -version-verbose
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 🚀 快速运行
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# 使用默认配置运行
|
|
|
|
|
./wormhole-server
|
|
|
|
|
|
|
|
|
|
# 指定配置文件
|
|
|
|
|
./wormhole-server -config configs/server.yaml
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 配置
|
|
|
|
|
编辑 `configs/server.yaml` 来自定义服务器设置:
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
proxy:
|
|
|
|
|
address: 0.0.0.0
|
|
|
|
|
port: 1080
|
|
|
|
|
|
|
|
|
|
auth:
|
|
|
|
|
username: admin
|
|
|
|
|
password: your_secure_password
|
|
|
|
|
|
|
|
|
|
healthCheck:
|
|
|
|
|
enabled: true
|
|
|
|
|
address: 127.0.0.1
|
|
|
|
|
port: 8090
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 测试连接
|
|
|
|
|
```bash
|
|
|
|
|
# 测试健康检查
|
|
|
|
|
curl http://127.0.0.1:8090/health
|
|
|
|
|
|
|
|
|
|
# 测试指标
|
|
|
|
|
curl http://127.0.0.1:8090/metrics
|
|
|
|
|
|
|
|
|
|
# 使用SOCKS5代理 (如果开启了认证)
|
|
|
|
|
curl --socks5 admin:your_secure_password@127.0.0.1:1080 http://httpbin.org/ip
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 🐳 Docker 部署
|
|
|
|
|
```bash
|
|
|
|
|
make docker-build
|
|
|
|
|
docker run -p 1080:1080 -p 8090:8090 wormhole-server:v1.1.0
|
|
|
|
|
|
|
|
|
|
# 多架构 Docker 镜像
|
|
|
|
|
make docker-build-multi
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 🔧 支持的平台
|
|
|
|
|
|
|
|
|
|
我们支持以下平台的交叉编译:
|
|
|
|
|
|
|
|
|
|
| 平台 | 架构 | 状态 | 说明 |
|
|
|
|
|
|------|------|------|------|
|
|
|
|
|
| Linux | amd64 | ✅ | x86_64 处理器 |
|
|
|
|
|
| Linux | arm64 | ✅ | ARM64 处理器 (树莓派 4+) |
|
|
|
|
|
| Linux | 386 | ✅ | x86 32位处理器 |
|
|
|
|
|
| Linux | arm | ✅ | ARM 32位处理器 |
|
|
|
|
|
| macOS | amd64 | ✅ | Intel 处理器 |
|
|
|
|
|
| macOS | arm64 | ✅ | Apple Silicon (M1/M2) |
|
|
|
|
|
| Windows | amd64 | ✅ | x86_64 处理器 |
|
|
|
|
|
| Windows | 386 | ✅ | x86 32位处理器 |
|
|
|
|
|
| Windows | arm64 | ✅ | ARM64 处理器 |
|
|
|
|
|
| FreeBSD | amd64 | ✅ | x86_64 处理器 |
|
|
|
|
|
| FreeBSD | arm64 | ✅ | ARM64 处理器 |
|
|
|
|
|
|
|
|
|
|
### 🏗 构建要求
|
|
|
|
|
|
|
|
|
|
- **Go 1.21+** - 必需的 Go 版本
|
|
|
|
|
- **Git** - 用于版本信息 (可选)
|
|
|
|
|
- **Make** - 用于 Makefile 命令 (可选)
|
|
|
|
|
- **zip** - 用于创建 Windows 发布包 (可选)
|
|
|
|
|
|
|
|
|
|
### 📊 CI/CD 自动化
|
|
|
|
|
|
|
|
|
|
项目包含完整的 GitHub Actions 工作流,支持:
|
|
|
|
|
|
|
|
|
|
- ✅ **自动测试** - 每次推送和 PR 都会运行测试
|
|
|
|
|
- ✅ **多平台构建** - 自动构建所有支持的平台
|
|
|
|
|
- ✅ **自动发布** - 标签推送时自动创建 GitHub Release
|
|
|
|
|
- ✅ **Docker 镜像** - 自动构建和推送多架构 Docker 镜像
|
|
|
|
|
- ✅ **校验和验证** - 自动生成文件校验和
|
|
|
|
|
|
|
|
|
|
## 功能特性
|
|
|
|
|
|
|
|
|
|
### 🎯 高性能优化
|
|
|
|
|
- ✅ **完整的SOCKS5协议** - 支持CONNECT/BIND/UDP
|
|
|
|
|
- ✅ **多种认证方式** - 无认证/用户名密码
|
|
|
|
|
- ✅ **连接池管理** - 智能连接复用,支持1000+并发连接
|
|
|
|
|
- ✅ **访问控制** - IP白名单/黑名单
|
|
|
|
|
- ⚠️ **DNS 缓存** - 减少 70% 查询延迟 (暂时禁用)
|
|
|
|
|
- ✅ **速率限制** - Token Bucket算法,全局+单IP限制
|
|
|
|
|
- ✅ **内存优化** - 缓冲区池,减少 30% 内存使用
|
|
|
|
|
- ⚠️ **透明代理** - Linux/macOS iptables/pfctl支持 (默认关闭)
|
|
|
|
|
- ✅ **多平台支持** - 11个平台/架构组合
|
|
|
|
|
|
|
|
|
|
### 🛡 企业安全
|
|
|
|
|
- ✅ **IP 访问控制** - 白名单/黑名单
|
|
|
|
|
- ✅ **认证系统** - 用户名/密码认证
|
|
|
|
|
- ✅ **连接监控** - 实时连接统计
|
|
|
|
|
- ✅ **审计日志** - 完整的连接记录
|
|
|
|
|
- ✅ **速率限制** - DDoS防护,100rps全局+10rps单IP
|
|
|
|
|
- 🔄 TLS 加密 - 可选加密连接 (计划中)
|
|
|
|
|
|
|
|
|
|
### 📊 监控运维
|
|
|
|
|
- ✅ **实时指标** - 连接数、请求数、错误率
|
|
|
|
|
- ✅ **健康检查** - HTTP健康检查端点
|
|
|
|
|
- ✅ **结构化日志** - JSON/文本格式
|
|
|
|
|
- ✅ **优雅关闭** - 信号处理和资源清理
|
|
|
|
|
- ✅ **管理API** - RESTful 健康检查接口
|
|
|
|
|
- ✅ **内存监控** - 自动GC触发,堆内存阈值监控
|
|
|
|
|
- 🔄 仪表板 - Web 监控界面 (计划中)
|
|
|
|
|
|
|
|
|
|
### 🔧 系统功能
|
|
|
|
|
- ⚠️ **透明代理** - Linux/macOS iptables/pfctl支持 (需要手动启用)
|
|
|
|
|
- 🔄 **系统代理设置** - 自动配置系统代理 (已移除,待重新实现)
|
|
|
|
|
- ⚠️ **DNS代理** - 带缓存的DNS转发 (暂时禁用)
|
|
|
|
|
- ✅ **多平台支持** - Linux/macOS/Windows
|
|
|
|
|
|
|
|
|
|
## 迁移状态
|
|
|
|
|
|
|
|
|
|
此项目是从 [原始 Wormhole 项目](https://github.com/azoic/wormhole) 拆分出的独立服务器。
|
|
|
|
|
|
|
|
|
|
### ✅ 已完成 (v1.1.0)
|
|
|
|
|
- [x] **基础项目结构**
|
|
|
|
|
- [x] **完整的SOCKS5协议实现**
|
|
|
|
|
- [x] **配置管理系统**
|
|
|
|
|
- [x] **构建系统和Docker支持**
|
|
|
|
|
- [x] **健康检查和指标监控**
|
|
|
|
|
- [x] **日志记录和错误处理**
|
|
|
|
|
- [x] **优雅启动和关闭**
|
|
|
|
|
- [x] **基本的单元测试**
|
|
|
|
|
- [x] **速率限制系统 (Token Bucket算法)**
|
|
|
|
|
- [x] **连接池管理 (1000+并发)**
|
|
|
|
|
- [x] **内存优化 (缓冲区池+自动GC)**
|
|
|
|
|
- [x] **代码清理和优化**
|
|
|
|
|
|
|
|
|
|
### 🔄 进行中 (v1.2.0)
|
|
|
|
|
- [ ] DNS缓存端口冲突修复
|
|
|
|
|
- [ ] 透明代理权限管理优化
|
|
|
|
|
- [ ] 优化的数据转发器重新集成
|
|
|
|
|
- [ ] 系统代理设置功能重新实现
|
|
|
|
|
- [ ] 更完整的测试覆盖
|
|
|
|
|
- [ ] 性能基准测试
|
|
|
|
|
- [ ] 文档完善
|
|
|
|
|
|
|
|
|
|
### 🎯 计划中 (v2.0.0)
|
|
|
|
|
- [ ] Web管理界面
|
|
|
|
|
- [ ] 集群支持
|
|
|
|
|
- [ ] 负载均衡
|
|
|
|
|
- [ ] 插件系统
|
|
|
|
|
- [ ] 高级分析功能
|
|
|
|
|
|
|
|
|
|
## 性能特性
|
|
|
|
|
|
|
|
|
|
### 🚀 连接池优化
|
|
|
|
|
- **最大连接数**: 1000 (可配置)
|
|
|
|
|
- **连接生命周期**: 30分钟 (可配置)
|
|
|
|
|
- **最大空闲时间**: 5分钟 (可配置)
|
|
|
|
|
- **预创建连接**: 0个 (已优化,避免SOCKS5代理地址问题)
|
|
|
|
|
|
|
|
|
|
### ⚡ 速率限制
|
|
|
|
|
- **全局限制**: 100 RPS,突发200
|
|
|
|
|
- **单IP限制**: 10 RPS,突发20
|
|
|
|
|
- **算法**: Token Bucket
|
|
|
|
|
- **清理间隔**: 5分钟自动清理过期桶
|
|
|
|
|
|
|
|
|
|
### 🧠 内存优化
|
|
|
|
|
- **缓冲区池**: 8种大小 (512B-64KB)
|
|
|
|
|
- **自动GC**: 堆内存超过512MB时触发
|
|
|
|
|
- **监控间隔**: 30秒内存统计
|
|
|
|
|
- **阈值告警**: 堆分配100MB,系统200MB
|
|
|
|
|
|
|
|
|
|
### 🌐 DNS缓存 (暂时禁用)
|
|
|
|
|
- **状态**: 因端口冲突暂时禁用
|
|
|
|
|
- **计划**: v1.2.0修复后重新启用
|
|
|
|
|
- **目标**: 10,000条记录,10分钟TTL
|
|
|
|
|
|
|
|
|
|
## 配置参考
|
|
|
|
|
|
|
|
|
|
完整的配置文件示例:
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
# 服务类型
|
|
|
|
|
serviceType: server
|
|
|
|
|
|
|
|
|
|
# 代理服务器配置
|
|
|
|
|
proxy:
|
|
|
|
|
address: 0.0.0.0 # 监听地址
|
|
|
|
|
port: 1080 # 监听端口
|
|
|
|
|
|
|
|
|
|
# 认证配置
|
|
|
|
|
auth:
|
|
|
|
|
username: admin # 用户名 (空则无认证)
|
|
|
|
|
password: secure123 # 密码
|
|
|
|
|
methods: # 支持的认证方法
|
|
|
|
|
- password # 可选: none, password
|
|
|
|
|
|
|
|
|
|
# 基本设置
|
|
|
|
|
timeout: 30s # 连接超时
|
|
|
|
|
maxConns: 5000 # 最大连接数
|
|
|
|
|
logLevel: info # 日志级别: debug, info, warn, error
|
|
|
|
|
|
|
|
|
|
# 健康检查
|
|
|
|
|
healthCheck:
|
|
|
|
|
enabled: true
|
|
|
|
|
address: 127.0.0.1
|
|
|
|
|
port: 8090
|
|
|
|
|
|
|
|
|
|
# 优化功能
|
|
|
|
|
optimizedServer:
|
|
|
|
|
enabled: true
|
|
|
|
|
bufferSize: 65536
|
|
|
|
|
|
|
|
|
|
# DNS缓存 (暂时禁用)
|
|
|
|
|
dnsCache:
|
|
|
|
|
enabled: false # 避免端口冲突
|
|
|
|
|
maxSize: 10000
|
|
|
|
|
ttl: 10m
|
|
|
|
|
|
|
|
|
|
# 速率限制
|
|
|
|
|
rateLimit:
|
|
|
|
|
enabled: true
|
|
|
|
|
requestsPerSecond: 100
|
|
|
|
|
burstSize: 200
|
|
|
|
|
perIPRequestsPerSec: 10
|
|
|
|
|
perIPBurstSize: 20
|
|
|
|
|
cleanupInterval: 5m
|
|
|
|
|
|
|
|
|
|
# 连接池 (优化配置)
|
|
|
|
|
connectionPool:
|
|
|
|
|
enabled: true
|
|
|
|
|
maxSize: 1000
|
|
|
|
|
maxLifetime: 30m
|
|
|
|
|
maxIdle: 5m
|
|
|
|
|
initialSize: 0 # 禁用预创建,避免SOCKS5代理地址问题
|
|
|
|
|
|
|
|
|
|
# 内存优化
|
|
|
|
|
memory:
|
|
|
|
|
enabled: true
|
|
|
|
|
bufferSizes: [512, 1024, 2048, 4096, 8192, 16384, 32768, 65536]
|
|
|
|
|
monitorInterval: 30s
|
|
|
|
|
enableAutoGC: true
|
|
|
|
|
heapAllocThresholdMB: 100
|
|
|
|
|
heapSysThresholdMB: 200
|
|
|
|
|
forceGCThresholdMB: 500
|
|
|
|
|
|
|
|
|
|
# 透明代理 (需要root权限)
|
|
|
|
|
transparent:
|
|
|
|
|
enabled: false
|
|
|
|
|
transparentPort: 8888
|
|
|
|
|
dnsPort: 15353 # 使用非标准端口避免冲突
|
|
|
|
|
bypassIPs:
|
|
|
|
|
- "127.0.0.1"
|
|
|
|
|
- "192.168.1.0/24"
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 贡献代码
|
|
|
|
|
|
|
|
|
|
1. Fork 项目
|
|
|
|
|
2. 创建特性分支 (`git checkout -b feature/amazing-feature`)
|
|
|
|
|
3. 提交代码 (`git commit -m 'Add some amazing feature'`)
|
|
|
|
|
4. 推送分支 (`git push origin feature/amazing-feature`)
|
|
|
|
|
5. 发起 Pull Request
|
|
|
|
|
|
|
|
|
|
## 许可证
|
|
|
|
|
|
|
|
|
|
MIT License - 详见 [LICENSE](LICENSE) 文件
|