106K Star,frp这款内网穿透工具让本地服务触达公网
106K Star,frp这款内网穿透工具让本地服务触达公网
frp 是 fatedier 开发的一款反向代理工具,用于将 NAT 或防火墙后的本地服务暴露到公网。项目在 GitHub 上获得了超过 10 万 Star,是目前内网穿透领域使用最广的开源方案之一。

解决什么问题
在日常开发和调试中,经常需要让外部访问本机上的服务:比如给客户演示本地搭建的网站、远程连接公司内网的数据库、或者调试第三方回调接口。由于 NAT 和防火墙的存在,这些场景无法通过直接暴露 IP 来实现。
frp 通过一台具有公网 IP 的服务器作为中转,将内网机器的端口映射到公网上,让外部请求能够穿透网络边界到达内网服务。
架构与部署
frp 由两个程序组成:frps 是服务端,部署在公网服务器上;frpc 是客户端,部署在内网机器上。两者通过配置文件建立连接后,frpc 会将指定的本地端口注册到 frps,frps 收到外部请求后转发给 frpc,frpc 再将流量导入本地服务。
一个典型的 SSH 内网穿透场景只需要三步:在公网服务器上配置 frps 的 bindPort,启动 frps;在内网机器上配置 frpc 指定 serverAddr 和要暴露的本地端口,启动 frpc;然后就可以通过公网 IP 加端口号 SSH 连接到内网机器。
配置文件默认使用 TOML 格式,也支持 YAML 和 JSON。从 0.52.0 版本起,旧的 INI 格式已被弃用。配置支持环境变量引用和文件拆分,方便在不同环境中复用。
# frps.toml
bindPort = 7000
# frpc.toml
serverAddr = "x.x.x.x"
serverPort = 7000
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000
不止是端口转发
frp 支持 TCP、UDP、HTTP、HTTPS 四种协议的代理。对于 Web 服务,可以绑定自定义域名,通过虚拟主机功能在同一个端口上承载多个服务。URL 路由功能允许根据请求路径前缀将流量分发到不同后端。
frp 还提供了 P2P 模式(xtcp),在两端建立直连后数据不再经过服务端中转,适合大流量传输。如果 P2P 因 NAT 类型打洞失败,可以回退到 STCP(Secret TCP)模式,通过预共享密钥实现端到端访问。
可视化管理
frp 的服务端仪表盘提供了 Web 界面来查看代理状态和流量统计:

客户端也有独立的管理界面,支持在运行时动态创建、更新和删除代理配置,无需重启 frpc。变更支持持久化存储,frpc 重启后自动恢复。
安全与可靠性
frp 在安全方面提供了多种机制:Token 和 OIDC 两种客户端认证方式,支持从外部文件读取 Token;传输层 TLS 加密默认开启;可以限制服务端允许的端口范围防止滥用;HTTP 代理支持 Basic Auth 密码保护。
在可靠性方面,frp 支持 TCP 流多路复用减少连接开销,连接池功能降低短连接场景下的延迟,负载均衡可将请求分发到同一组的多个后端,健康检查机制在服务不可用时自动摘除节点。
frp 还提供了 Prometheus 指标暴露接口,可以接入监控体系观察代理的运行状态。
底层传输上,除了标准 TCP,frp 还支持 KCP 和 QUIC 协议。KCP 以牺牲 10% 到 20% 的额外带宽为代价,换来 30% 到 40% 的平均延迟降低,适合对延迟敏感的场景。
小结
frp 用一套简洁的 C/S 设计解决了内网穿透这个普遍需求。它的优势在于功能覆盖面广,从基础的端口映射到 P2P 直连、负载均衡、虚拟网络,以及完善的认证加密机制。对于个人开发者和团队来说,frp 是一个生产可用的基础设施组件,部署和维护成本都较低。
负载均衡、虚拟网络,以及完善的认证加密机制。对于个人开发者和团队来说,frp 是一个生产可用的基础设施组件,部署和维护成本都较低。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)