简介
frp(Fast Reverse Proxy)是一个专注于内网穿透的高性能反向代理应用,可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
它采用 C/S 模式,将服务端部署在具有公网 IP 的机器上,客户端部署在内网或防火墙内的机器上,通过访问暴露在服务器上的端口,反向代理到处于内网的服务。 在此基础上,frp 支持 TCP, UDP, HTTP, HTTPS 等多种协议,提供了加密、压缩,身份认证,代理限速,负载均衡等众多能力。此外,还可以通过 xtcp 实现 P2P 通信。
注意:将内网服务暴露至公网时需要谨慎考虑安全性,确保要有适当的身份验证和访问控制,以防止未经授权的访问。
首次用户
-
使用
x env use frp 即可自动下载并使用- 在终端运行
eval "$(curl https://get.x-cmd.com)" 即可完成 x 命令安装, 详情参考 x-cmd 官网
- 在终端运行
-
x-cmd 提供1分钟教程,其中包含了 frp 命令常用功能的 demo 示例,可以帮你快速上手 frp 。
-
使用案例:
# 安装 frp x env use frp # 配置 TCP 类型的代理,使用户能够访问内网服务器 # 创建公网服务器端 frp 配置文件,如下述 frps.ini 文件: [common] bind_addr = 0.0.0.0 bind_port = 7000 # 在公网服务器上运行 frps frps -c ./frps.ini # 创建内网客户端 frp 配置文件,如下述 frpc.ini 文件: [common] server_addr = your_server_ip server_port = 7000 [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6000 # 在内网机器上运行 frpc frpc -c ./frpc.ini # 通过 SSH 访问内网机器,假设用户名为 test ssh -o Port=6000 test@your_server_ip
功能特点
- 支持多种协议支持:客户端服务端通信支持 TCP、QUIC、KCP 和 Websocket 等多种协议。
- TCP 连接流式复用:在单个连接上承载多个请求,减少连接建立时间,降低请求延迟。
- 端口复用:多个服务可以通过同一个服务端端口暴露。
- P2P 通信:流量不必经过服务器中转,充分利用带宽资源。
- 客户端插件:提供多个原生支持的客户端插件,如静态文件查看、HTTPS/HTTP 协议转换、HTTP、SOCKS5 代理等,以便满足各种需求。
- 服务端插件系统:高度可扩展的服务端插件系统,便于根据自身需求进行功能扩展。
- 用户友好的 UI 页面:提供服务端和客户端的用户界面,使配置和监控变得更加方便。
竞品和相关作品
- ngrok: 另一个创建安全本地隧道的流行工具,提供类似于 frp 的功能。
- SSH Tunnel: SSH 隧道也可用于创建安全连接和端口转发。
进一步探索
- frp 源代码 - frp 项目的源代码托管在 GitHub,你可以在这里找到最新版本的 frp 和参与社区贡献。
- Getting started: frp - 官方提供的 frp 快速上手文档,内容详实,包含多个常见的使用场景和配置示例。