搭建背景

为什么要搭建frp呢?
因为在学习springcloud微服务的时候,不同模块需要的环境比较多例如zookeeper,nacos,consul,mysql等等本人有台闲置的3G内存的vps,正好用于搭建所需的外部环境,但是在测试consul的时候,由于consul(在vps)需要给注册进来的服务发送http请求获取状态信息。但是服务是部署在我本地电脑上的,导致注册进去的服务被认为不可用(获取不到状态信息)。原本想直接通过路由器的dmz功能直接实现,后来发现md,路由器的获取到竟然是一个大内网的ip。没有直接的公网ip此路不通。所以通过下文搭建frp实现内网穿透,来对外提供本地电脑上的应用对外提供访问。

相关资源下载地址

  • https://github.com/fatedier/frp 【frp github】
  • https://cloud.521456.xyz/github/fatedier/frp/releases 【下载对应操作系统版本,服务端&客户端】

服务端搭建(centos7)

#安装wget工具
yum install wget
#下载压缩包
wget https://github.com/fatedier/frp/releases/download/v0.39.1/frp_0.39.1_linux_386.tar.gz
#解压文件
tar -xvzf frp_0.39.1_linux_386.tar.gz
#进入到解压文件内
cd frp_0.39.1_linux_386.tar.gz
#修改服务端配置文件
vim frps.ini

服务端配置文件如下

[common]
#frp服务端口
bind_port = 7000
# frp服务的管理页面端口
dashboard_port = 7500
# frp服务管理员账号
dashboard_user = root
# frp服务管理员密码
dashboard_pwd = admin
# 客户端验证密码(可选)如选择,客户端必须与其保持一致
#token = 123456

执行完以上步骤之后,启动服务端,通过-c参数指定配置文件

./frps -c ./frps.ini   #这种启动方式该终端会被占用,关掉终端服务也会被关闭
nohup ./frps -c frps.ini & #这个命令启动会以后台的形式运行,打印的日志会在当前目录下的nohup.txt
cat nohup.txt #可以通过查看这个文件日志,是否启动成功

这里还要注意一点,如果vps开启了防火墙需要放行一下对应得端口,否则无法访问
可以通过这个网站查看一下,是否端口已成功开启

http://coolaf.com/tool/port

centos7放行命令,其他系统自行百度

iptables -nv -L 查看要添加到的链的名字
我这里是IN_public_allow
iptables -A IN_public_allow -p tcp --dport 7500 -j ACCEPT
iptables -A IN_public_allow -p udp --dport 7500 -j ACCEPT
iptables -A IN_public_allow -p tcp --dport 7000 -j ACCEPT
iptables -A IN_public_allow -p udp --dport 7000 -j ACCEPT

访问http://ip:7500 没有文件可以正常打开web管理界面
至此服务端frps搭建完毕

搭建客户端(windows10)

下载windows10的frp压缩包,然后解压
编辑配置文件frpc.ini

[common]
server_addr = 198.211.49.131
server_port = 7000
#token = 123456

[consumer]
#类型http就是tcp
type = tcp
#本机局域网的ip
local_ip = 192.168.3.5
#本机提供服务的端口
local_port = 9090
#访问vps的端口      访问vps:9090  等同于 本机:9090
remote_port = 9090

#可以配置多个,[payment]名称要不一样,这里配置两个
[payment]
type = tcp
local_ip = 192.168.3.5
local_port = 8085
remote_port = 8085

启动
.\frps.exe -c .\frps.ini

打印如下,代表成功连接
2022/03/06 11:45:50 [I] [control.go:181] [738f5d794053c5fe] [consumer] start proxy success
2022/03/06 11:45:50 [I] [control.go:181] [738f5d794053c5fe] [payment] start proxy success

当时使用remote_port使用8080报一下错误
start error: port unavailable
这个问题,应该是服务端端口被占用,查看一下是否vps端有其他程序占用该端口或者更换为其他端口

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐