未归类 · 详细指南 · 验证于 2026-08-31

frp:详细版

内网穿透/反向隧道:无公网 IP 也能经公网 frps 服务器访问内网服务(SSH/Web/远程联调)

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 重写后合并而来——来源不散落,全部挂在这一个页面上。

暂无已合并来源:本页为本地实测与多来源重写的沉淀;来源与验证细节见站内对应方案页。

← 返回 frp 方案页 | 未归类 问题域