知识技巧 - frp
FRP (Fast Reverse Proxy)是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,使用FRP,我们可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转,从而能够从外网访问到公司办公室或者家里的内网电脑和服务。
FRP内网穿透常见的使用场景有很多,比如,通过公网访问内网 Web 服务,电脑远程桌面和 SSH 连接,公网访问内网共享文件,文件备份和同步,等等,用途还是挺多的又实用。我平时使用得最多就是电脑远程桌面、远程连接家里的NAS设备和远程访问共享文件夹。
要使用FRP服务,前提是必须要有一台有公网ip的服务器来做服务中转,比如我们可以去腾讯或阿里选购一台云服务器,价格有很便宜的,FRP穿透服务一般不需要多高的配置,我平时自用的,就选择了阿里的一款经济低价的,99元/年,配置是2核2G,3M固定带宽,40G ESSD,对普通个人来说,这个配置足够了。
具体规格查看这里
https://www.aliyun.com/daily-act/ecs/activity_selection?userCode=dndxx4gn
下面就正式开始部署FRP,先在有公网的主机上下载最新版本的FRP
https://github.com/fatedier/frp/releases
根据自己主机的CPU架构和操作系统类型,下载相对应的最新版本FRP客户端和服务器二进制文件,所有文件都打包在一个压缩包中。比如我的主机是linux系统,x86_64构架的。
在Linux主机上执行如下命令下载v0.61.0版本的FRP文件:
wget https://github.com/fatedier/frp/releases/download/v0.61.0/frp_0.61.0_linux_amd64.tar.gz
或者使用其它电脑下载后,再上传到主机也可以。
下载好文件后,解压缩文件并重命名文件夹为frp0610
tar zxvf frp_0.61.0_linux_amd64.tar.gz && mv frp_0.61.0_linux_amd64 frp0610
然后进入frp0610文件夹,可以看到服务器端和客户端文件,以及它们的配置文件
下面就准备启动主机的frp服务。主机服务器端的配置文件是frps.toml,客户端的配置文件是frpc.toml。比如现在我们要部署一个能通过外网的电脑使用windows远程桌面来远程控制家里或办公室内网电脑的服务,操作步骤如下:
先启动主机服务端的frp服务,其默认端口是7000,我们执行
nano frps.toml
打开frps.toml文件看看,确认一下端口号
然后执行如下命令启动frp服务器:
./frps -c ./frps.toml
frp服务器端的服务启动成功了,下面就要去客户端电脑配置frp客户端的服务了。
先在客户端电脑下载相应的frp版本,我们现在是要能通过外网的电脑使用windows远程桌面来远程控制家里或办公室内网电脑,那么就需要在被控制的客户端windows电脑上下载frp的windows版本,然后解压缩文件,我这里的路径是 "D:\frp0610",你也可以解压到其它路径。
修改frpc.toml文件,格式内容如下:
serverAddr = "xx.xx.xx.xx"
serverPort = 7000
[[proxies]]
name = "pve_sx_win10_RDP"
type = "tcp"
localIP = "192.168.123.13"
localPort = 3389
remotePort = 13389
其中xx.xx.xx.xx填写主机的公网ip,localIP 和 localPort 配置为需要从公网访问的内网服务的地址和端口,3389是windows桌面远程使用的端口号,remotePort 填写在 frp 服务端监听的端口,访问此端口的流量将被转发到本地服务的相应端口。
编辑完客户端的frp的配置文件后,新建一个记事本文件,输入如下内容:
set ws=wscript.createobject("wscript.shell")
ws.run "cmd /c D:\frp0610\frpc -c D:\frp0610\frpc.toml",0
然后另存为run.vbs文件
再双击运行这个run.vbs文件,就可以在后台运行frp客户端服务了,在“任务管理器”中能查看到 "frpc.exe"进程。
到这里frp客户端的服务也运行成功了。现在就使用外网的一台电脑,打开“远程桌面”,输入要公网主机的ip和端口号,点击“连接”,就能连接远程到内网的这台被控端电脑了。
如果frp服务端主机需要在后台长期运行,就需要使用 systemd 来管理 frps 服务,这样可以方便地操作frps 服务的启动、停止、配置后台运行和设置开机自启动。
具体的操作步骤如下:
1.创建 frps.service 文件,用于配置 frps 服务
nano /etc/systemd/system/frps.service
输入如下内容:
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /root/frp0610/frps -c /root/frp0610/frps.toml
[Install]
WantedBy = multi-user.target
Ctrl+O保存文件,Ctrl+X退出
2.启动 frps 服务
systemctl start frps
3.设置 frps 开机自启动
systemctl enable frps
这样,我们就能够轻松地使用 systemd 来管理 frps 服务了,frps服务端程序会在后台一直运行。