FRP 可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议。
使用场景:公网服务器监听某个端口等待内网服务器连接,内网服务器连接成功后,用户访问公网的某一个端口,访问的所有内容都会转发到内网服务器,也就是所有的请求都会经过公网服务器转发一次,还不是真正的完全内网穿透。
具体一点就是,假如我在家里或者办公室,开发对接微信支付功能,支付成功之后,微信要回调我们的代码,微信肯定访问不到我家里或者办公室里的电脑,因为我的电脑不在公网,我是局域网内,该怎么搞呢?
此时就可以用FRP内网穿透,实施方案就是,购买一台腾讯云服务器或者其他厂家的云服务器,在云服务器上搭建一个FRP服务端,我的电脑上搭建一个FRP的客户端,把FRP服务器的业务端口开放出去,此时告诉微信回调我的FRP服务器业务端口,FRP收到请求之后,在把请求转发到我的电脑上,这样就完成了,支付的回调,也相当于我的局域网,有了一个外网的入口。
我的搭建环境,用于http请求
服务器版本:CentOS Stream 8 64bit
FRP版本:frp_0.46.0_linux 64位
自己电脑:MAC M1
FRP开源项目:https://github.com/fatedier/frp
所有的版本:https://github.com/fatedier/frp/releases
用frp_0.43截图说明一下
服务器执行下载
wget https://github.com/fatedier/frp/releases/download/v0.46.0/frp_0.46.0_darwin_arm64.tar.gz
服务器端直接解压,就可以配置,然后运行
tar -zxvf frp_0.46.0_darwin_arm64.tar.gz
mv frp_0.46.0_darwin_arm64 /usr/local/frp
修改FRP服务器配置
vim frps.ini
[common]
# 用于客户端和服务端连接的端口,自己指定
bind_port = 7342
# 用于客户端和服务端连接的口令,自己指定
token = 18fx9AG*********kx11e
# 服务端仪表板的端口,自己指定
dashboard_port = 7343
# 打开仪表板页面登录的用户名和密码
dashboard_user = aaa
dashboard_pwd = *****
# 这个端口就是服务器开放到外网的,业务端口
vhost_http_port = 8081
也可以跳过配置systemctl,直接用以下命令行启动
cd /usr/local/frp
./frps -c ./frps.ini
服务端配置 systemctl 来控制frps,自启动
vim /etc/systemd/system/frps.service
[Unit]
# 服务名称,可自定义
Description = frps service
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /usr/local/frp/frps -c /usr/local/frp/frps.ini
[Install]
WantedBy = multi-user.target
启动服务端 frps 命令
# 启动frps
systemctl start frps
# 开机自动启动frps
systemctl enable frps
# 重启frps
systemctl restart frps
# 停止frps
systemctl stop frps
# 查看frps状态
systemctl status frps
和服务器的下载是同一个包,相同的解压,不再累述
frpc.ini配置
[common]
# FRP服务器IP,改为自己的服务器IP
server_addr = 43.143.111.11
# FRP服务器bind_port端口
server_port = 7342
authentication_method = token
token = 18fx9AG*********kx11e
[web]
type = http
local_ip = 127.0.0.1
local_port = 8081
remote_port = 8081
# FRP服务器IP,可以不需要域名
custom_domains = 43.143.111.11
命令行执行,/Users/***/Downloads/frp 目录是我的客户端安装目录
/Users/***/Downloads/frp/frpc -c /Users/***/Downloads/frp/frpc.ini
启动成功,客户端命令行会输出以下信息
2023/01/06 11:21:42 [I] [service.go:298] [d4f0e8d8ab60ccf7] login to server success, get run id [d4f0e8d8ab60ccf7], server udp port [0]
2023/01/06 11:21:42 [I] [proxy_manager.go:142] [d4f0e8d8ab60ccf7] proxy added: [web]
2023/01/06 11:21:42 [I] [control.go:172] [d4f0e8d8ab60ccf7] [web] start proxy success
FRP配置完成,启动成功,这样就可以在任何地方,访问
http://43.143.111.11:8081/***
此请求都会转发到你自己的电脑上,
访问下面地址以查看http连接的仪表板
http://43.143.111.11:7343