简介:
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
原文链接:https://blog.csdn.net/zuiyuewentian/article/details/135604005