1.简介——什么是 frp?

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。它是由中国开发者开发的开源项目,旨在为用户提供一个简单易用的内网穿透解决方案。

通常情况下,位于内网中的服务器或设备由于路由器或防火墙的限制(或是没有公网 ip),无法直接被外部网络访问。FRP 通过设置在外网的一个中间服务器(一般称为 FRPS,即 FRP Server),可以将来自公网的请求转发到内网中的目标机器(一般称为 FRPC,即 FRP Client)上运行的服务,从而实现从外网访问内网服务的效果。

2.原理:

下面的架构图展示了 frp 的运行原理,用户通过 frps 来访问暴露到公网的不同的内网服务。

img

简单地说,frp 就是将一个网络中(通常是内网)的端口代理到了另一个网络(通常是公网)中,打通了两个网络,实现了两个网络间的通信。

而这一通信建立在一台能同时访问两个网络服务的主机上,这台主机上的 frps 服务就是通信的桥梁。

3.使用 FRP 进行内网穿透的一般步骤如下:

  1. 在具有公网 IP 的服务器上部署 FRPS。
  2. 在需要暴露服务的内网主机上部署 FRPC,并配置要穿透的服务信息(如本地服务地址和端口)。
  3. 配置 FRPS 和 FRPC 之间的通信参数,比如 token 用于身份验证。
  4. 启动 FRPS 和 FRPC,使它们建立连接。
  5. 通过 FRPS 提供的公网地址和端口访问内网服务。

4.FRP 和 Nginx 的异同:

相同点

  • 代理服务:两者都可以作为代理服务器来使用。Nginx 可以用于反向代理和负载均衡,而 FRP 也可以将内部网络的服务暴露给外部网络,起到代理的作用。

不同点

  • Nginx:可以代理本机或者同一内网下的其他机器的服务。它是一个高性能的 HTTP/HTTPS 反向代理和负载均衡器,同时也支持 TCP/UDP 代理。
  • FRP:采用客户端-服务器(C/S)架构,FRPS(服务端)通常部署在外网,而 FRPC(客户端)则通常部署在内网。FRP 能够穿透 NAT 或防火墙,使得没有公网 IP 的服务器也能够被外界访问。

5.常见应用场景:

1.临时使用 frp 将本机服务穿透到公网,供互联网上的用户访问;

2.临时使用 frp 将一个内网的服务,暴露到另一个内网,供另一个内网的用户访问;

官方下载地址:https://github.com/fatedier/frp/releases