You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
4 days ago | |
---|---|---|
.github/workflows | 4 days ago | |
cmd/wormhole-server | 4 days ago | |
configs | 4 days ago | |
internal/server | 4 days ago | |
pkg | 2 weeks ago | |
scripts | 4 days ago | |
.dockerignore | 4 days ago | |
.gitignore | 2 weeks ago | |
Dockerfile | 4 days ago | |
Makefile | 4 days ago | |
README.md | 4 days ago | |
go.mod | 2 weeks ago | |
go.sum | 2 weeks ago |
README.md
Wormhole SOCKS5 Server
🚀 高性能企业级 SOCKS5 代理服务器
🎉 最新更新
v1.1.0 - 企业级优化功能集成(已清理)
✅ 完整的 SOCKS5 协议实现
✅ 配置文件管理
✅ 健康检查和指标监控
✅ 优雅启动和关闭
✅ 企业级日志记录
✅ 速率限制系统
✅ 连接池优化
✅ 内存使用优化
✅ 多平台编译支持
⚠️ DNS缓存集成 (暂时禁用,避免端口冲突)
⚠️ 透明代理支持 (默认关闭,需要root权限)
快速开始
📦 预构建二进制文件下载
从 Releases 页面 下载适合您系统的预构建版本:
Linux:
wormhole-server-v1.1.0-linux-amd64.tar.gz
- Linux x86_64wormhole-server-v1.1.0-linux-arm64.tar.gz
- Linux ARM64 (树莓派 等)wormhole-server-v1.1.0-linux-arm.tar.gz
- Linux ARMwormhole-server-v1.1.0-linux-386.tar.gz
- Linux x86
macOS:
wormhole-server-v1.1.0-darwin-amd64.tar.gz
- macOS Intelwormhole-server-v1.1.0-darwin-arm64.tar.gz
- macOS Apple Silicon (M1/M2)
Windows:
wormhole-server-v1.1.0-windows-amd64.zip
- Windows x64wormhole-server-v1.1.0-windows-386.zip
- Windows x86wormhole-server-v1.1.0-windows-arm64.zip
- Windows ARM64
FreeBSD:
wormhole-server-v1.1.0-freebsd-amd64.tar.gz
- FreeBSD x86_64wormhole-server-v1.1.0-freebsd-arm64.tar.gz
- FreeBSD ARM64
🛠 本地编译
快速构建 (当前平台)
make build
make run
多平台编译
使用 Makefile 进行多平台编译:
# 构建所有支持的平台
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
使用构建脚本
# 构建所有平台
./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
高级编译选项
# 自定义版本号
VERSION=v1.2.0 make cross-compile
# 构建并创建发布包
make release
# 构建多架构 Docker 镜像
make docker-build-multi
📋 版本信息
查看详细的版本和构建信息:
# 简短版本信息
./wormhole-server -version
# 详细版本信息 (包含Go版本、平台、功能等)
./wormhole-server -version-verbose
🚀 快速运行
# 使用默认配置运行
./wormhole-server
# 指定配置文件
./wormhole-server -config configs/server.yaml
配置
编辑 configs/server.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
测试连接
# 测试健康检查
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 部署
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 项目 拆分出的独立服务器。
✅ 已完成 (v1.1.0)
- 基础项目结构
- 完整的SOCKS5协议实现
- 配置管理系统
- 构建系统和Docker支持
- 健康检查和指标监控
- 日志记录和错误处理
- 优雅启动和关闭
- 基本的单元测试
- 速率限制系统 (Token Bucket算法)
- 连接池管理 (1000+并发)
- 内存优化 (缓冲区池+自动GC)
- 代码清理和优化
🔄 进行中 (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
配置参考
完整的配置文件示例:
# 服务类型
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"
贡献代码
- Fork 项目
- 创建特性分支 (
git checkout -b feature/amazing-feature
) - 提交代码 (
git commit -m 'Add some amazing feature'
) - 推送分支 (
git push origin feature/amazing-feature
) - 发起 Pull Request
许可证
MIT License - 详见 LICENSE 文件