Files
webui4frpc/FRPC_FEATURES_AUDIT.md
jianf c1936887a2 webui4frpc: 独立可用的可视化 frpc 控制器 (M0)
- 零 frp 源码依赖,单二进制 (Go + Vue3 + VueFlow + Element Plus)
- 画布多对多连线,渲染 tcp/udp/http/https frpc 配置
- worker 进程管理:自愈、日志轮转、崩溃退避重启
- frpc 一键安装 (GitHub Releases) + 手动指定路径
- 三页 UI:状态(默认)/连接配置/设置
- 状态页实时节点/转发状态,节点可增删改启停
- 画布冲突检查:端口/域名冲突标红 + 弹窗拦截保存
- backend 单测覆盖 store/render/process/httpapi/install
- plan.md + FRPC_FEATURES_AUDIT.md 文档
2026-08-17 11:00:26 +08:00

110 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# webui4frpc 对 frpc 高级功能支持审查报告
> 审查基准frp v0.71 的 frpc 配置能力(官方文档支持的 proxy 类型、认证、传输、插件等)。
> 审查范围:当前 webui4frpc 的画布数据模型Local/Remote/Link、渲染器internal/render能表达和输出什么。
## 一、总体结论
当前实现聚焦「最小可用」:**TCP/HTTP 单端口转发 + token 认证** 已打通并验证(多个远程节点、多对多连线、真实连通)。但 frpc 的**大部分高级能力尚未建模**,且**已有能力因模型缺字段而不可配置**。适合作为 1.0 基线,但要覆盖更广使用场景需系统性扩展。
## 二、能力支持矩阵
### 2.1 代理类型proxy type
| 类型 | 状态 | 说明 |
|---|---|---|
| tcp | ✅ | 完整支持LocalIP/LocalPort/RemotePort |
| udp | 🟡 部分 | 渲染支持但协处理器KCP/加密等)未建模 |
| http | 🟡 部分 | 支持 customDomains 默认域名,但无法配置 locations/headers/负载均衡 |
| https | 🟡 部分 | 同 http未建模证书/SNI |
| stcp | ❌ | 加密点对点穿透完全不支持 |
| sudp | ❌ | 同 stcp |
| xtcp | ❌ | P2P TCP 模拟(依赖 kcp-go不支持 |
| tcpmux | ❌ | HTTP/2 多路复用multiplexer/http2不支持 |
### 2.2 认证auth
| 能力 | 状态 | 说明 |
|---|---|---|
| 服务端 token | ✅ | Remote 有 Token 字段 |
| OIDC | ❌ | frpc 支持 openid connectcoreos/go-oidc未建模 |
| TLS 客户端证书 | ❌ | 未建模 |
### 2.3 传输transport
| 能力 | 状态 | 说明 |
|---|---|---|
| tcp / kcp / websocket / quic | 🟡 | Remote 无 protocol 字段,无法选择 |
| 加密 / 压缩useEncryption/useCompression | ❌ | 未建模 |
| 带宽限制bandwidthLimit | ❌ | 未建模 |
| 连接池poolCount | ❌ | 未建模 |
| TLS 传输transport.tls.enable | ❌ | 未建模 |
| Connect Server 超时/重连 | ❌ | 未建模(有默认值) |
### 2.4 负载均衡与健康检查
| 能力 | 状态 | 说明 |
|---|---|---|
| 多个 local 提供同一组group/loadBalancer | ❌ | 未建模 group/groupKey |
| health checktcp/http失败剔除 | ❌ | 未建模 HealthCheckConfig |
### 2.5 域名与路由http/https
| 能力 | 状态 | 说明 |
|---|---|---|
| customDomains 多域名 | 🟡 | 可输出,但画布 local 无域名字段(写死 name.local |
| subdomain | 🟡 | render 支持生成,但依赖服务器 subdomain_host演示环境未启用 |
| locations路径路由 | ❌ | 未建模 |
| httpHeader 改写 / hostHeaderRewrite | ❌ | 未建模 |
| basicAuth站点访问认证 | ❌ | 未建模 |
### 2.6 插件plugin与虚拟 IP
| 能力 | 状态 | 说明 |
|---|---|---|
| client pluginhttp2https/static/server 等) | ❌ | 未建模
| vmnet虚拟 IP | ❌ | 未建模 |
### 2.7 其它
| 能力 | 状态 | 说明 |
|---|---|---|
| 元数据 metadatas / annotations | ❌ | Remote 有 URL 但无 metadatas |
| start (enabled 控制) | ✅ | Remote 有 Enabled |
| 全局配置byteLimit 等) | ❌ | 未建模 |
## 三、具体缺口细节
1. **Local/Remote 模型过简**Local 只有 name/ip/port/protocol缺 encryption/compression/bandwidth/plugin/metadatas/域名/路径/健康检查等。Remote 缺 protocol(kcp/quic/ws)、tls、oidc、pool 等。
2. **渲染器只输出 6 个字段**`brpcProxy` 仅 name/type/localIP/localPort/remotePort/customDomains/subdomain。**transport 段只有空 protocol**frpc 其它传输参数全部缺失。
3. **画布节点编辑只暴露 ip/port/协议**:连已有的 token/url 也只在部分入口可编辑,更别说高级字段。
4. **udp 渲染无 UDPPacketSize 等**、**https 无证书流程**。
## 四、用户实际会遇到的典型场景覆盖
| 场景 | 现状 |
|---|---|
| 内网 Web 服务对外http+tcp | ✅ 覆盖 |
| 普通 TCP 服务(数据库/SSH/自建协议) | ✅ 覆盖 |
| 加密内网通信stcp/sudp | ❌ 若用户需要点对点加密穿透则无法完成 |
| 多域名多路径挂多个站点到一台 frps | 🟡 部分(域名选择没做) |
| 限速 / 压缩 / 加密传输 | ❌ |
| 负载均衡 / 健康检查 | ❌ |
| kcp/quic 弱网优化 | ❌ |
## 五、优先级建议
| 优先级 | 项 | 理由 |
|---|---|---|
| P0 | 画布冲突检查(本次已实现) | 防止重复 remotePort / 域名重复导致配置直接失败 |
| P0 | Local 增加「连接参数」高级区encryption / compression / bandwidthLimit / poolCount / metadatas | 高频项,改动小(渲染器 + 表单) |
| P1 | Remote 增加 transport 选择protocol(tcp/quic/kcp/websocket) 、tls.enable、poolCount | 让 kcp/quic/web 场景可用 |
| P1 | local http/https 增加域名字段customDomains/subdomain 可编辑)+ locations | 覆盖多站点部署 |
| P2 | 健康检查 / 负载均衡group | 中频 |
| P2 | 插件 stub / 虚拟 IP | 低频,且 UI 复杂 |
| P3 | OIDC / TLS 证书 / 高级插件 | 低频,可延后 |
## 六、结论
webui4frpc 已具备**生产可用的核心**tcp/http 多节点多对多转发 + 状态页 + worker 管理),且面向「避免运维手写配置」的目标价值明确。但要覆盖 frpc 完整能力需分阶段补齐:**先做 P0冲突检查已做+ P0 高级传输参数建模**,再逐级推进,避免一上来堆字段导致画布复杂化。建议 UI 采用「折叠高级区」或「按类型动态显示字段」,保持画布简洁。