技术架构

自研技术,从零构建

内网云的核心组件均为自主研发,从SSH协议栈到限速器,从协程池到集群管理,不依赖任何开源隧道方案。以下是完整的技术路线和方案。

Web 管理端 Django · Redis · PostgreSQL
RESTful API · 数据同步 · 部署指令
数据端 Go · ClickHouse
SSH 服务端 Go · 自研SSH
部署端 Go · Shell · MinIO
SSH -R 反向隧道 · 心跳轮询
nssh 客户端 Go · CLI · GUI · Docker
智能客户端 Go · 无人值守 · 自动更新

五端分离架构

管理端、服务端、数据端、部署端 + 客户端(Agent + nssh),各端独立,各司其职

Web 管理端

用户交互 · 业务管理
Python Django
Redis 认证 · 缓存
PostgreSQL 数据持久化
MinIO 文件存储
Agent API 设备管理 · 隧道自动分配

数据端

数据采集 · 分析处理
Go 独立数据服务
ClickHouse 时序数据分析
API 数据查询接口
Grafana 可视化监控
RESTful API · 数据同步

SSH 服务端

隧道核心 · 数据转发
Go 高并发原生支持
SSH 自研协议栈
Memberlist Gossip集群
Prometheus 指标监控

部署端

自动部署 · 版本管理
Go 部署端代理
Shell 自动安装脚本
MinIO 版本分发
心跳 状态上报 · 任务拉取
SSH -R 反向隧道 · 心跳轮询 · 隧道分配

智能客户端

无人值守 · 隧道自动调和
Go 常驻守护进程
心跳轮询 状态上报 · 任务拉取
调和 自动增删改隧道
自动更新 nssh + Agent 双重更新
多平台 systemd · launchd · Windows 服务
Docker 容器化部署

nssh 客户端

隧道建立 · 自动重连 · 多平台
Go 原生SSH库
CLI 命令行
Wails 桌面GUI
安装 pip · npm · 二进制
Docker 容器化部署
多平台 Linux · macOS · Windows · FreeBSD
NAS 群晖/威联通
Router OpenWrt/iKuai

SSH 服务端技术方案

Go语言实现,从协议层开始自研

核心数据流

SSH连接 SSH Server
认证 Redis Auth
协议处理 Protocol Handler
隧道创建 Tunnel Manager
端口监听 Port Binding
数据转发 Data Transfer

自研SSH协议栈

基于Go标准库进行深度定制,完整掌控SSH握手、密钥交换、认证、通道建立全流程。

SSH-2.0 协议 密码+密钥认证 反向隧道 自定义通道

自研协程池

自研协程管理机制,按任务类型划分独立工作池,资源精细管控。

独立工作池 阻塞提交 自动调度 资源隔离

自研QoS限速器

基于令牌桶算法,支持全局和隧道级带宽控制,零CPU空转。

令牌桶算法 全局+隧道级 精确阻塞等待 动态调整

并发控制与资源限制

多层并发控制,从单隧道到全局,每个层级都有明确的资源上限。

隧道级隔离 连接数限制 内存监控 Prometheus 指标

多进程与集群

多进程部署 + Gossip协议集群,横向扩展

多进程部署

同一台服务器启动多个进程,各监听不同端口,由上游负载均衡分发SSH连接。

根据服务器配置自动适配进程数量
多核性能充分利用
各进程独立运行互不干扰
支持横向扩展

Gossip集群

基于hashicorp/memberlist实现gossip协议,各进程间通过TCP通信同步状态。

用户上线/下线广播,跨节点踢掉同名用户
端口冲突检测,跨节点自动关闭旧隧道
AES加密通信,安全密钥配置
集群端口自动分配(SSH端口+5800偏移)

编译 · 部署 · 测试

从代码提交到服务上线,全流程自动化

代码提交
Git Push
自动测试
CI Pipeline
多平台编译
Cross-Platform
版本发布
Artifact Publish
一键部署
CD Pipeline

自动化测试

CI 单元测试 + 端到端冒烟测试 + 压力测试,多层覆盖保障质量。

单元测试 冒烟测试 压力测试 跨设备认证

多平台交叉编译

Go 交叉编译,一次构建覆盖全部目标平台,含 Docker 多架构镜像。

Linux amd64/arm64 macOS amd64/arm64 FreeBSD Docker multi-arch

自动部署

部署端通过心跳自动拉取任务,执行服务端部署,支持自动更新部署端自身。

心跳拉取 自动更新 配置下发

服务器节点

全部采用阿里云、腾讯云三线BGP服务器,保障全国低延迟接入

知名云服务商 阿里云 + 腾讯云
三线BGP 网络线路
< 50ms 全国平均延迟
99.9% 可用性保障

阿里云

主力节点,覆盖华北、华东、华南核心区域。三线BGP接入电信、联通、移动三大运营商,智能路由选择最优路径。

电信 联通 移动 BGP

腾讯云

补充节点,华南及港澳台方向优化。同样采用三线BGP,与阿里云节点互为冗余,提升整体可用性。

电信 联通 移动 BGP

三线BGP的优势

智能路由

自动选择最优运营商线路,无需用户手动切换

全网覆盖

电信、联通、移动用户均可获得低延迟体验

故障自愈

单线路故障时自动切换到其他可用线路

低延迟

全国主要城市平均延迟低于50ms

客户端技术方案

Go语言实现,支持多平台多形态,推荐「智能客户端 + nssh」组合

智能客户端

无人值守 · 自动管理

nssh 客户端

多平台 · 多安装方式

推荐组合:Web 端自动将隧道分配到 Agent 设备,Agent 自动调和 nssh 隧道,nssh 与 Agent 均支持自动更新。

nssh 客户端(开源版)

CLI

参数解析 · 命令分发

Unix Socket / Named Pipe

Daemon

守护进程 · Worker管理

子进程
Worker 1
Worker 2
Worker 3
·····
安装方式 pip npm Docker 多平台二进制

断线重连

网络中断后自动重连,守护进程持续管理连接状态。

心跳保活

定期发送心跳包检测连接状态,确保隧道持续可用。

双向转发

高效的数据双向传输,支持高并发连接转发。

多版本

标准版、NAS版、路由版、企业版,适配不同设备场景。

智能客户端(nssh-agent)

部署在局域网设备上的无人值守常驻程序,定期从 Web 管理端拉取分配给本设备的隧道,自动调和本地 nssh,全程无需人工登录设备。

Agent 自动化循环

心跳轮询 定期上报状态
隧道分配 Web 下发本设备子集
声明式调和 自动增删改隧道
nssh 更新 SHA256 校验替换
Agent 自更新 后台无缝替换

隧道自动分配

Web 端按设备分组分配隧道,心跳只拉取本设备子集,数据隔离。

自动管理 nssh

按期望状态自动增删改 nssh 隧道进程,配置变更自动生效。

自动更新

nssh 二进制与 Agent 自身均自动检测新版本,校验后无缝替换。

断网保护

拉取失败时保持最后已知状态,绝不因网络问题拆除隧道。

为什么选择这些技术

每一项技术选型都有明确的工程理由

为什么服务端用 Go?
Go原生goroutine模型天然适合高并发网络编程,单进程可管理数千并发连接,内存占用低(~140KB/worker),无需外部依赖的协程调度。
为什么不直接用 ssh -R?
原生ssh -R无法做到:认证鉴权、端口分配管理、限速控制、并发限制、断线重连、多进程集群、状态监控。内网云在原生SSH之上构建了完整的业务层。
为什么客户端也用 Go?
Go可交叉编译到所有平台(Linux/macOS/Windows/ARM),单二进制文件无依赖,UPX压缩后体积小,适合嵌入式设备(NAS/路由器)。
为什么用 Gossip 而不是Redis做集群通信?
Gossip协议去中心化,无单点故障,节点间直接TCP通信延迟低。用户上线/下线消息需要毫秒级同步到所有节点,Gossip比轮询Redis更实时。
为什么限速用 阻塞等待 而不是轮询?
传统10ms轮询在低流量时浪费CPU,且精度固定。阻塞消费(ConsumeBlocking)根据TokenBucket缺额精确计算等待时间,零CPU空转,精度到bit/s。

体验自研技术

注册免费试用,亲身感受自研技术带来的速度与稳定。

免费注册