搭建FRP服务器是实现低成本、高效率内网穿透的最佳方案,能够将处于 NAT 网络环境后的内部服务安全、稳定地暴露到公网,通过在具备公网 IP 的服务器上部署 FRP 服务端,用户无需依赖第三方不稳定的中转服务,即可完全掌控数据传输路径,实现对家庭 NAS、内部 Web 服务、远程桌面等资源的随时随地访问,这种架构不仅解决了动态 IP 和端口封锁带来的访问难题,更在保障数据私密性的同时,大幅降低了运维成本。

核心优势与架构解析
FRP(Fast Reverse Proxy)采用 C/S 架构,由服务端和客户端两部分组成。
- 服务端:运行在具有公网 IP 的云服务器上,负责监听请求并将流量转发给客户端。
- 客户端:运行在内网设备上,主动连接服务端建立隧道。
这种反向代理机制的核心在于“反向连接”,内网设备主动向外发起连接,能够穿透绝大多数防火墙和 NAT 设备,避免了传统端口映射的复杂配置和网络限制,对于需要长期稳定运行的业务而言,自建 FRP 服务器在延迟、带宽和安全性上均优于公共免费穿透服务。
服务器环境准备与选型
在正式部署前,合理选型服务器是保障服务质量的基础。
- 带宽选择:带宽直接决定了内网服务的访问速度,建议选择带宽大于 5Mbps 的云服务器,若涉及大量文件传输或视频流需求,应考虑 10Mbps 以上带宽。
- 地理位置:服务器地理位置应尽量靠近内网设备所在地,以减少网络延迟,提升用户体验。
- 操作系统:推荐使用 CentOS 7+ 或 Ubuntu 18.04+ 等 Linux 发行版,系统稳定性更高,且社区支持完善。
- 安全组配置:云服务商控制台的安全组必须放行 FRP 通信端口,通常需要开放用于客户端连接的通信端口(如 7000)以及用于外部访问的映射端口范围(如 6000-7000)。
FRP 服务端详细部署流程
部署过程遵循标准化流程,确保环境的一致性和可维护性。
-
下载安装包:
访问 FRP 的 GitHub 发布页,根据服务器架构下载最新版本,大多数云服务器为 AMD64 架构。
使用wget命令下载压缩包,并解压至/opt目录以便管理。 -
配置服务端文件:
编辑frps.toml文件(新版本推荐使用 TOML 格式)。
核心配置参数包括:bindPort:设定服务端监听端口,默认为 7000,用于接收客户端连接。auth.token:设置鉴权令牌,防止未授权客户端接入,这是保障服务器安全的关键。vhostHTTPPort:若需代理 HTTP 服务,需指定 HTTP 端口,如 80 或 8080。
-
配置系统服务:
为了保证服务器重启后 FRP 自动运行,需将其注册为系统服务。
在/etc/systemd/system/目录下创建frps.service文件。
配置文件中指定启动命令和重启策略,使用systemctl start frps启动服务,并使用systemctl enable frps设置开机自启。
客户端配置与连接验证
服务端运行后,需在内网设备上配置客户端以建立隧道。
-
客户端配置:
编辑frpc.toml文件。serverAddr:填入云服务器的公网 IP 地址。serverPort:填入服务端配置的监听端口(如 7000)。auth.token:必须与服务端设置一致。- 代理配置:定义具体的穿透规则,穿透 SSH 服务,需配置
type = "tcp",localIP = "127.0.0.1",localPort = 22",remotePort = 6000"。
-
启动与测试:
启动客户端程序,观察日志输出,若显示连接成功,则说明隧道建立完毕。
通过访问公网IP:6000,流量将被转发至内网设备的 22 端口,实现 SSH 访问。
安全加固与性能优化策略
搭建服务器仅是第一步,持续的安全运维至关重要。
-
启用 TLS 加密:
默认情况下,FRP 通信内容可能被窃听,在配置文件中启用 TLS 加密传输,确保数据在公网传输过程中的机密性。 -
限制端口范围:
在服务端配置中,通过allowPorts严格限制允许映射的端口范围,这能有效防止客户端滥用服务器端口资源,降低安全风险。 -
配置 Dashboard 监控:
开启 FRP 自带的 Dashboard 面板,实时监控流量使用情况、连接状态和客户端信息,这有助于及时发现异常流量和潜在攻击。 -
域名访问与 HTTPS:
对于 Web 服务,建议配置type = "http"并结合域名使用,配合 Nginx 反向代理,可以在 FRP 前端部署 SSL 证书,实现 HTTPS 安全访问,提升网站专业度和安全性。
常见问题排查与运维建议
在实际运维过程中,连接失败通常由以下几个原因导致:
- 端口未开放:检查云服务商安全组和服务器内部防火墙,确保相关端口已放行。
- Token 不匹配:确认客户端与服务端的鉴权令牌完全一致,注意空格和大小写。
- 版本不兼容:服务端与客户端版本差异过大可能导致通信失败,建议保持版本一致。
通过专业的服务器搭建frp服务器方案,用户不仅能获得稳定的内网穿透体验,还能深入理解网络代理原理,相比于购买昂贵的商业穿透服务,自建方案在可控性和扩展性上具有不可替代的优势。
相关问答
问:FRP 服务器搭建好后,如何实现通过域名访问内网多个 Web 服务?
答:FRP 支持 HTTP 代理类型,利用 HTTP 请求中的 Host 字段进行路由分发,在服务端配置 vhostHTTPPort(如 80 端口)后,客户端配置多个 type = "http" 的代理,分别指向内网不同的 Web 服务端口,并配置 customDomains 参数,在域名解析处将不同的子域名解析到 FRP 服务器 IP,即可实现通过不同域名访问不同内网服务。
问:自建 FRP 服务器是否会被运营商封锁端口?
答:一般情况下,常规端口(如 80、443、22)若用于正常业务不会被封锁,但部分运营商可能会拦截 80 等敏感端口,建议在服务端使用高位端口(如 5443、8443)作为通信端口,或联系云服务商解封特定端口,避免在 FRP 上传输违法违规内容,以免 IP 被列入黑名单。
如果您在搭建过程中遇到任何问题或有更好的优化建议,欢迎在评论区留言交流。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/70410.html