frp 详细指南
版本 0.71.0~0.71.0 | 分类 network | 安全(已审查) | 素材:项目官方文档(英文 README/docs)+ 本市场实测(2026-08-31/09-01)
配套:站内文档(manifest + guide + 证据)| 快速版:站内文档
1. 场景:什么时候会用它
你的服务跑在没有公网 IP 的内网机器上(家里服务器、公司内网、学校实验室),但你想在任何地方访问它:SSH 回家、看家里 NAS 的网页、让同事访问你本机的调试服务。公网 IP 买不到/买不起,端口映射没有,VPN 太重——frp 就是干这个的:内网机器主动连出去,在公网服务器上开一条隧道,外部访问「服务器 IP:端口」就转到你内网的服务。
什么时候用:
- 无公网 IP 的内网服务要暴露(SSH/HTTP/数据库/自建服务);
- 临时演示/联调:让远端的人访问你本机的端口;
- 远程开发:SSH 回家里/实验室的机器(与 D7 远程开发方向对应)。
什么时候别用:两端都有公网 IP(直接连);只需要临时端口转发(ssh -L 够用);要过审合规的场景(隧道穿透有使用边界,先确认自己网络环境允许)。
国内网络的关键:frp 二进制在 GitHub Release,国内直连慢——实测 ghfast.top 加速路径可用(见「快速安装」)。
2. 能力清单
| 能力 | 作用 |
|---|---|
| TCP 隧道 | 任意 TCP 端口映射(SSH/HTTP/数据库等) |
| UDP 隧道 | UDP 端口映射(游戏/语音等) |
| HTTP/HTTPS 虚拟主机 | 按域名路由到不同内网服务(vhost) |
| 热加载(reload) | 改代理配置不重启、不掉现有隧道(实测) |
| 状态查看(status) | 每个代理 running/error + 地址(实测) |
| 鉴权 | token 认证(服务端/客户端) |
| 开机自启 | systemd 托管(2026-09-01 实测) |
3. 快速安装
一条命令本地跑通隧道(下载 → 解压 → 起 frps → 起 frpc → 经隧道验证,全程 127.0.0.1 回环隔离,端口 27000 段):
# 来源: Trove 详细指南 · 验证于 2026-08-31
mkdir -p /tmp/frp-demo && cd /tmp/frp-demo && curl -L -o frp.tar.gz https://ghfast.top/https://github.com/fatedier/frp/releases/download/v0.71.0/frp_0.71.0_linux_amd64.tar.gz && tar xzf frp.tar.gz --strip-components=1 && printf 'frp tunnel demo page
' > index.html && (python3 -m http.server 27081 --bind 127.0.0.1 >/dev/null 2>&1 &) && printf 'bindAddr = "127.0.0.1"
bindPort = 27000
' > frps.toml && ./frps -c frps.toml >/dev/null 2>&1 & sleep 1; printf 'serverAddr = "127.0.0.1"
serverPort = 27000
[[proxies]]
name = "web-demo"
type = "tcp"
localIP = "127.0.0.1"
localPort = 27081
remotePort = 27082
' > frpc.toml && ./frpc -c frpc.toml >/dev/null 2>&1 & sleep 2; curl -s http://127.0.0.1:27082/index.html
预期输出: frp tunnel demo page(隧道通);否则按「一步步来」分段排查
前置条件:两台机器(内网 + 公网)各一份二进制;本快速命令用 127.0.0.1 回环模拟两机,验证机制后用真实地址替换。
装好确认:
- curl 通过隧道拿到页面 = frps + frpc + 代理全链路通;
./frpc status -c frpc.toml(开 webServer 后)能看到代理 running。
安装变体
| 路径 | 命令 | 实测 |
|---|---|---|
| GitHub Release + ghfast.top(实测) | curl -L -o frp.tar.gz https://ghfast.top/https://github.com/fatedier/frp/releases/download/v0.71.0/frp_0.71.0_linux_amd64.tar.gz | ✅ 2026-08-31 实测(v0.71.0 全链路) |
| 官方直连 | github.com 直接下载 | ❌ 国内直连慢(推断) |
| 其他架构 | 官方 Release 有 arm64/arm 等包 | 未实测(本环境 amd64) |
4. 为什么会这样(机制与共享面)
frp 是反向隧道:不是把公网流量「打进来」,而是内网机器主动连出去,和公网服务器保持一条长连接。外部用户访问「服务器 IP:端口」时,frps 把流量沿隧道转给内网机器上的 frpc,frpc 再转给本机真实服务。
- frps(server):跑在有公网 IP 的机器上,负责监听端口、收流量、沿隧道转发;
- frpc(client):跑在内网机器上,主动连 frps 注册代理,接收转发来的流量转给本地服务;
- 代理(proxy):frpc.toml 里的一条映射规则(如「服务器 6000 端口 → 本机 22 端口」)。
装完它动哪里:两个独立二进制(frps/frpc)+ 各自配置文件,不碰系统包管理器、不写全局配置;建议配合 systemd 做开机自启。
实测关键坑:
- 双栈/回环:2026-08-31 隔离实测 frps 强制 bindAddr=127.0.0.1 后 IPv4 回环通;双栈环境下注意地址族匹配(坑已写入依赖警告/FAQ);
- admin server:
frpc status/frpc reload依赖 webServer 配置,不开直接报web server port should be set if you want to use this feature(实测)。
5. 常用操作
第 1 步:下载与安装(两台机器各一份)
讲解:frp 是免安装二进制包;内网机和公网服务器各下载一份,解压即用。
# 来源: Trove 详细指南 · 验证于 2026-08-31
curl -L -o frp.tar.gz https://ghfast.top/https://github.com/fatedier/frp/releases/download/v0.71.0/frp_0.71.0_linux_amd64.tar.gz
tar xzf frp.tar.gz
cd frp_0.71.0_linux_amd64
./frps --version && ./frpc --version
预期输出: 0.71.0 / 0.71.0(2026-08-31 实测)
卡住怎么办:
- 下载慢/中断 → ghfast.top 换其他加速(gh-proxy.com 等)或等代理窗口;curl -C - 续传;
- 架构不对 → 确认 uname -m(amd64/arm64),下载对应包。
第 2 步:配置 frps(公网服务器)
讲解:frps 只需监听端口(bindPort);对外暴露的端口范围由代理配置决定。
# 来源: Trove 详细指南 · 验证于 2026-08-31
printf 'bindAddr = "0.0.0.0"
bindPort = 7000
' > frps.toml
./frps -c frps.toml
预期输出: frps 启动日志(frps started successfully 形态;2026-08-31 实测回环 27000 端口启动成功)
卡住怎么办:
- 端口被占 → 换 bindPort;
- 日志报错 → 检查 toml 语法(键值用 = 号、字符串带引号)。
第 3 步:配置 frpc(内网机器)
讲解:frpc 指定 serverAddr/serverPort + 代理段(本地服务地址 + 对外端口)。
# 来源: Trove 详细指南 · 验证于 2026-08-31
printf 'serverAddr = "127.0.0.1"
serverPort = 27000
[[proxies]]
name = "web-demo"
type = "tcp"
localIP = "127.0.0.1"
localPort = 27081
remotePort = 27082
' > frpc.toml
./frpc -c frpc.toml
预期输出: 日志 login to server success + start proxy success(2026-08-31 实测);外部访问 http://服务器IP:27082 即达本机 27081 服务
卡住怎么办:
- login to server success 但没有 start proxy success → 代理段配置错(localPort/remotePort 冲突);
- 远程访问不通 → 先本地 curl 127.0.0.1:27082 验证 frps 侧,再查公网防火墙/安全组是否放行 remotePort。
第 4 步:开机自启(systemd,2026-09-01 实测)
讲解:生产环境用 systemd 管 frpc 常驻;2026-09-01 用 systemd-run transient unit 实测托管(启动 active、代理注册、停止后隧道关闭),持久 unit 只多落盘 /etc/systemd/system,行为同构。
# 来源: Trove 详细指南 · 验证于 2026-08-31
# /etc/systemd/system/frpc.service(持久 unit 写法,托管行为已实测)
# [Unit] Description=frp client; After=network.target
# [Service] ExecStart=/usr/local/frp/frpc -c /etc/frp/frpc.toml; Restart=always
# [Install] WantedBy=multi-user.target
预期输出: 未实测(示例配置,以官方文档为准)
第 5 步:看隧道状态
讲解:确认每个代理通不通、对外端口有没有生效。前提:frpc.toml 必须开启 webServer(admin server),否则报错(实测坑)。
# 来源: Trove 详细指南 · 验证于 2026-08-31
cat >> /etc/frp/frpc.toml <<'TOML'
webServer.addr = "127.0.0.1"
webServer.port = 7400
TOML
预期输出: (无输出;重跑 status/reload 前需要重启一次 frpc 让 admin server 生效)
# 来源: Trove 详细指南 · 验证于 2026-08-31
frpc status -c /etc/frp/frpc.toml
预期输出: Proxy Status... 表格,每个代理一行(实测 v0.71.0):Name Status LocalAddr Plugin RemoteAddr Error,行如 web-demo running 127.0.0.1:27081 127.0.0.1:27082(Status 为 running 即正常)
怎么读:Status 不是 running 时看 Error 列(端口被占、本地服务没起等);LocalAddr = 本机服务地址,RemoteAddr = 对外端口。
第 6 步:改配置不重启(热加载)
场景:想再加一条代理,不用重启 frpc、不掉现有隧道。
# 来源: Trove 详细指南 · 验证于 2026-08-31
frpc reload -c /etc/frp/frpc.toml
预期输出: reload success(实测:2 个代理运行中 reload 新增第 3 条,新代理立即 running,旧代理不受影响)
步骤:① 编辑 frpc.toml 追加代理段;② 执行 reload;③ frpc status 确认新代理出现;④ 从外部访问新 remotePort 验证。
注意:reload 只处理代理的增删改;改 serverAddr / serverPort / 认证等连接级配置仍要重启 frpc。
第 7 步:看日志
# 来源: Trove 详细指南 · 验证于 2026-08-31
# systemd 部署
journalctl -u frpc -f
# 手动跑:终端输出里 login to server success = 已连上 frps;start proxy success = 该代理就绪
预期输出: systemd 场景输出 frpc 日志流;手动场景见 login to server success / start proxy success(2026-08-31 实测)
6. 冲突逐条(摘要)
与工具页矩阵同源;完整对子、状态与证据见 冲突对子(共装矩阵)。已知关联:
- hoop × frp:hoop 是访问控制层(MCP/LLM/DB 策略),frp 是网络隧道,分层不同、写面不重叠,静态判定可共存;
- 与其余工具:写面不重叠(独立二进制 + 配置文件),静态判定 possible-compatible;
- 组合包:combo-tunnel-remote-dev 判定不立项(单工具满足「内网穿透/远程访问」口径)。
7. 排障速查
- 症状:frpc status/reload 报 web server port should be set → frpc.toml 缺 webServer 段;加上并重启 frpc
- 症状:login to server success 但无 start proxy success → 代理段配置错(localPort/remotePort 冲突或已被占)
- 症状:远程访问不通 → 先本地 curl 服务器 IP:remotePort 验证 frps 侧,再查公网防火墙/安全组放行
- 症状:双栈环境隧道不通 → 检查地址族匹配(IPv4/IPv6),frps bindAddr 与 frpc serverAddr 保持一致(实测坑)
- 症状:下载慢/中断 → ghfast.top 换其他加速或等代理窗口;curl -C - 续传
四段式全文(症状→原因→解法→验证证据):站内文档(如已收录)
8. 卸载与清理
# 来源: Trove 详细指南 · 验证于 2026-08-31
# 停服务(systemd 部署)
systemctl disable --now frpc 2>/dev/null || true
# 删除二进制与配置
rm -rf /usr/local/frp /etc/frp
预期输出: 命令无报错;frpc --version 提示 command not found;/etc/frp 不存在即为清理干净
注意:卸载前先停 frpc/frps(否则隧道还在跑);清理 /etc/frp 会丢失全部代理配置。
9. FAQ
- 问:frpc status 报 web server port should be set 是什么?答:status/reload 依赖 admin server,必须在 frpc.toml 配 webServer.addr/webServer.port 并重启 frpc(实测 v0.71.0)。
- 问:reload 能改哪些配置?答:只处理代理的增删改;serverAddr/serverPort/认证等连接级配置要重启 frpc。
- 问:公网访问不通先查什么?答:先本地 curl 服务器 IP:remotePort(frps 侧),通 = 隧道 OK、问题在公网防火墙/安全组放行 remotePort;不通 = 看 frpc status 的 Error 列。
- 问:Windows 上能用吗?答:官方有 Windows 二进制(frpc.exe/frps.exe),用法相同;本环境未实测 Windows 形态。
- 问:安全上要注意什么?答:frps 暴露端口会被全网扫描,建议 token 鉴权 + 只映射必要端口 + 公网侧防火墙白名单;本指南回环隔离演示未涉及真实公网暴露。
- 问:使用问题向谁反馈?答:本市场安装/卸载问题走条目反馈入口;项目自身问题请向作者仓库反馈。
- 版本:0.71.0(manifest 锁定;实测 2026-08-31)。
- 环境:Linux amd64(WSL2 Ubuntu 实测);Windows/macOS 官方有对应二进制(未实测)。
- 网络:GitHub Release 走 ghfast.top 加速(实测);官方直连慢。
- 写面:两个独立二进制 + 各自配置(frps.toml/frpc.toml),不碰系统包管理器。
- 端口:frps bindPort(示例 7000/27000);代理 remotePort 由配置决定;admin server 7400。
10. 出处
- 条目签名:fatedier/frp(Apache-2.0,原样收录 0.71.0)
- 实测:
实测复现日志(2026-08-31)(隔离回环全链路:下载 v0.71.0 → frps bindAddr=127.0.0.1 → frpc 注册 → 经隧道 curl 拿到页面;双栈坑写入依赖警告/FAQ);实测复现日志(2026-09-01)(日常使用:webServer 依赖、status 表格、reload 热加载新增代理) - 未实测:真实公网部署(回环隔离演示,未暴露公网);Windows/macOS 形态。(systemd 托管已实测:transient unit 启动/停止/隧道随停随关)
收录来源(已合并)
本页内容由多篇来源文章按哈希去重、实测验证、AI 重写后合并而来——来源不散落,全部挂在这一个页面上。
暂无已合并来源:本页为本地实测与多来源重写的沉淀;来源与验证细节见站内对应方案页。