frp · 高性能反向代理(内网穿透)|服务端与客户端部署全指南
项目仓库: https://github.com/fatedier/frp
开源协议:Apache 2.0 · 组件:frps(服务端)+ frpc(客户端) · 配置:TOML(frps.toml / frpc.toml) · 默认绑定端口:7000 · 协议:TCP/UDP/HTTP/HTTPS · 发布:Releases
1 项目简介
frp 是一个快速反向代理,用于把位于 NAT 或防火墙后的本地服务器暴露到公网。它支持 TCP、UDP、HTTP、HTTPS 协议,可通过域名把请求转发到内网服务。典型用法:把家里/公司内网机器的 SSH、Web 服务通过一台有公网 IP 的服务器暴露出来。
1.1 核心信息一览
| 项目项 | 内容 |
|---|---|
| 项目名称 | frp |
| 仓库地址 | github.com/fatedier/frp |
| 项目定位 | 高性能反向代理(内网穿透) |
| 开源协议 | Apache 2.0 |
| 服务端 | frps(部署在有公网 IP 的机器) |
| 客户端 | frpc(部署在内网机器) |
| 配置文件 | frps.toml / frpc.toml |
| 默认绑定端口 | 7000(bindPort) |
1.2 适用场景
- 内网机器 SSH/Web 远程访问。
- 把本地服务通过公网服务器暴露给外部。
- 多服务复用同一端口(tcpmux)。
1.3 能力边界与注意(官方)
- 部分杀毒软件会把 frpc 误报为恶意软件(因其是可穿透防火墙的反向代理工具),需加白名单/排除,见 issue 3637。
2 部署架构
- Server A(公网 IP):放置
frps二进制与frps.toml。 - Server B(内网):放置
frpc二进制与frpc.toml。 - 从 Releases 下载对应操作系统与架构的二进制。
3 示例:通过 SSH 访问内网机器
3.1 服务端 A(公网)
frps.toml:
# frps.toml
bindPort = 7000启动:
./frps -c ./frps.toml3.2 客户端 B(内网)
frpc.toml:
# frpc.toml
serverAddr = "x.x.x.x"
serverPort = 7000
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000启动:
./frpc -c ./frpc.toml3.3 连接
# 通过公网服务器 A 访问内网机器 B(用户名 test)
ssh -oPort=6000 test@x.x.x.x说明:
localPort(客户端本地监听)与remotePort(服务端暴露)是进出 frp 的流量端口;serverPort是 frps 与 frpc 之间通信端口。
4 典型配置项
| 配置 | 位置 | 说明 |
|---|---|---|
bindPort |
frps.toml | frpc 连接端口(默认 7000) |
serverAddr / serverPort |
frpc.toml | 公网 frps 地址与端口 |
[[proxies]] |
frpc.toml | 代理规则(name/type/localIP/localPort/remotePort) |
tcpmuxHTTPConnectPort |
frps.toml | 多 SSH 复用同一端口(tcpmux) |
5 官方跳转链接汇总
| 类别 | 链接 | 说明 |
|---|---|---|
| 仓库主页 | https://github.com/fatedier/frp | 源码 |
| 发布下载 | Releases | 各平台二进制 |
| 文档 | 仓库 README 目录 | 多端口复用、KCP/QUIC、热重载等 |
6 常见问题
- 杀毒软件删 frpc:反向代理工具易被误报,加白名单(issue 3637)。
- 连不上:确认公网服务器 7000 与 remotePort 已在安全组/防火墙放行。
- 多 SSH 复用端口:用
tcpmux类型代理与tcpmuxHTTPConnectPort。
7 风险与说明
- 许可证:Apache 2.0。
- 安全:暴露内网服务到公网有风险,建议启用认证(token)、限制端口、TLS。
- 非官方声明:本文基于官方仓库 README 整理,配置以最新 release 为准。