logo
0
1
WeChat Login
feat: implement dynamic network routing and encrypted proxy tunneling

Node Relay (Dynamic Network & Terminal Proxy)

本项目是一个专门针对云端开发环境设计的动态网络中继与安全终端访问系统。通过动态端口映射与加密通信协议,实现本地机器与云端工作空间的高效、安全的数据连通。

系统架构与组件

本系统主要由三大组件构成,各司其职:

  1. Hub (服务发现中心)

    • 部署位置:Cloudflare Pages (Serverless) + KV
    • 作用:作为轻量级的服务注册与发现中心,记录动态分配的节点地址。它仅负责信令交换与状态展示,不承载任何实际的网络业务流量。
  2. Relay Node (云端中继节点)

    • 部署位置:云端容器内 (如 cnb.cool 开发环境)
    • 作用
      • 在容器内部启动监听,自动获取可用的公网访问 URI (如 VSCode Proxy URI) 并向 Hub 注册。
      • 提供一个基于 xterm.js 的原生 Web 终端面板,便于开发者直接通过浏览器进入容器进行运维。
      • 维护一条加密的多路复用网络通道 (基于 Yamux),用于接收本地客户端的连接。
  3. Access Node (本地访问端)

    • 部署位置:开发者的本地终端设备 (PC / 软路由等)
    • 作用
      • 自动从 Hub 获取当前存活云端节点的动态网络入口地址。
      • 建立到底层云端节点的加密 WebSocket 连接,并建立多路复用会话。
      • 在本地暴露标准的 SOCKS5 代理端口 (默认 127.0.0.1:1080),供本地应用透明访问云端内网服务。

部署教程

1. 部署 Hub 中心

  1. 在 Cloudflare 新建一个 KV 命名空间,命名为 NODE_KV
  2. 创建一个 Pages 项目,连接到您的仓库或上传 cf-hub 目录代码。
  3. 在 Pages 的 Settings -> Functions 中绑定 KV,变量名填写 NODE_KV
  4. Settings -> Environment variables 中配置通信密钥:
    • AUTH_SECRET = 您的自定义密钥

部署完成后,您即可通过分配的 pages.dev 域名查看当前活跃的云端节点大盘。

2. 启动 Relay 节点

项目自带了对应的集成脚本(如 .ide/code-server):

  1. 确保将脚本中的 HUB_URL 变量替换为您刚刚部署的 CF Pages 地址。
  2. 确保 AUTH_SECRET 与 Hub 保持一致。
  3. 启动节点后,它将自动监听 8686 (终端) 和 9090 (通道) 端口,并向 Hub 注册可用路由。

3. 连接 Access 节点

在您的本地电脑中,编译并启动客户端:

# 编译本地客户端
go build -o node-access ./cmd/access

# 启动网络通道
./node-access -hub "https://您的CF地址.pages.dev" -secret "您的自定义密钥" -local "127.0.0.1:1080"

(连接成功后,终端会提示 SOCKS5 服务已在本地运行。您可以直接使用该代理连接云端环境)

技术特性

  • 动态路由分配:所有的入口路径均由基于 secret 的哈希算法动态生成,避免静态路由特征,增强网络安全性。
  • 端到端加密:所有注册到 KV 的信令数据及实际传输的底层网络流均受 AES 算法保护,确保数据隐私。
  • 高可用保活:引入了双向 WebSocket 心跳机制,有效防止网关超时中断,确保长时间运行的网络隧道稳定性。