前言
突发奇想,之前购买了一个阿里云的 oss,虽然不贵,但是下载文件也需要收费的,拿着 oss 当作备份盘感觉有点浪费,最主要需要花钱,还是按流量计费的,所以脑中孵化了个 idea
想法:通过电脑搭建 FTP 文件存储,再通过 FRP 内网穿透结合一下,是不是就可以实现云存储了。带着这个疑问开始百度,结果百度有做成的案例,借鉴了一下别人的方法试了一下。
搭建前准备
必须有个电脑,并且可以正常上网的,再就是有个自己的服务器,服务器需要单独公网 IP 的
搭建 FTP
搭建 FTP 的方法我就不在多说了,网上有很多集成的软件。
举个例子:PhpStudy FileZilla 等..
搭建 FRP
FRP 分为 frps(服务端)fprc(客户端),两部分来实现,frps(服务端)需要搭建在服务器上,fprc(客户端)放在电脑上。
FRP 项目地址:https://gitee.com/yijicai/frp
1.frps 在项目上下载下来,放在服务器上,分为两个文件,一个 frps 和 frps.ini,我们只需要配置 frps.ini 即可,首先下载完上次到服务器,打开 frps.ini,输入以下配置
# frps.ini [common] bind_port = 7000
- [common] 这个是名称,可以随意填写
- bind_port 是通信端口( 不要与穿透生成的端口一致 )
2. 启动 frps:
./frps -c ./frps.ini
配置 frpc
1. 下载 frpc,也是两个文件,一个是 frpc 和 frpc.ini,与 frps 一样,我们需要配置 frpc.ini,打开输入一下配置
# frpc.ini [common] server_addr = x.x.x.x server_port = 7000 [ftp] type = tcp local_ip = 127.0.0.1 local_port = 21 remote_port = 2121 [ftp1] type = tcp local_ip = 127.0.0.1 local_port = 50000 remote_port = 50000 [ftp2] type = tcp local_ip = 127.0.0.1 local_port = 50001 remote_port = 50001 [ftp3] type = tcp local_ip = 127.0.0.1 local_port = 50002 remote_port = 50002
- server_addr= 公网 IP(服务器 IP 地址)
- server_port= 通信端口(与上面的 frps 服务端一致)
- local_ip= 需要穿透本地的地址 local_port= 穿透本地的端口(搭建 ftp 的电脑端口)
- remote_port= 映射的端口
2. 启动 frpc:
./frpc -c ./frpc.ini
这样就搭建完成的,服务端与本地端口检查是否都正常放开,如果是阿里云服务器请检查本地端口和阿里云防火墙是否正常放开通行。
常见问题:
- 搭建完无法访问,请检查映射是否通,本地启动 frpc 会有回应的命令。
- FTP 搭建完通了,但是提示 225 200 等错误代码,请使用 FTP 工具访问。
- FTP 是分两部分端口的,主动端口默认是 21,映射的端口是 2121,被动端口可自定义,上面的写的是 50000-50002,可通过 FTP 软件修改。
- 如果是 win 搭建的 FTP,启动 frpc 时使用 cmd,并修改启动路径,一般默认是放 C 盘根目录,可自定义。
- 搭建 frp 不成功可通过官网项目查看操作文档及说明,举一反三,自行研究,也可评论区留言。
如用宝塔的面板可在面板直接使用 frps 服务端插件和 FTP 存储空间插件,来实现定时备份网站文件到 FTP。
扩展功能
frps 与 frpc 通信可进行加密,也可以搭建各种的端口的穿透。可实现的功能很多,比如近期疫情远程办公,公司内网的系统外网无法访问,可进行内网映射到外网,网站默认的端口是 80 或 443,非维护或技术人员切勿乱用,避免把公司的内网系统映射导致攻击或泄露。
服务端和客户端的 common 配置中的 token
参数一致则身份验证通过。举例:token = 123
实现原理
原文链接:https://www.zyx.company/1087.html