前言
本文主要介绍:
- 对frp的工作原理和配置方法的感性理解
- 我的搭建实例
希望帮助初学者快速上手,建立感性认识。适合想要接触内网穿透、不理解frp官方文档、有前后端协同调试需求的同学。需要读者有一定的计算机素养,接触过github和云服务器。
工作原理
了解frp的工作原理可以更好的理解其使用方法。成功的关键是分辨压缩包中的服务端和客户端、写好配置文件以及正确启动程序。
简介
以下摘自官方文档,
frp 主要由两个组件组成:客户端(frpc) 和 服务端(frps)。通常情况下,服务端部署在具有公网 IP 地址的机器上,而客户端部署在需要穿透的内网服务所在的机器上。
由于内网服务缺乏公网 IP 地址,因此无法直接被非局域网内的用户访问。用户通过访问服务端的 frps,frp 负责根据请求的端口或其他信息将请求路由到相应的内网机器,从而实现通信。
对上述的一个感性认识是,假设我们已经搭建好了内网穿透,那么发给服务器的请求将被转发给你的电脑,你的电脑处理请求后,再将结果返回给服务器。云服务器和你的电脑就像是“前店后厂“的关系,服务器是”店“,电脑是”厂“。
压缩包
从官方Github的release中下载的压缩包中包含frpc
和frps
,以及各它们对应的配置文件frpc.toml
和frps.toml
。
步骤
下载并解压压缩包
访问官方github仓库,在release处下载对应系统的软件压缩包。
官方将服务端和客户端按运行系统打包。例如,将运行在windows64位上的frp服务端frps
和客户端frpc
打包为frp_0.58.1_windows_amd64.zip
。
配置
在服务端配置 frps.toml
bindPort = 7000
在客户端配置 frpc.toml
serverAddr = "x.x.x.x"
serverPort = 7000
[[proxies]]
name = "your-name"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000
下面对配置文件作出解释。
首先,服务端和客户端需要先建立连接,才能正常工作。也就是说,服务端要有用来建立连接的端口bindPort
;客户端需要知道服务端在哪儿,也就是服务端的地址——公网IPsercerAddr
,以及对接服务端的哪个端口serverPort
。
连接成功之后,就需要确定具体的服务内容了。即,需要服务端将发送到remotePort
端口的请求转发给客户端的localPort
端口。
启动程序
每次更改配置后,都需要重新启动程序。
测试
进行测试。
安装实例
设备环境
腾讯云 CentOS 7.6 64bit
mac os Ventura 13.6.1
操作
我将自己的服务器作为服务端,mac作为客户端。
我从Github上下载了frp_0.58.1_darwin_arm64.tar.gz
和frp_0.58.1_linux_arm64.tar.gz
。
然后,将frp_0.58.1_linux_arm64.tar.gz
上传到服务器上并解压,修改frps.toml
bindPort = 7000
接着,把mac上的frp_0.58.1_darwin_arm64.tar.gz
解压,修改frpc.toml
serverAddr = "1.14.104.53"
serverPort = 7000
[[proxies]]
name = "test-tcp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3200
remotePort = 7001
最后,启动程序。在mac的终端上,进入frp所在的文件夹下,并执行frpc
cd ~/my-destop/project/frp_0.54.0_darwin_arm64
./frpc -c frpc.toml
在服务器上也做类似操作,
./frps -c frps.toml
观察到终端上的表示成功的提示信息,大功告成。
注意事项
如果在 CentOS 上使用了Apache、Nginx,需要注意端口的监听重复问题。如果难以解决,可以直接关闭Apache、Nginx。