1.FRP介绍
1.frp是什么
frp 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。
2.为什么选择frp
通过在具有公网 IP 的节点上部署 frp 服务端,您可以轻松地将内网服务穿透到公网,并享受以下专业特性:
多种协议支持:客户端服务端通信支持 TCP、QUIC、KCP 和 Websocket 等多种协议。
TCP 连接流式复用:在单个连接上承载多个请求,减少连接建立时间,降低请求延迟。
代理组间的负载均衡。
端口复用:多个服务可以通过同一个服务端端口暴露。
P2P 通信:流量不必经过服务器中转,充分利用带宽资源。
客户端插件:提供多个原生支持的客户端插件,如静态文件查看、HTTPS/HTTP 协议转换、HTTP、SOCKS5 代理等,以便满足各种需求。
服务端插件系统:高度可扩展的服务端插件系统,便于根据自身需求进行功能扩展。
用户友好的 UI 页面:提供服务端和客户端的用户界面,使配置和监控变得更加方便。
2.搭建步骤
搭建FRP(Fast Reverse Proxy)内网穿透服务器可以让你在外网访问处于内网中的设备或服务。
下面是详细的步骤:
1.准备工作
- 准备一台具有公网IP的服务器:这是用来部署FRP服务端的。
- 内网设备:这是你需要穿透的内网设备,安装FRP客户端。
2.安装和配置FRP服务端
-
下载FRP:
访问FRP的GitHub页面,下载最新版本的FRP。
这里需要根据你云服务器的架构来确定选择下载哪一种FRP二进制文件,具体可以登录进入云服务器,输入命令:uname -m
然后根据输出结果选择合适的FRP版本:
x86_64
则选择amd64版本
而armv7l
或aarch64
则选择arm64版本 -
解压文件:
假设你下载的是amd64版本的,具体解压命令如下所示:tar -zxvf frp_0.58.1_linux_amd64.tar.gz cd frp_0.58.1_linux_amd64
-
配置FRP服务端(frps.ini):
在解压目录下,创建或编辑frps.toml
文件:bindPort = 7000
-
运行FRP服务端:
./frps -c frps.toml
如果想以后台的方式运行frp服务器,则可以输入命令:
nohup ./frps -c frps.toml >frps.log 2>&1 &
-
查看运行效果:
3.安装和配置FRP客户端
-
下载FRP:
访问FRP的GitHub页面,下载最新版本的FRP。 -
解压文件:
tar -zxvf frp_0.58.1_linux_amd64.tar.gz cd frp_0.58.1_linux_amd64
-
配置FRP客户端(frpc.ini):
在解压目录下,创建或编辑frpc.toml
文件,根据你的需求进行配置。以下是一个简单的示例,用于内网穿透:serverAddr = "x.x.x.x" serverPort = 7000 [[proxies]] name = "ssh" type = "tcp" localIP = "127.0.0.1" localPort = 22 remotePort = 6000
localIP
和localPort
配置为需要从公网访问的内网服务的地址和端口。serverAddr
就是你的公网服务器的IP地址。remotePort
表示在 frp 服务端监听的端口,访问此端口的流量将被转发到本地服务的相应端口。
这里需要注意,客户端配置的remotePort端口需要在云服务器上开放相应的端口,否则启动客户端后是无法连接成功的。 -
运行FRP客户端:
./frpc -c frpc.toml
同样的,如果想以后台的方式运行,输入以下命令即可:
nohup ./frpc -c frpc.toml >frpc.log 2>&1 &
4.访问内网机器
内网穿透成功后,使用以下命令即可以通过SSH访问内网机器,假设用户名为root:
ssh -o Port=6000 root@x.x.x.x
frp 将请求发送到 x.x.x.x:6000 的流量转发到内网机器的 22 端口
5.参考链接
- FRP GitHub仓库
- FRP文档
- FRP中文文档
这样,你就成功搭建了一个FRP内网穿透服务器。
根据你的需求,你可以进一步配置和优化FRP的设置。