《参考地址》
fatedier/frp是一款开源的主要使用Go语言开发的内网穿透工具。主要分为服务端(frps)和客户端(frpc)。
简单理解:服务端(frps)就是部署到公网ip服务器提供给客户端(frpc)调用的,服务端(frps)可以理解为我们微服务当中的注册与服务发现中心,即:Eureka、Nacos、ZooKeeper。客户端(frpc)就是我们需要注册到注册与服务发现中心的SpringBoot项目或者其它项目等。
作用:通过公网IP:PORT调用我们内网的项目、远程桌面、代理服务器、通过代理服务器把数据存储到本地服务器等。
条件:需要一台公网IP的云服务器。

以下命令默认以root用户执行,如果不是root用户,请在前面加sudo再执行命令。

官网地址

《fatedier/frp GitHub官网地址》

公网服务器安装服务端(frps)

《下载对应操作系统的压缩包》
如:centos76位操作系统,则下载:frp_0.51.3_linux_amd64.tar.gz
不确定是多少位操作系统的,用以下命令查看

uname -a

Linux VM-8-4-centos 3.10.0.1.el7.x64 #1 SMP Tue Mar 7 15:41:52 UTC 2023 x64 GNU/Linux

在这里插入图片描述

使用其它用户安装frps

假设你有一个不是超级管理员的meta39用户

sudo mkdir -p /data/frp
sudo chown -R meta39:meta39 /data/frp

Linux服务器通过wget命令直接下载

如果Linux服务器下载速度慢,也可以先下载到本地,通过文件上传到Linux服务器。
命令

wget [URL] -P [路径]

创建/data/download并把文件下载到目录下

mkdir -p /data/frp/download
wget https://github.com/fatedier/frp/releases/download/v0.51.3/frp_0.51.3_linux_amd64.tar.gz -P /data/frp/download

解压

命令

tar -xvf 文件名.tar -C 目标路径

解压到data目录下并改名位frp

tar -zxvf /data/frp/download/frp_0.51.3_linux_amd64.tar.gz -C /data/
mv /data/frp/download/frp_0.51.3_linux_amd64 /data/frp
cd /data/frp/ && ll

修改frps配置文件

vi /data/frp/frps.ini
[common]
# frp监听的端口,默认是7000(无特殊要求可以不改,这个必须开放对应端口。云服务器一般在对应的云控制台开放端口,默认的Linux服务器的防火墙是关闭的,如果有防火墙,那么防火墙也要开放相应的端口。)
bind_port = 7000
# 临时凭证,越复杂越好。推荐使用2个去除-的UUID。
token = UUID

# frp日志配置
log_file = /data/frp/log/frps.log
# 日志级别
log_level = error
# 日志保存天数
log_max_days = 7

启动frps

因为frps没用后台启动命令,因此我们自己编写一个。

vi /lib/systemd/system/frps.service
[Unit]
Description=frps service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
#ExecStartf分别对应frps的安装路径和配置文件路径
ExecStart=/data/frp/frps -c /data/frp/frps.ini

[Install]
WantedBy=multi-user.target

启动并设置开机启动

systemctl start frps && systemctl enable frps

停止

systemctl stop frps

重启

systemctl restart frps

查看是否启动成功

systemctl status frps

在这里插入图片描述

如果无法连接到服务端,请检查防火墙是否开启。

Window安装客户端(frpc)

下载前面图片上的Windows压缩包即可。
如:Windows10 64位操作系统,则下载:frp_0.51.3_windows_amd64.zip进行解压。

解压

解压到D:/software/frp,也可以是其它位置。保留frpc相关文件,删除frps相关文件。
在这里插入图片描述

修改frpc配置文件

[common]
# 公网IP地址
server_addr = x.x.x.x
# 默认是7000
server_port = 7000
# 临时凭证(必须跟上面frps服务端token一致)
token = UUID

#登录失败退出
login_fail_exit = false

#自定义客户端服务别名
[springboot]
# 请求类型
type = tcp
#本地ip地址
local_ip = 127.0.0.1
#本地映射端口号
local_port = 8081
#服务端映射端口号(这里只是演示,所以用80,而且80也是默认是开放的。)
remote_port = 80

使用WinSW第三方工具启动并设置开机启动

《GitHub WinSW地址》
在这里插入图片描述
把下载的WinSW放到frp目录下重命名winsw.exe
在这里插入图片描述
新建winsw.xml

<service>
	<!-- 应用ID唯一 -->
	<id>frpc</id>
	<!-- 应用名称 -->
	<name>frpc</name>
	<!-- 应用描述 -->
	<description>frp客户端</description>
	<!-- 执行命令 -->
	<executable>frpc</executable>
	<!-- 执行命令后面追加的参数 -->
	<arguments>-c frpc.ini</arguments>
	<!-- 第1次启动失败的操作,delay启动失败重试间隔时间 -->
	<onfailure action="restart"  delay="10 sec"/>
	<!-- 第2次启动失败的操作,delay启动失败重试间隔时间 -->
	<onfailure action="restart"  delay="10 sec"/>
	<!-- 记录日志 -->
	<log mode="none"/>
</service>

Win + S输入cmd,然后以管理员的身份运行命令提示符进入到frp目录下
安装frpc服务

winsw install

启动frpc服务

winsw start

停止frpc服务

winsw stop

卸载frpc服务

winsw uninstall

xml当中有些操作可能无法实现,如:

<onfailure action="reboot" />

我们要手动去服务设置
Win + S输入“计算机管理”
在这里插入图片描述
右键自己创建的frpc服务=》属性
第三次失败改成重新启动计算机,因为有的时候我们的计算机可能是因为其它问题导致frpc无法使用,所以可以重启计算机让所有服务重新启动。
在这里插入图片描述

新版toml配置

frps.toml

# frps ServerConfig 配置
bindPort = 7000
auth.token = "2个UUID"

# log 日志配置
log.to = "/data/frp/frps.log"
log.level = "error"
log.maxDays = 7
log.disablePrintColor = true

frpc.toml

serverAddr = "你的公网IP或域名地址"
# 公网 frps bindPort 端口
serverPort = 7000

# frps 设置的 auth.token
auth.token = "2个UUID"
# 第一次登陆失败后不退出
loginFailExit = false

[[proxies]]
# 跟其它服务不一样即可
name = "唯一名称"
# 代理类型,可选值为 tcp, udp, http, https, tcpmux, stcp, sudp, xtcp
type = "tcp"
# 本地ip
localIP = "127.0.0.1"
# 本地端口
localPort = 3389
# 公网ip开放的端口
remotePort = 3389
# 是否启用加密功能,启用后该代理和服务端之间的通信内容都会被加密传输,如果 frpc 启用了全局 TLS,则不需要再启用此参数。
transport.useEncryption = true
# 是否启用压缩功能,启用后该代理和服务端之间的通信内容都会被压缩传输。
transport.useCompression = true

查看frps版本

进入到frps目录下

./frps --version

输出版本号

0.58.0

frpc同理

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐