说明:frp(https://github.com/fatedier/frp) 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。(官方语)
本文介绍如何使用frp,借助阿里云公网IP访问内网应用。
下载
frp分客户端和服务器端,服务器端部署在有公网IP的阿里云服务器上,客户端部署在需要被穿透的内网设备上。
首先,去Github上(https://github.com/fatedier/frp/releases)下载程序包,我的阿里云服务器是CentOS 7,客户端设备是Windows系统,需要下载以下两个包。
一份留本地,一份上传到阿里云服务器上。
服务器端
花开两朵,各表一枝。先讲阿里云服务器上的这个,解压后如下:
frp程序包文件结构非常简单,解压后就这五个文件,两个执行程序,两个配置文件,分别对应客户端、服务器端,剩余一个是开源协议。
阿里云上我们只用得上frps,即frp服务器端,默认使用的端口是7000
,输入./frps
启动frp服务器。
客户端
frp客户端解压后如下
客户端只用启动frpc.exe
,对应的配置文件内容如下:
properties
serverAddr = "127.0.0.1"
serverPort = 7000
[[proxies]]
name = "test-tcp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000
这个配置文件需要根据需要修改,其中
-
serverAddr,是阿里云公网IP;
-
serverPort,是阿里云上frps的绑定端口,默认7000;
-
localIP,是内网穿透的本地IP,设置127.0.0.1即可;
-
localPort,本地端口,与remotePort对应;
-
remotePort,远程端口,即部署frps的公网IP端口;
最后两个端口设置,表示使用阿里云公网IP:远程端口,映射的本地的什么端口。下面通过一个例子实践一下。
XXL-JOB
现在,我本地有个xxl-job-admin,可在浏览器上输入http://127.0.0.1:8080/xxl-job-admin/
进入xxl-job任务调度中心,如下:
我现在用内网穿透技术frp,将这个应用通过阿里云公网IP映射出去,通过阿里云的公网IP访问到我本地内网下的这个xxl-job任务调度中心。
frpc配置文件frpc.toml
设置如下:
properties
serverAddr = "公网IP"
serverPort = 7000
[[proxies]]
name = "test-tcp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8080
remotePort = 6001
其中,最后两行表示使用公网IP:6001
可访问到127.0.0.1:8080
,设置完成后,输入下面的命令启动frpc.exe
powershell
frpc.exe -c frpc.toml
启动完之后,使用http://公网IP:6001/xxl-job-admin/
访问xxl-job任务调度中心,如下:
(注:如果无法访问,需考虑阿里云服务器7000、6001端口是否已开放)
大功告成,这个地址发给其他人,其他人就能访问你本地内网的xxl-job任务调度中心了。
总结
本文介绍了如何使用frp,实现内网穿透,借助公网IP访问内网的xxl-job任务调度中心。除此之外,如果你和前端同事联调接口,但是你们不在同一个网络下,网络不通,就能通过这种方式,配置一个公网IP地址给前端,这样就可以访问了,当然前提是你需要有一个有公网IP的服务器。
更多参考frp中文文档:https://gofrp.org/zh-cn/docs/
本文参考:使用frp实现内网穿透教程