树莓派私有网盘全攻略(一):宽带外网访问

树莓派私有网盘全攻略(一):宽带外网访问_第1张图片
最终效果图

最终效果如上图所示,可以通过域名,在外网访问家中的私有网盘。
可以自动同步手机文件和账户管理等。
本篇文章没有高深的东西,都是简单知识点。但是涉及面比较多,包括:网络知识爬虫解析定时任务域名解析LinuxPythonDocker

搭建私有网盘步骤:

  1. 宽带的外网访问(本篇文章)
  2. 树莓派私有网盘全攻略(二):Docker+NextCloud+Nginx
  3. 导入已有的资源和WebDAV使用

外网要访问家庭网络中的设备,需要花费一些精力。
但是折腾好了以后,就相当于有了一个小服务器,用来跑跑测试程序,还是很不错的。

准备条件:
1. 树莓派一个

当然,理论上所有计算机都可以,只是树莓派方便一些。

2. 需要有一个公网IP

IP地址分为公网IP私有IP。公网IP需要给运营商打电话索取,一般情况下,运营商会免费给你家网络分配一个动态的公网IP。如果没有公网IP,那么就比较麻烦了。

3. 最好绑定一个域名

运营商给你分配的外网IP是动态的。真正用起来,限制比较多。所以最好绑定一个域名来使用。这个时候只需要在IP变动以后,及时更新域名的解析,就可以完美的解决动态地址带来的不方便。

正文开始

整体思路:利用家里的路由器,映射端口到外网。然后通过域名解析服务API,及时更新动态IP与域名的映射关系。就可以实现外网域名访问家中的设备。

路由器设置

1. MAC地址与IP绑定(非必须)

将家庭网络中的树莓派设置成固定的IP,方便下一步中,端口映射设置。
登录TPLink的管理界面 【应用管理】 --【IP与MAC绑定】
我这里将 树莓派的IP固定为 192.168.0.200

树莓派私有网盘全攻略(一):宽带外网访问_第2张图片
TPLink设置界面截图

2. 映射端口到外网

登录TPLink的管理界面 【应用管理】 --【虚拟服务器】
将需要映射到外网的端口,添加到列表中。


树莓派私有网盘全攻略(一):宽带外网访问_第3张图片
TPLink设置界面截图

常见的端口说明:

端口 服务 说明
21 FTP FTP 服务所开放的端口,用于上传、下载文件
22 SSH SSH 端口
23 Telnet Telnet 端口
80 HTTP 用于 HTTP 服务
443 HTTPS 用于 HTTPS 服务
3306 MySql MySql对外提供服务
5900+ VNC 树莓派远程桌面VNC端口
6800 Aria2 远程管理Aria2
9000 portainer portainer默认端口

域名与IP映射(关键)

这里有两种方法实现。

方法1(简单):

方法1的思路是,利用tplink路由器提供的DDNS功能,将本地的公网IP映射到 xxx.tpddns.cn(前提是已经有了公网的IP)。
然后将自己的域名,再指向 xxx.tpddns.cn 就可以实现域名访问了。


树莓派私有网盘全攻略(一):宽带外网访问_第4张图片
首先,创建一个子域名

树莓派私有网盘全攻略(一):宽带外网访问_第5张图片
再次,登上阿里后台,修改域名指向

方法2(复杂):

方法2的实现方式,需要参考购买的域名服务商。
我购买的是万网域名,所以使用阿里云提供的服务。
进入阿里云API平台,找到【域名与网站(万网)】--【云解析】--【API文档】
这里详细说明了,如何使用阿里云提供的API,修改域名解析记录的方法。

同时可以前往阿里云API平台查看Java、Node.js、Go、PHP、Pythons实例代码,支持填写参数在线调试。并且SDK的支持特别全。

获取外网IP

有了阿里云的API,只需要将自己的公网IP更新上去就好。
利用IP查询网站获取自己的公网IP,然后利用刚才上一步中的API接口,更新域名解析地址就OK了。
这时候,域名已经可以正常访问到家中的树莓派设备了。
我们可以使用Python,写一个简单的爬虫脚本,把查询到的IP解析出来。然后通过上一步的阿里云API,更新域名解析。

源码

参考文章:https://blog.csdn.net/mgsky1/article/details/80466840
以及Python实现的源码:https://github.com/mgsky1/DDNS

自己使用时候,最好在本地保存一下IP,用来做判断,可以减少阿里API的请求频率。
既然是动态IP,那么它会不定时的变化,所以我们需要在树莓派上,跑一个定时任务,利用定时任务,及时更新我们的IP地址,保障域名可以正常访问。定时任务参考

# 每五分钟执行一下IP更新脚本
# 为了减少调用阿里API的频率,最好本地保存一个公网IP值,
# 对比以后,只有IP不一致时,再调用API更新IP
*/5 * * * * /home/pi/ddns/DDNS.py

话外

如果运营商没有给你分派到外网的IP,那么就比较麻烦了。
具体可以参考

  1. frp
  2. ngrok
  3. 花生壳

你可能感兴趣的:(树莓派私有网盘全攻略(一):宽带外网访问)