# 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 connect(coreos/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 check(tcp/http,失败剔除) | ❌ | 未建模 HealthCheckConfig | ### 2.5 域名与路由(http/https) | 能力 | 状态 | 说明 | |---|---|---| | customDomains 多域名 | 🟡 | 可输出,但画布 local 无域名字段(写死 name.local) | | subdomain | 🟡 | render 支持生成,但依赖服务器 subdomain_host(演示环境未启用) | | locations(路径路由) | ❌ | 未建模 | | httpHeader 改写 / hostHeaderRewrite | ❌ | 未建模 | | basicAuth(站点访问认证) | ❌ | 未建模 | ### 2.6 插件(plugin)与虚拟 IP | 能力 | 状态 | 说明 | |---|---|---| | client plugin(http2https/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 采用「折叠高级区」或「按类型动态显示字段」,保持画布简洁。