一个企业级高性能端口转发工具,支持 TCP 和 UDP 协议,具备完整的流量控制、安全检查、监控功能和 Web 管理界面。
. ├── 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 # 流量限制器
go get github.com/darkit/forwarder
Service + TCP/UDP + WithXxxManager、CreateProxyOptions、CreateTCPProxy、CreateUDPProxypackage 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())
}
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()
# 启动 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
# 创建转发器
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表示不限制)
}
TCP 转发优化
UDP 转发优化
WithUDPPerformance(true))WithUDPPacketSize、WithUDPBufferSize 与 WithUDPQueueSizeWithMaxUDPReadTargetRoutines网络安全
系统安全
# 运行所有测试
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 文件