logo
0
0
WeChat Login
docs: 简化并重构 README 文档结构

端口转发工具 (Port Forwarder)

一个企业级高性能端口转发工具,支持 TCP 和 UDP 协议,具备完整的流量控制、安全检查、监控功能和 Web 管理界面。

主要特性

1. 协议支持

  • TCP 转发(支持 TCP/TCP4/TCP6)
  • UDP 转发(支持 UDP/UDP4/UDP6)
  • 多目标负载均衡转发
  • 高性能协程池处理

2. 安全特性

  • IP 访问控制
    • 支持白名单模式
    • 支持黑名单模式
    • 本地回环地址自动允许
  • 认证系统
    • 密码 Argon2id 哈希存储
    • 令牌自动过期清理
    • 认证审计日志
    • 配置文件权限检查
  • 流量控制
    • 入站/出站流量限速
    • 全局和单端口流量限制
    • 基于令牌桶算法的限速实现
  • DDoS 防护
    • 连接数限制
    • 请求速率限制
    • IP 封禁机制
  • 连接保护
    • 全局最大连接数限制(默认 1024)
    • 单端口最大连接数限制(默认 256)
    • 异常连接自动清理(30s 超时)

3. 监控功能

  • 流量统计
    • 实时入站/出站流量
    • 流量速率监控
    • 数据包统计
  • 连接监控
    • 当前活跃连接数
    • TCP/UDP 会话状态
    • 连接建立/断开事件
  • 性能指标
    • 处理延迟统计
    • 缓冲区使用情况
    • 协程数量监控

4. Web 管理界面

  • 可视化配置:直观的转发规则配置
  • 实时监控:流量统计、连接状态监控
  • API 接口:完整的 RESTful API
  • 配置持久化:自动保存和加载配置
  • 状态管理:启用/禁用转发器

技术架构

项目结构

. ├── api_constants.go # API 常量定义 ├── base.go # 基础代理类型定义 ├── config/ # 配置管理 ├── docs/ # 项目文档 ├── examples/ # 使用示例 ├── handlers/ # HTTP 处理器 ├── internal/ # 内部实现 │ ├── auth/ # 认证管理 │ ├── buffer/ # 缓冲池管理 │ ├── concurrency/ # 并发优化组件 │ ├── constants/ # 常量定义 │ ├── core/ # 核心管理器 │ ├── metrics/ # 指标统计 │ ├── netutil/ # 网络工具 │ ├── pool/ # UDP 工作池 │ ├── security/ # 安全组件 │ ├── tls/ # TLS 管理 │ ├── types/ # 类型定义 │ └── workerpool/ # 工作协程池 ├── manager.go # 代理管理器 ├── relay_options.go # 规则选项工具 ├── service.go # 高层服务 API ├── tcp*.go # TCP 代理实现 ├── udp*.go # UDP 代理实现 └── limiter.go # 流量限制器

核心组件

  1. Service:高层服务 API,推荐使用
  2. Manager:底层代理管理器
  3. TCPProxy:TCP 代理实现
  4. UDPProxy:UDP 代理实现
  5. AuthManager:认证管理器
  6. RateLimiter:流量限制器

快速开始

安装

go get github.com/darkit/forwarder

推荐 API

  • 推荐入口Service + TCP/UDP + WithXxx
  • 高级入口ManagerCreateProxyOptionsCreateTCPProxyCreateUDPProxy

1. 基本使用

package main import ( "log" "github.com/darkit/forwarder" ) func main() { service := forwarder.NewService() proxy, err := service.OpenTCP( "0.0.0.0:8080", "192.168.1.100:80", forwarder.WithDescription("web ingress"), forwarder.WithRateLimit(2048), ) if err != nil { log.Fatal(err) } defer service.Close() log.Printf("forwarder ready: %s", proxy.GetKey()) }

2. 高性能 UDP 转发

service := forwarder.NewService() proxy, err := service.OpenUDP( "0.0.0.0:53", "8.8.8.8:53", forwarder.WithUDPPerformance(true), forwarder.WithUDPPacketSize(4096), forwarder.WithMaxUDPReadTargetRoutines(2048), ) if err != nil { log.Fatal(err) } defer service.Close()

3. Web 管理界面

# 启动 WebUI(默认仅绑定 127.0.0.1:715) export FORWARDER_MANAGER_USERNAME=admin export FORWARDER_MANAGER_PASSWORD='change-me-before-production' go run ./examples/manager # 访问管理界面 open http://127.0.0.1:715

4. API 接口使用

# 创建转发器 curl -X POST http://127.0.0.1:715/api/v1/forwarders \ -u admin:change-me-before-production \ -H "Content-Type: application/json" \ -d '{"type":"tcp","localAddr":"127.0.0.1:8080","remoteAddr":"192.168.1.100:80"}' # 获取转发器列表 curl -u admin:change-me-before-production http://127.0.0.1:715/api/v1/forwarders # 更新流量限制 curl -X PUT http://127.0.0.1:715/api/v1/forwarders/tcp/123/ratelimit \ -u admin:change-me-before-production \ -H "Content-Type: application/json" \ -d '{"rateLimit":100}'

配置说明

全局配置

RelayRuleOptions{ // UDP 配置 UDPPackageSize: 65507, // UDP 包最大大小 UDPBufferSize: 4 * 1024 * 1024, // UDP 缓冲区大小(4MB) UDPQueueSize: 10000, // UDP 队列大小 UDPProxyPerformanceMode: true, // UDP 性能模式 // TCP 配置 SingleProxyMaxTCPConnections: 256, // 单端口最大 TCP 连接数 SingleProxyMaxUDPReadTargetDataRoutineCount: 256, // UDP 目标读取协程上限 // 安全配置 SafeMode: SafeModeNone, // 安全模式(none/white/black) // 流量控制 InRateLimit: 0, // 入站流量限制(0表示不限制) OutRateLimit: 0, // 出站流量限制(0表示不限制) }

性能指标

性能目标

  • 并发处理能力:>10,000连接
  • 平均响应时间:<10ms
  • 内存占用:每1000连接约50MB
  • 系统可用性:>99.9%

性能优化建议

  1. TCP 转发优化

    • 高流量场景自动启用 256KB 缓冲区
    • 启用 TCP_NODELAY 减少延迟
    • 设置合适的 KeepAlive 时间(默认 30s)
  2. UDP 转发优化

    • 高并发场景开启性能模式(WithUDPPerformance(true)
    • 按负载调整 WithUDPPacketSizeWithUDPBufferSizeWithUDPQueueSize
    • 极端场景再细调 WithMaxUDPReadTargetRoutines

安全注意事项

  1. 网络安全

    • 建议在公网环境启用 IP 白名单模式
    • 合理设置流量限制避免资源耗尽
    • 定期检查连接状态和资源使用
  2. 系统安全

    • 调整系统最大文件描述符限制
    • 优化网络相关内核参数
    • 合理设置全局最大连接数

测试

# 运行所有测试 go test ./... -v # 运行性能测试 go test ./... -bench=. -benchmem # 运行并发安全测试 go test ./internal/concurrency -v -race

文档

构建和部署

# 构建 make build # 运行测试 make test # Docker 部署 make docker-build make docker-run

许可证

MIT License - 详见 LICENSE 文件