logo
0
0
WeChat Login
cuijixiong<cuijixiong@gmail.com>
添加项目说明

muxProxy

一个基于 Go 语言开发的多功能代理服务工具,支持 WebSocket、SOCKS5 等协议,适用于网络流量转发与多路复用场景。

功能特点

  • 支持多种协议代理:
    • WebSocket (ws/wss)
    • 多路复用 WebSocket (mws/mwss)
    • SOCKS5 代理
  • 连接多路复用,提升性能
  • 可配置化运行
  • 支持日志轮转和结构化日志输出
  • 轻量级设计,适合高并发小包场景

项目结构

. ├── configPkg/ # 配置处理包 ├── copyPkg/ # 数据拷贝包 ├── proxyPkg/ # 代理核心逻辑包 ├── config.json # 主配置文件 ├── logconfig1.yaml # 日志配置文件 ├── main.go # 程序入口 └── *.test.go # 测试文件

编译与运行

编译

go build -o muxProxy main.go

运行

# 使用默认配置运行 ./muxProxy # 指定配置运行 ./muxProxy -config="mws://0.0.0.0:1081/ws" # 或者直接传入参数 ./muxProxy "mws://0.0.0.0:1081/ws"

配置参数

程序支持以下协议类型:

  • ws - WebSocket 代理
  • wss - 安全 WebSocket 代理
  • mws - 多路复用 WebSocket 代理
  • mwss - 安全多路复用 WebSocket 代理

配置格式: {协议}://{监听地址}:{端口}/{认证路径}

示例:

  • mws://0.0.0.0:1081/ws - 在 1081 端口启动多路复用 WebSocket 服务,路径为 /ws
  • wss://0.0.0.0:1082/secure - 在 1082 端口启动安全 WebSocket 服务,路径为 /secure

工作原理

muxProxy 通过以下方式工作:

  1. 启动指定协议的服务器(WebSocket/WebSocket Secure)
  2. 接收客户端连接并解析代理头部信息
  3. 根据头部信息连接目标服务器
  4. 在客户端和目标服务器之间转发数据

对于多路复用协议(mws/mwss),多个连接可以共享一个底层连接,提高连接效率和资源利用率。

logconfig1.yaml

日志配置文件,支持按级别分类记录日志并自动轮转。

依赖库

  • github.com/gorilla/websocket - WebSocket 协议支持
  • github.com/txthinking/socks5 - SOCKS5 代理实现
  • golang.org/x/net/proxy - 底层网络代理支持
  • github.com/xtaci/smux - 连接多路复用
  • gopkg.in/natefinch/lumberjack.v2 - 日志文件切割
  • github.com/rs/zerolog - 结构化日志输出
  • cnb.cool/accbot/goTool - 工具类库

注意事项

  1. 确保防火墙开放相应端口
  2. 日志目录需要可写权限
  3. 使用 wss/mwss 时需要证书文件(cert.pem 和 key.pem)
  4. 高并发场景建议使用 mws/mwss 协议以充分利用多路复用特性