业务流程图

一、系统总体架构

① 用户侧(内网)

用户电脑/NAS/工控内网服务 127.0.0.1:3389 等
定制客户端(Python外壳)Windows服务·开机自启·内含frpc
frpc 进程由客户端拉起,用户不可见ini
↓ HTTPS API(拉配置 / 心跳 / 日志) ↓ frp 协议(token 鉴权 · 流量转发)

② 业务侧(PHP + MySQL)& 中转侧(frps 集群)

PHP 业务后台会员/隧道/端口池/计费/管控
MySQL 数据库6张核心表+端口池+流量
→ 下发配置 →
frps 节点①allow_ports 白名单
frps 节点②负载均衡分散带宽
Nginx 网关HTTP(S)域名路由·SSL卸载
↓ 公网IP:远程端口 访问

③ 外网访问者

外网用户浏览器/远程桌面访问 节点IP:6000 → 转发回用户内网

二、开通隧道流程

1.注册账号
2.开通会员月卡/季卡/年卡
3.创建隧道填本地IP端口
4.后台事务分配选节点→端口池取空闲端口→生成独立token
5.下载客户端填入 client_key

三、客户端运行时流程(每30秒循环)

POST /api/configclient_key 鉴权
后台校验会员过期/封禁→disabled
返回 frpc.ini 全文节点IP+节点token+远程端口
配置版本变化?是→重写ini重启frpc
否→保持运行
POST /api/heartbeat在线状态/流量
frpc 异常退出 → 自动重启(指数退避);断线 → frp 自动重连

四、到期 / 封禁 / 异常管控流程

会员到期
config API 返回 disabled
客户端停止 frpc
隧道离线+告警
违规/滥用
管理员一键禁用/封禁
status=0 下发即断隧
操作日志留痕
单日流量超阈值
traffic_spike 告警
人工核查后切断

五、第三方系统对接(开放API)

第三方平台app_key+签名鉴权
/api/openapi.php
开通/关闭/启用/查询隧道
客户端30秒内自动生效
关键设计说明:frps 开源版的 token 是节点级([common] token),不支持每隧道独立 frp 协议 token; 商业方案的"每用户独立 token"= 设备 client_key(API 鉴权)+ 隧道业务 token(标识/第三方对接), 节点 token 由定制客户端保管、用户接触不到 ini;端口抢占由 frps allow_ports 白名单 + 后台端口池事务分配双重杜绝;frp 原生不统计流量,流量数据由 frps dashboard 轮询与客户端上报双通道聚合。