FRP 客户端
FRP(Fast Reverse Proxy)是一款高性能的反向代理工具,NetPanel 集成了 FRP 客户端(frpc),支持通过 FRP 服务端实现内网穿透。
技术原理
FRP 工作架构
FRP 采用客户端-服务端架构,需要一台具有公网 IP 的服务器运行 frps(服务端),内网设备运行 frpc(客户端):
内网设备(运行 frpc)
│
│ 1. frpc 主动连接 frps(控制通道)
▼
公网服务器(运行 frps)
│ 监听公网端口(如 6022)
│
│ 2. 外网用户访问公网端口
▼
外网用户
│
│ 3. frps 将流量通过控制通道转发给 frpc
▼
内网服务(如 SSH:22)核心优势:
- frpc 主动连接 frps,无需内网设备有公网 IP
- 支持多种代理类型,适应不同场景
- 支持加密和压缩,保证传输安全和效率
- 支持多路复用,减少连接建立开销
代理类型深度解析
| 类型 | 原理 | 适用场景 | 特点 |
|---|---|---|---|
tcp | 直接 TCP 端口映射 | SSH、数据库、任意 TCP 服务 | 最通用,一对一端口映射 |
udp | UDP 端口映射 | DNS、游戏、视频流 | 支持 UDP 协议 |
http | HTTP 反向代理,支持自定义域名 | Web 服务、API | 支持多域名共用 80 端口 |
https | HTTPS 反向代理 | 需要 SSL 的 Web 服务 | 支持 SNI 路由 |
stcp | 安全 TCP(访问端也需配置 frpc) | 点对点安全通信 | 不暴露公网端口,更安全 |
xtcp | P2P TCP 穿透(尝试直连) | 高性能点对点传输 | 延迟低,但需要 NAT 支持 |
功能概述
- 支持 TCP、UDP、HTTP、HTTPS、STCP、XTCP 等多种代理类型
- 每个 FRP 客户端实例可配置多个代理规则
- 支持连接到自建或第三方 FRP 服务端
- 实时显示连接状态和流量统计
配置说明
进入 FRP 客户端 页面,点击 新建 按钮:
服务端连接配置
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| 名称 | 字符串 | ✅ | — | 客户端实例名称 |
| 启用 | 布尔 | ✅ | true | 是否启用 |
| 服务端地址 | 字符串 | ✅ | — | FRP 服务端 IP 或域名 |
| 服务端端口 | 整数 | ✅ | 7000 | FRP 服务端监听端口 |
| Token | 字符串 | ❌ | — | 认证 Token,需与服务端一致 |
| 用户名 | 字符串 | ❌ | — | 用于区分不同客户端的前缀 |
代理规则配置
每个客户端实例可添加多条代理规则:
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| 代理名称 | 字符串 | ✅ | — | 代理规则名称(全局唯一) |
| 代理类型 | 枚举 | ✅ | tcp | 见上方代理类型说明 |
| 本地 IP | 字符串 | ✅ | 127.0.0.1 | 内网服务 IP |
| 本地端口 | 整数 | ✅ | — | 内网服务端口 |
| 远程端口 | 整数 | ❌ | — | 服务端映射端口(TCP/UDP 必填) |
| 自定义域名 | 字符串 | ❌ | — | HTTP/HTTPS 类型的访问域名 |
| 子域名 | 字符串 | ❌ | — | HTTP/HTTPS 类型的子域名 |
配置示例
示例 1:TCP 代理(SSH 穿透)
通过 FRP 将内网 SSH 服务暴露到公网:
服务端连接:
| 字段 | 值 |
|---|---|
| 名称 | 我的 FRP 客户端 |
| 服务端地址 | frp.example.com |
| 服务端端口 | 7000 |
| Token | your-secret-token |
代理规则:
| 字段 | 值 |
|---|---|
| 代理名称 | ssh |
| 代理类型 | tcp |
| 本地 IP | 127.0.0.1 |
| 本地端口 | 22 |
| 远程端口 | 6022 |
配置后,通过 frp.example.com:6022 即可访问内网 SSH。
示例 2:HTTP 代理(Web 服务)
将内网 Web 服务通过 HTTP 代理暴露,使用自定义域名访问:
代理规则:
| 字段 | 值 |
|---|---|
| 代理名称 | web |
| 代理类型 | http |
| 本地 IP | 127.0.0.1 |
| 本地端口 | 3000 |
| 自定义域名 | app.example.com |
配置后,通过 http://app.example.com 即可访问内网 Web 服务(需要 DNS 解析到 FRP 服务端 IP)。
示例 3:UDP 代理(DNS 服务)
将内网 DNS 服务暴露到公网:
代理规则:
| 字段 | 值 |
|---|---|
| 代理名称 | dns |
| 代理类型 | udp |
| 本地 IP | 127.0.0.1 |
| 本地端口 | 53 |
| 远程端口 | 6053 |
查看连接状态
在 FRP 客户端列表中,每个实例会显示:
- 连接状态:已连接 / 连接中 / 断开
- 代理数量:活跃代理规则数
- 运行时间:连接持续时间
常见问题
Q:frpc 连接失败,提示 "login to server failed"?
排查步骤:
- 确认服务端地址和端口是否正确
- 检查 Token 是否与服务端配置一致
- 确认服务端防火墙已放行 frps 监听端口(默认 7000)
- 查看 NetPanel 日志获取详细错误信息
Q:代理规则启动失败,提示端口已被占用?
原因: 服务端上该远程端口已被其他代理规则占用。
解决方法: 更换一个未被占用的远程端口,或使用 HTTP/HTTPS 类型代理(共用 80/443 端口,通过域名区分)。
Q:连接不稳定,频繁断开重连?
可能原因:
- 网络质量差,建议选择延迟低的服务器
- frps 服务端资源不足
- 心跳超时设置过短
优化建议: 在 frpc 配置中适当增大 heartbeat_timeout 值。
Q:FRP 与 NPS 如何选择?
| 对比项 | FRP | NPS |
|---|---|---|
| 性能 | ⭐⭐⭐⭐⭐ 更高 | ⭐⭐⭐⭐ 较高 |
| Web 管理界面 | ❌ 无(需命令行) | ✅ 有 |
| 配置复杂度 | 中等 | 较低(可视化) |
| 协议支持 | TCP/UDP/HTTP/HTTPS/STCP/XTCP | TCP/UDP/HTTP/HTTPS/SOCKS5 |
| 社区活跃度 | ⭐⭐⭐⭐⭐ 非常活跃 | ⭐⭐⭐ 一般 |
| 推荐场景 | 追求性能、熟悉命令行 | 需要 Web 管理、多用户场景 |
官方资源
| 资源 | 链接 |
|---|---|
| 📖 官方文档 | https://gofrp.org/zh-cn/docs |
| 💾 GitHub 下载 | https://github.com/fatedier/frp/releases |
| 🐛 问题反馈 | https://github.com/fatedier/frp/issues |
NetPanel 内置 FRP
NetPanel 发布包中已内置对应平台的 FRP 二进制文件,无需单独下载安装。
注意事项
需要 FRP 服务端
FRP 客户端需要配合 FRP 服务端使用。你可以使用 NetPanel 内置的 FRP 服务端 自建,也可以使用第三方 FRP 服务。
代理名称唯一性
同一 FRP 服务端上,所有客户端的代理名称必须全局唯一。建议使用 用户名_服务名 的格式命名,如 alice_ssh。
Token 安全
请务必设置强 Token,避免未授权客户端连接到你的 FRP 服务端。Token 应包含大小写字母、数字和特殊字符,长度不少于 16 位。