AnywherePort 是一款基于 Go 语言开发的轻量级、高性能分布式端口转发工具。它采用 Master-Agent 架构,通过 WebSocket 建立稳定的控制双向通道,可轻松实现多节点流量转发与统一管理。
- 🚀 高性能转发: 基于 Go 原生网络库,支持 TCP 和 UDP 流量的高效转发。
- 🏗️ 分布式架构: 单个 Master 可管理多个 Agent 节点,支持跨网络环境部署。
- 📊 Web 管理面板: 提供友好的网页操作界面,实时查看节点状态并管理转发规则。
- 🛡️ 灵活认证: 内置安全认证机制,支持 Token 校验,确保 Master 与 Agent 之间的通信安全。
- 📦 零依赖部署: 静态资源全内置,二进制文件即下即用,无需额外安装运行环境。
AnywherePort 由两个核心组件组成:
- Master (控制端): 负责全局配置管理、Web UI 展示、API 接口提供以及与各 Agent 的协调通信。
- Agent (节点端): 部署在流量出入口,根据 Master 指令执行实际的端口监听与数据转发任务。
graph LR
User([用户/浏览器]) -- HTTP/WS --> Master[AnywherePort Master]
Master -- 控制通道 (WS) --> Agent1[Agent A]
Master -- 控制通道 (WS) --> Agent2[Agent B]
Inflow((外部流量)) -- TCP/UDP --> Agent1
Agent1 -- 转发 --> Target1[目标服务 A]
Inflow2((外部流量)) -- TCP/UDP --> Agent2
Agent2 -- 转发 --> Target2[目标服务 B]
subgraph Master Node
Master
end
subgraph Remote Agent A
Agent1
end
subgraph Remote Agent B
Agent2
end
本指南详细说明了 AnywherePort 的生产环境部署流程。
Master 负责 Web 管理界面、认证以及协调各 Agent 节点。
| 文件 | 说明 |
|---|---|
awport-master |
主程序二进制文件 (Windows 为 .exe) |
config.yml |
配置文件 (需与程序同级) |
注意: Web 静态资源已打包进二进制文件,无需额外部署其他目录。
# Web 管理面板监听地址
web_addr: ":9090"
# 外部可达地址 (需包含协议) - 用于自动生成 Agent 连接脚本
public_addr: "http://your-ip-or-domain:9090"
# 数据存储目录 (默认为 ./data)
data_dir: "./data"
# 管理员认证配置
auth:
username: "admin"
password: "YourStrongPassword" # 请务必修改默认密码Linux:
nohup ./awport-master > master.log 2>&1 &Windows:
.\awport-master.exeAgent 负责实际的流量转发,部署在目标机器上。
- 获取凭据: 登录 Master Web 界面 -> "节点管理" -> "添加节点" -> 获取
Agent ID和Token。 - 启动命令:
- Linux:
nohup ./awport-agent -master <MasterIP>:9090 -id <ID> -token <Token> > agent.log 2>&1 & - Windows:
.\awport-agent.exe -master <MasterIP>:9090 -id <ID> -token <Token>
- Linux:
提示: Master Web 界面在添加节点后会提供一键启动脚本(基于 curl 或 PowerShell),推荐直接复制执行。
如果你想自行编译或进行二次开发:
- 克隆仓库:
git clone https://github.com/frazy/anywhere-port.git - 安装依赖:
go mod tidy - 编译 Master:
go build -o awport-master ./cmd/master - 编译 Agent:
go build -o awport-agent ./cmd/agent
- 数据持久化: 数据保存在
data/目录,包括节点信息和统计数据。 - 防火墙: 确保开放了 Master 的 Web 端口(默认 9090)以及所需的转发端口。
- 通信协议: 内部采用 WebSocket,确保网络环境不阻断该协议。