frp:内网穿透工具
本文深入解析内网穿透工具 frp,从原理到实战,教你如何快速搭建安全稳定的穿透服务,解决外网访问内网难题,适合开发者与运维人员参考。
详细介绍
为什么你需要 frp?
在开发调试、远程办公或搭建个人服务时,我们常常面临一个尴尬:内网中的服务无法被外网直接访问。无论是本地 Web 应用、SSH 服务还是游戏服务器,没有公网 IP 就像一道无形的墙。传统方案要么购买昂贵的公网服务器,要么配置复杂的 VPN,而 frp 提供了一种轻量、灵活的反向代理解决方案,让你只需一台有公网 IP 的机器,就能将内网服务暴露出去,而且配置简单、性能出色。
frp 的核心功能
灵活的网络代理模式
frp 支持 TCP、UDP、HTTP、HTTPS 等多种协议,这意味着你不仅可以穿透 SSH、RDP、数据库连接,还能将内网 Web 服务映射到公网域名。其内置的虚拟主机功能允许你在同一台公网服务器上通过域名区分多个内网服务,充分利用资源。
安全与流量管理
frp 提供了完善的认证机制,包括 token 验证和用户密码检查,防止未授权访问。同时支持 TLS 加密传输,确保数据在公网传输时不被窃听。对于流量控制,frp 可以限制每个代理的带宽,避免某个穿透服务占用过多资源。
便捷的管理与监控
通过 frp 提供的 Dashboard 界面,你可以实时查看所有代理的连接状态、流量统计和错误日志。配合 Prometheus 指标导出,还能接入现有监控系统,让运维工作更加透明高效。
frp 的安装与使用
使用 frp 前,你需要准备一台具有公网 IP 的服务器(例如阿里云、腾讯云),以及你的内网机器。整个流程分为三步:
- 下载 frp:前往 GitHub Releases 页面下载对应平台的压缩包,常见的有 linux_amd64、linux_arm、windows_amd64 等。解压后你会看到 frps(服务端)和 frpc(客户端)两个可执行文件。
- 配置服务端:在公网服务器上编辑 frps.toml 文件,设置 bindPort(默认 7000)、token(认证密钥)和 dashboard 相关参数。然后运行
./frps -c frps.toml启动服务端。 - 配置客户端:在内网机器上编辑 frpc.toml,指定 serverAddr(公网 IP)、serverPort 和 token,再定义若干 proxy 规则。例如要穿透本机 3389 端口,可以这样写:
serverAddr = "your-server-ip"
serverPort = 7000
token = "your-token"
[[proxies]]
name = "rdp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3389
remotePort = 6000
保存后运行 ./frpc -c frpc.toml,此时访问公网服务器的 6000 端口就等于访问内网机器的 3389 端口。对于 HTTP 服务,你还可以配置 customDomains 并配合 DNS 解析,实现用域名直接访问。
使用 frp 的注意事项
- 务必将 frps 和 frpc 的版本保持一致,避免协议不兼容导致连接失败。
- 公网服务器上建议配置防火墙规则,只开放必要的端口,并使用高强度 token 增强安全性。
- 如果穿透的服务涉及敏感数据,一定要启用 TLS 加密,同时定期查看日志,及时发现异常访问。
- 对于长时间运行的穿透任务,可以使用 systemd 或 supervisor 将 frpc 注册为服务,实现开机自启和自动重启。
更新记录
最近更新:2026-08-18
下载
下载按优先级提供:国内网盘(第一优先,便于国内快速获取)→ 官方来源(官方正版背书)→ 源码地址(开源项目);网盘链接均经审核,如失效欢迎反馈。
怎么选(决策参考)
暂无公开信号
暂无公开信号
暂无公开信号
暂无公开信号
暂无公开信号
暂无公开信号
社区数据不足
暂无公开信号
暂无公开信号
暂无公开信号
常见问题
frp 和 ngrok 有什么区别?
frp 是开源免费且支持自托管的,你可以完全掌控服务器和数据;ngrok 官方服务通常有连接数和带宽限制,自托管配置也较复杂。frp 在性能、协议支持和细粒度控制上更胜一筹。
frp 支持 UDP 穿透吗?
支持。在 frpc.toml 中将 type 设置为 udp 即可,例如穿透 DNS 或游戏服务器。但注意 UDP 通常需要额外配置超时和流量限制,避免资源浪费。
如何实现 frp 开机自启?
以 Linux 为例,可以将 frpc 命令写入 systemd 服务单元文件,设置 Restart=always,然后 enable 该服务。Windows 下可使用任务计划程序或 NSSM 封装。