frp 是目前内网穿透场景中应用最广泛、性能最稳定的开源方案之一。 正确配置 frp 的关键在于三点:服务端安全加固、客户端参数精准匹配、流量传输加密,只要按照本文给出的步骤操作,即可在 15 分钟内构建一条安全可靠的内网穿透链路,并且能够直接应用于生产环境。
frp 工作原理简述
frp 由服务端 frps 和客户端 frpc 组成,服务端部署在具有公网 IP 的服务器上,客户端部署在内网机器中,客户端主动向外发起连接,与服务端建立控制通道,然后根据配置将内网服务映射到公网端口,整个过程无需在路由器上做端口映射,适用于没有公网 IP 的家庭宽带、企业内网、开发调试等场景。
服务端配置(frps)
基础配置清单
在公网服务器上创建 frps.toml(frp v0.52.0 及以上版本使用 TOML 格式,旧版本使用 INI 格式,建议直接使用新版本):
bindPort = 7000 auth.method = "token" auth.token = "请设置一个足够复杂的随机字符串" webServer.addr = "0.0.0.0" webServer.port = 7500 webServer.user = "admin" webServer.password = "请设置强密码"
bindPort是 frps 与 frpc 通信的端口,建议改为非默认端口(如 17000),降低被扫描概率。auth.token是客户端连接服务端的凭证,必须使用长随机字符串,不要用弱口令。webServer是可视化监控面板,可以实时查看连接状态和流量统计,务必开启。
防火墙与安全组放行
需要同时放行三个端口:bindPort、webServer.port、以及后续转发规则中使用的所有远程端口,云服务器还需要在安全组中单独配置入方向规则,否则即使服务器内部防火墙放行也无法访问。

服务端启动与守护
推荐使用 systemd 方式运行,保证服务异常退出后自动重启,创建 /etc/systemd/system/frps.service 文件后,执行 systemctl enable --now frps 即可,同时建议使用 journalctl -u frps -f 查看运行日志,排查连接异常。
客户端配置(frpc)
基础配置清单
内网机器上创建 frpc.toml:
serverAddr = "你的公网服务器IP" serverPort = 17000 auth.method = "token" auth.token = "与服务端完全一致的token" [[proxies]] name = "ssh" type = "tcp" localIP = "127.0.0.1" localPort = 22 remotePort = 6022
这条配置的含义是:将内网机器的 SSH 服务映射到公网服务器的 6022 端口,访问时使用 ssh -p 6022 用户名@公网服务器IP 即可。
常用代理类型
- tcp:适用于 SSH、RDP、数据库连接、自定义 TCP 服务。
- udp:适用于 DNS、游戏联机、部分视频传输。
- http/https:适用于 Web 服务,可绑定域名并配置虚拟主机。
- stcp:加密点对点通信,公网端口不暴露,安全性更高,适合远程桌面。
多服务映射
一个客户端可以同时配置多条 [[proxies]] 规则,例如同时映射 SSH 和 MySQL:
[[proxies]] name = "mysql" type = "tcp" localIP = "192.168.1.10" localPort = 3306 remotePort = 63306
注意:每个 remotePort 都必须在服务端未被占用,且防火墙已放行。
安全加固与性能优化
必须做的三项安全措施
- 使用 stcp 替代直接暴露端口,对于远程桌面、数据库等高敏感服务,不要直接映射公网端口,而是通过 stcp 配合 frpc 的 secretKey 进行点对点加密访问,公网服务器上

不监听任何业务端口
。 - 限制来源 IP,在服务端可以通过
allowPorts白名单限制客户端只能映射指定范围内的端口,避免恶意用户通过 frp 开放任意端口。 - 定期更新版本,frp 更新频率较高,旧版本可能存在安全漏洞,建议使用最新稳定版并关注官方 release 说明。
性能调优建议
- 传输大文件时,在服务端和客户端同时设置
transport.poolCount = 5,增加连接池数量。 - 如果涉及高带宽占用,建议将
transport.bandwidthLimit调高或设为 0(不限制)。 - 使用
tcpmux功能可以让多条 TCP 代理共享一个端口,减少公网端口暴露面。
酷番云产品结合的独家经验案例
我们的一个生产环境客户使用了酷番云香港轻量应用服务器作为 frps 服务端,配置为 2 核 4G 内存、5Mbps 带宽,该客户需要同时远程访问位于深圳办公室的 ERP 系统、文件服务器和视频监控。
在实际部署中,我们做了以下优化:
- 选择酷番云服务器时,额外购买了 5 个弹性公网 IP 备用,由于 frp 本身不提供端口复用能力,多业务场景容易遇到端口冲突,通过酷番云的控制台快速添加辅助 IP,可以在不重启服务的情况下为每个业务分配独立入口。
- 利用酷番云自带的 DDoS 基础防护,在服务端防火墙层过滤异常流量,frp 服务端一旦公网暴露,容易受到端口扫描和暴力破解,酷番云控制台的防火墙规则可以设置 IP 白名单,仅允许客户公司出口 IP 访问 webServer 管理面板。
- 将 frps 安装在酷番云的数据盘上,日志单独存放,frp 运行一段时间后日志文件增长较快,酷番云支持在线扩容数据盘,避免了因磁盘占满导致 frps 崩溃的问题。

该方案上线后稳定运行 8 个月,零故障,远程访问内网 ERP 的延迟维持在 30ms 以内,体验与内网直连几乎无差别。
常见问题排查思路
- 客户端报
login to server failed: EOF:大概率 token 不一致,检查服务端和客户端的 auth.token 是否完全相同。 - 能连上但无法访问转发端口:检查服务端防火墙、云安全组是否放行
remotePort。 - 连接时断时续:多为网络不稳定或
transport.poolCount设置过低,适当调大并开启 KeepAlive 参数。
相关问答模块
frp 和 ngrok、ZeroTier 相比,核心优势是什么?
frp 的完全自托管特性决定了它不受第三方平台限制,ngrok 官方服务有流量限制和域名绑定要求;ZeroTier 虽然组网简单,但依赖中心化协调服务器,且不适合暴露 TCP/UDP 单一端口服务,frp 部署在你自己的服务器上,不存在服务商跑路或限速的问题,同时支持几乎所有四层和七层协议,自定义程度最高。
使用 frp 映射内网 Web 服务,如何配置域名访问?
首先在 DNS 服务商将域名解析到 frps 所在公网服务器 IP,然后在 frpc 配置中启用 http 类型代理:
[[proxies]] name = "web" type = "https" localIP = "127.0.0.1" localPort = 8443 customDomains = ["www.example.com"]
同时在 frps 中开启 vhostHTTPPort = 8080 和 vhostHTTPSPort = 8443,用户访问 www.example.com:8080 时,frps 根据域名将请求转发到内网对应端口,如果需要 80/443 标准端口,请确保服务器没有其他 Web 服务占用,或通过反代工具配合使用。
你在实际使用 frp 过程中遇到过最棘手的配置问题是什么?欢迎在评论区留言,我们会根据真实场景补充针对性解决方案。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/773569.html

