简介:
FRP 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。名称其实就是使用了 Fast Reverse Proxy 的首字母缩写。
需求:
有一台链接了家里路由器的微服务器,可以访问外网,但是人在外面,无法通过外网链接到服务器,也没办法访问内网服务器上部署的私有云网盘。需要打通外网访问内网路由器。
原理介绍:
- 需要一台外网的云服务器,有固定IP
- 需要一个域名,二级域名也可以,能解析到固定IP,配置http访问的时候需要用到
需要在云服务器上部署服务端,即frps,在内网服务器部署客户端,frpc。 我的服务器都是centos操作系统的,不同系统请在github上下载对应版本。然后配通接口即可。
注意:frp下载下来就包含客户端和服务端版本
配置内容:
服务器端:
准备放开1个代理接口,1个http接口,1个https接口,按需来配,这里我不用https,所以没有配置,就开放了2个端口。 注意:需要云服务器配置放开这些端口
csharp
[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端口也要放开
csharp
[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同理,通过域名找到对应的服务端口访问
测试连接是否成功
csharp
ssh root@x.x.x.x -p 8003
部署centos代码:
下载:如果没法连到github下载,可以本地先通过地址下载再传上去
csharp
wget https://github.com/fatedier/frp/releases/download/v0.32.1/frp_0.32.1_linux_amd64.tar.gz
解压:
csharp
tar -xvf frp_0.32.1_linux_amd64.tar.gz
根据以上配置内容在配置好
在路径/usr/local创建文件夹frp,所有内容移植到此目录
添加执行权限: 确保 /usr/local/frp/frps 文件有执行权限。如果是客户端对应要执行frpc
csharp
chmod +x /usr/local/frp/frps
配置systemctl来控制运行 vim打开文件 vim /usr/lib/systemd/system/frp.service 写入以下内容,注意上文的路径和此处有关。这里是启动的服务端,客户端类似,注意修改运行程序
csharp
[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
重新加载服务的配置文件
csharp
systemctl daemon-reload
用 systemctl 套装来控制FRP 启动,停止,重启,查看状态,设置开机自启,关闭开机自启
csharp
systemctl start frp
systemctl stop frp
systemctl restart frp
systemctl status frp
systemctl enable frp
systemctl disable frp
执行即可完成!
PS:注意服务器和客户端都需要这样操作一遍,注意执行主体,服务器端是对应frps,客户端对应frpc