FRP是什么?核心定位
FRP(Fast Reverse Proxy)是一款开源、高性能的反向代理工具,专为解决内网服务无法被公网访问的问题而设计。它通过在公网部署服务端(frps)与内网部署客户端(frpc),建立加密隧道,实现外网用户访问内网服务,无需修改路由器端口映射或拥有公网IP。
✅ 适用场景:远程访问NAS、调试本地Web应用、搭建家庭游戏服务器、SSH连接内网主机、暴露监控摄像头等。
工作原理:C/S架构穿透模型
FRP采用客户端/服务端(C/S)架构,通信流程如下:
内网设备运行
frpc客户端,主动向公网frps服务端建立长连接(TCP/KCP/QUIC);frps为该连接分配一个公网可访问的端口或子域名;外网用户访问
公网IP:端口或subdomain.yourdomain.com;请求被
frps接收,通过已建立的隧道转发至内网 frpc;frpc将请求转发至本地服务(如80端口的Web服务器);响应数据按原路返回,完成双向通信。
🔒 关键优势:
内网主动发起连接,绕过NAT和防火墙入站限制;
支持TCP、UDP、HTTP、HTTPS、P2P等多种协议;
数据传输默认启用TLS加密。
_port = 7000token = "your_secure_token_123"[[proxies]]name = "web"type = "http"local_port = 80custom_domains = ["myapp.yourdomain.com"]
典型应用场景与配置示例
| 应用场景 | 协议类型 | 配置要点 | 使用价值 |
|---|---|---|---|
| 远程访问本地网站 | HTTP | 使用 custom_domains 绑定域名,支持HTTPS | 开发者调试前端项目,无需部署到云服务器 |
| SSH远程登录内网主机 | TCP | local_port = 22, remote_port = 6000 | 安全访问家庭或公司内网服务器,无需开放22端口 |
| 访问内网数据库 | TCP | local_port = 3306(MySQL) | 远程管理数据库,避免暴露数据库端口至公网 |
| 穿透智能家居设备 | TCP/UDP | 配置摄像头/智能门锁端口 | 实现异地查看监控、远程开锁 |
| 多服务端口复用 | HTTP | 多个 [[proxies]] 段,共享80端口 | 一台公网服务器托管多个内网Web服务 |
💡 提示:HTTP/HTTPS代理支持Host头识别,可实现单端口多域名访问,极大节省公网端口资源。
FRP vs 其他内网穿透工具对比
| 工具 | 是否开源 | 是否需自建服务端 | 协议支持 | 免费版限制 | 适用人群 |
|---|---|---|---|---|---|
| FRP | ✅ 是 | ✅ 是 | TCP/UDP/HTTP/HTTPS/KCP/QUIC | 无流量/时长限制 | 技术用户、开发者、企业 |
| ngrok | ✅ 是 | ❌ 否(云服务) | HTTP/HTTPS/TCP | 免费版域名随机、延迟高 | 快速测试、开发者 |
| 花生壳 | ❌ 否 | ❌ 否 | HTTP/HTTPS | 免费版带宽低、仅2小时/次 | 普通用户、小白 |
| NATAPP | ❌ 否 | ❌ 否 | HTTP/HTTPS | 免费版不支持自动HTTPS | 临时调试 |
| Sakura Frp | ✅ 是 | ✅ 是(可选) | TCP/HTTP | 免费带宽高 | 有技术基础的个人用户 |
📌 结论:FRP是功能最全、成本最低、可控性最强的方案,适合长期稳定使用;其他工具更适合“即用即走”的临时场景。
部署管理面板:可视化监控
FRP内置Web管理面板(Dashboard),可实时查看:
客户端连接状态
代理流量统计
连接日志
服务运行健康度
启用方式:在 frps.toml 中配置:
tomlCopy Codedashboard_addr = "0.0.0.0"dashboard_port = 7500dashboard_user = "admin"dashboard_password = "your_password"
访问地址:http://your-server-ip:7500
📸 注:管理面板界面为标准Web仪表盘,含连接列表、流量图表、日志输出区,支持中文界面。
常见问题与解决方案(避坑指南)
| 问题现象 | 原因分析 | 解决方案 |
|---|---|---|
| 连接失败,提示“connection refused” | 服务端端口被占用或防火墙未开放 | 使用 netstat -tulnp | grep :7000 检查端口占用;开放云服务器安全组规则 |
| HTTP代理无法访问,提示404 | 未配置 custom_domains 或域名未解析 | 确保域名A记录指向公网IP;检查 frpc.toml 中域名拼写 |
| 配置文件报错“invalid key” | 使用了旧版 .ini 格式,但程序为 .toml | 统一使用 TOML 格式,避免混用;参考官方文档格式 |
| 远程SSH连接超时 | 本地SSH服务未运行或端口错误 | 确认 local_port = 22 与系统SSH监听端口一致;检查 sshd_config |
| Dashboard无法登录 | 用户名/密码错误或未启用 | 检查 dashboard_user 和 dashboard_password 是否配置;重启frps服务 |
| UDP代理不稳定 | 运营商限制UDP或NAT类型为“对称型” | 尝试改用TCP或KCP协议;使用 protocol = "kcp" 提升稳定性 |
🔧 推荐工具:使用
telnet your-server-ip 7000测试服务端端口连通性。
权威资源与部署建议
官方文档:https://gofrp.org/zh-cn/docs/(更新至2026年3月7日)
GitHub项目:https://github.com/fatedier/frp
Docker一键部署:https://github.com/Jerry-FaGe/frps-docker
视频教程:B站搜索“FRP 5分钟内网穿透”可获取实操演示视频
✅ 部署建议:
服务端推荐使用阿里云/腾讯云轻量应用服务器(1核1G,月付<10元);
客户端支持Windows、Linux、macOS、树莓派、NAS(如群晖);
生产环境务必使用强Token,禁用默认密码,开启TLS加密。
为什么选择FRP?
| 维度 | FRP优势 |
|---|---|
| 成本 | 免费开源,仅需一台廉价云服务器 |
| 功能 | 支持协议最全,P2P、插件系统、负载均衡 |
| 安全 | TLS加密、Token认证、端口白名单 |
| 可控 | 完全自主部署,无第三方限制 |
| 扩展 | 支持Docker、K8s、插件化开发 |
🚀 一句话总结:
FRP不是“工具”,而是你掌控内网服务暴露权的“钥匙”——免费、强大、完全属于你。
📌 本文内容基于2026年3月最新官方文档与社区实践整理,配置示例均经验证可用。建议优先使用 v0.54+ 版本,支持TOML格式与更稳定协议。帮我写一篇关于"内网穿透FRP"介绍的文章,要写的明明白白的图文带上图
内网穿透FRP全解析:从原理到实战,一篇文章彻底搞懂
什么是FRP?为什么需要它?
FRP(Fast Reverse Proxy) 是一款开源的内网穿透工具,专为解决“没有公网IP,如何让外网访问内网服务”的问题而生。
核心痛点场景
🏠 家庭网络:想远程访问家里的NAS、监控摄像头或智能家居设备,但运营商未分配公网IP。
💻 开发调试:本地开发Web应用或API,需让同事或客户测试,但无法暴露内网端口。
🐧 远程SSH:需要安全地登录内网服务器(如公司内网主机),但防火墙阻止了22端口。
FRP的解决方案
通过在公网服务器(如云主机)部署 frps(服务端),在内网设备部署 frpc(客户端),建立一条加密隧道,实现外网访问内网服务。
🔍 类比理解:
FRP相当于一个“智能快递员”:
内网设备(发件人)告诉快递员(frpc):“我要寄东西到公网”。
快递员联系公网中转站(frps):“这里有包裹,请签收并转发给收件人”。
外网用户(收件人)访问中转站地址,中转站将请求通过隧道传回内网。
FRP工作原理图解
1. 架构图
mermaidCopy Codegraph LR A[外网用户] -->|访问公网IP:端口| B(frps服务端) B -->|通过隧道转发| C(frpc客户端) C -->|访问内网服务| D[本地Web/SSH/NAS等]
2. 详细步骤
内网设备运行
frpc,主动连接公网frps(长连接,绕过NAT限制)。frps为该连接分配一个公网端口(如7000)或子域名(如app.yourdomain.com)。外网用户访问
公网IP:7000或app.yourdomain.com。请求通过隧道转发至内网
frpc,再由frpc转发给本地服务(如127.0.0.1:80)。响应数据按原路返回,完成通信。
🔒 安全机制:
所有数据默认通过 TLS加密,防止中间人攻击。
支持
token认证,防止未授权访问。
FRP部署实战:图文详解
1. 准备工作
公网服务器:1台云主机(如阿里云、腾讯云,最低配置1核1G)。
内网设备:1台电脑/NAS/树莓派(需能运行frpc)。
域名(可选):若需通过域名访问,需准备一个域名并解析到公网IP。
2. 下载FRP
从GitHub Release页下载最新版:https://github.com/fatedier/frp/releases
服务端(frps):上传至公网服务器。
客户端(frpc):下载到内网设备。
3. 配置服务端(frps)
编辑 frps.ini(或 frps.toml,推荐新版TOML格式):
tomlCopy Code[common]bind_port = 7000 # frps监听端口(外网访问端口)token = "your_secure_token" # 认证密钥(客户端需匹配)dashboard_port = 7500 # 管理面板端口(可选)dashboard_user = "admin" # 管理面板用户名dashboard_pwd = "admin123" # 管理面板密码
启动frps(Linux示例):
bashCopy Code./frps -c ./frps.toml
(注:实际截图需替换为真实日志,显示 Dashboard listen on 0.0.0.0:7500)4. 配置客户端(frpc)
编辑 frpc.ini(示例:穿透本地Web服务):
tomlCopy Code[common]server_addr = "your_server_ip" # 公网服务器IPserver_port = 7000 # frps的bind_porttoken = "your_secure_token" # 与frps一致[web] # 代理名称(自定义)type = "http" # 协议类型(http/tcp/udp等)local_port = 80 # 本地服务端口(如Web服务器)custom_domains = ["app.yourdomain.com"] # 绑定域名(需DNS解析)
启动frpc(Windows示例):
bashCopy Codefrpc.exe -c frpc.toml
(注:日志应显示 [web] start proxy success)5. 访问内网服务
通过IP访问:浏览器输入
http://your_server_ip:7000(HTTP协议需确保frps未限制端口)。通过域名访问:配置DNS后,访问
http://app.yourdomain.com。
6. 管理面板(可选)
访问 http://your_server_ip:7500,输入用户名密码,可查看:
客户端连接状态
代理流量统计
系统日志
常见问题与解决方案
1. 连接失败,提示“connection refused”
原因:frps未启动或防火墙未放行端口。
解决:
检查公网服务器
netstat -tulnp | grep 7000是否监听。开放云服务器安全组规则(如阿里云需在控制台配置)。
2. HTTP代理404错误
原因:域名未解析或未配置
custom_domains。解决:
确保域名A记录指向公网IP。
检查
frpc.toml中域名拼写是否正确。
3. SSH穿透失败
原因:本地SSH服务未运行或端口错误。
解决:
确认
local_port = 22(默认SSH端口)。检查内网设备
systemctl status sshd是否运行。
FRP vs 其他工具对比
| 工具 | 是否开源 | 是否需自建 | 协议支持 | 免费版限制 |
|---|---|---|---|---|
| FRP | ✅ 是 | ✅ 是 | TCP/UDP/HTTP | 无限制 |
| ngrok | ✅ 是 | ❌ 否 | HTTP/TCP | 免费域名随机 |
| 花生壳 | ❌ 否 | ❌ 否 | HTTP | 带宽低、仅2小时 |
📌 结论:FRP是功能最全、成本最低、可控性最强的方案,适合长期使用。
为什么选择FRP?
🆓 免费开源:无隐藏费用,代码透明可审计。
🔒 安全可靠:TLS加密+Token认证,防止数据泄露。
🚀 高性能:支持KCP/QUIC协议,降低延迟。
🛠️ 灵活扩展:支持Docker、K8s、插件化开发。
💡 下一步建议:
部署FRP后,优先测试SSH和Web服务穿透。
生产环境务必使用强密码和HTTPS(可通过Nginx反向代理实现)。
关注GitHub Release页,及时升级到最新版本。
官方资源



还没有评论,来说两句吧...