简介:

FRP 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https
应用协议提供了额外的能力,且尝试性支持了点对点穿透。名称其实就是使用了 Fast Reverse Proxy 的首字母缩写。

需求:

有一台链接了家里路由器的微服务器,可以访问外网,但是人在外面,无法通过外网链接到服务器,也没办法访问内网服务器上部署的私有云网盘。需要打通外网访问内网路由器。

原理介绍:

  • 需要一台外网的云服务器,有固定IP
  • 需要一个域名,二级域名也可以,能解析到固定IP,配置http访问的时候需要用到

需要在云服务器上部署服务端,即frps,在内网服务器部署客户端,frpc。
我的服务器都是centos操作系统的,不同系统请在github上下载对应版本。然后配通接口即可。

注意:frp下载下来就包含客户端和服务端版本

在这里插入图片描述

配置内容:

服务器端:

准备放开1个代理接口,1个http接口,1个https接口,按需来配,这里我不用https,所以没有配置,就开放了2个端口。
注意:需要云服务器配置放开这些端口

[common]
bind_port = 8001 #绑定的代理端口
vhost_http_port = 8002 #http端口
auth_token = 123 #客户端一致的密码

log_file = ./frps.log #日志,方面查看错误

在这里插入图片描述

客户端:

common配置绑定server的端口
x.x.x.x是指服务器的IP
frp.yourdomainname.com是需要填你自己以及绑好的域名

ssh是配置ssh远程链接的,请把本地服务器8003端口放开,22端口也要放开
web01是你的网站,对应的5000端口也要放开

[common]
server_addr = x.x.x.x
server_port = 8001
auth_token = 123 #需要和服务器一样
process_keepalive_interval = 60 #进程保护,间隔多久检测
restart_delay = 1 #重启时间

log_file = ./frpc.log

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 8003 #需要开放这个端口

[web01]
type = http
local_ip = 0.0.0.0
local_port = 5000
use_encryption = false
use_compression = true
header_X-From-Where = frp
custom_domains = frp.yourdomainname.com

在这里插入图片描述

说明下数据走的流程,ssh连到云服务器ip后走8001访问绑定的客户端,找到对应8003这个服务,然后走22这个端口
http同理,通过域名找到对应的服务端口访问

测试连接是否成功

ssh root@x.x.x.x -p 8003

部署centos代码:

下载:如果没法连到github下载,可以本地先通过地址下载再传上去

wget https://github.com/fatedier/frp/releases/download/v0.32.1/frp_0.32.1_linux_amd64.tar.gz

解压:

tar -xvf frp_0.32.1_linux_amd64.tar.gz

根据以上配置内容在配置好

在路径/usr/local创建文件夹frp,所有内容移植到此目录

添加执行权限: 确保 /usr/local/frp/frps 文件有执行权限。如果是客户端对应要执行frpc

chmod +x /usr/local/frp/frps

配置systemctl来控制运行
vim打开文件 vim /usr/lib/systemd/system/frp.service 写入以下内容,注意上文的路径和此处有关。这里是启动的服务端,客户端类似,注意修改运行程序

[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=simple
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
StandardOutput=syslog
StandardError=inherit

[Install]
WantedBy=multi-user.target

重新加载服务的配置文件

systemctl daemon-reload 

用 systemctl 套装来控制FRP
启动,停止,重启,查看状态,设置开机自启,关闭开机自启

systemctl start frp 
systemctl stop frp
systemctl restart frp
systemctl status frp
systemctl enable frp
systemctl disable frp

执行即可完成!

PS:注意服务器和客户端都需要这样操作一遍,注意执行主体,服务器端是对应frps,客户端对应frpc

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐