# 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) 文件