frp 是一个高性能反向代理,能把位于 NAT 或防火墙后的本地服务暴露到公网。支持 TCP、UDP、HTTP、HTTPS 协议,可通过域名把请求转发到内网服务,还提供 P2P 连接模式。
一、项目官方信息
项目 | 信息
GitHub 仓库 | https://github.com/fatedier/frp
中文文档 | https://github.com/fatedier/frp/blob/master/README_zh.md
开源协议 | Apache-2.0
主要语言 | Go(约 84.9%)
Star 数 | 约 110k
架构:服务端 frps 部署在有公网 IP 的服务器 A,客户端 frpc 部署在内网服务器 B。
二、官方图片
frp 架构示意图:

三、环境要求
- 公网服务器一台(运行 frps)。
- 内网机器一台(运行 frpc)。
- Linux/macOS/Windows 均可,下载对应架构二进制即可。
- 放行 frps 的 bindPort 与各 remotePort。
四、完整部署步骤
1. 下载二进制
到 https://github.com/fatedier/frp/releases 下载最新版本,解压得到 frps、frpc 与示例配置。
2. 服务端配置 frps.toml
```toml
frps.toml
bindPort = 7000
```
3. 启动 frps
```bash
./frps -c ./frps.toml
```
4. 客户端配置 frpc.toml
```toml
frpc.toml
serverAddr = "x.x.x.x"
serverPort = 7000
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000
```
5. 启动 frpc
```bash
./frpc -c ./frpc.toml
```
6. 验证
```bash
ssh -p 6000 user@x.x.x.x
```
即可连到内网机器的 22 端口。
7. systemd 自启
/etc/systemd/system/frps.service:
```ini
[Unit]
Description=frp server
After=network.target
[Service]
ExecStart=/usr/local/bin/frps -c /etc/frp/frps.tomr
Restart=always
[Install]
WantedBy=multi-user.target
```
```bash
sudo systemctl enable --now frps
```
五、使用方法
暴露内网 Web 服务
```toml
[[proxies]]
name = "web"
type = "http"
localPort = 8080
customDomains = ["web.example.com"]
```
启用 Dashboard
```toml
frps.toml
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin"
```
访问 http://x.x.x.x:7500 查看隧道状态。
鉴权
```toml
frps.toml
auth.token = "your_token"
```
```toml
frpc.toml
auth.token = "your_token"
```
常用隧道场景
- SSH 隧道(TCP);
- 多 SSH 共享同一端口(STCP);
- 内网 Web 服务(HTTP/HTTPS);
- DNS 查询转发;
- Unix Domain Socket 转发;
- HTTPS 终止;
- P2P 模式。
六、常见问题 FAQ
1. 杀毒软件把 frpc 删了?
frp 是反向代理工具,部分杀毒软件误报,把 frpc 加入白名单。
2. 连接被拒绝?
检查 frps 的 bindPort 与 remotePort 是否在防火墙放行;确认 frpc 的 serverAddr/serverPort 正确。
3. 如何配置 HTTPS?
在 frpc 配置里用 type=https 并设置 customDomains,或在 frps 上配置 TLS 证书。
4. 如何多客户端共用一个端口?
用 HTTP/HTTPS 类型的 vhostHTTPPort + customDomains 路由。
5. 如何热加载 frpc 配置?
启动 frpc 时加 --hotReload,修改配置后自动生效。
6. v2 什么时候出?
官方在开发中,基于 K8s/ServiceMesh 理念,与 v1 不兼容。
七、跳转链接
- GitHub 仓库:https://github.com/fatedier/frp
- Releases:https://github.com/fatedier/frp/releases
- 中文文档:https://github.com/fatedier/frp/blob/master/README_zh.md
- Dashboard 示例:https://github.com/fatedier/frp/blob/master/doc/pic/dashboard.png