背景
前不久在一个QQ群里面聊天中发现,使用群辉Nas的人还挺不少。但是大多数只知道在家中通过IP访问,并不知道如何使用自己的域名在外网进行访问。虽然我在6年前写过一篇类似的文章,不过当时的工具恐怕都不太能用了。因此我自己也开发了一个DDNS解决方案,来跟大家介绍一下吧。
本文将描述如何使用阿里云的域名和群辉Docker来让你在办公室、手机网络也能访问家中的设备文件。
原理
在开始之前,我们简单的回想一下通过域名访问网站的整个过程:浏览器在输入域名后,我们的计算机拿着这个域名去查找了DNS服务器 → 在DNS服务器上,通过域名与IP的对应关系得到了域名对应的IP → 我们的计算机再去访问这个IP显示了网站上的资源。
因此,我们要想在外网通过域名访问到自己家的Nas,就需要将自己家的IP地址添加到DNS解析服务上。然而新的问题出现了:我们家的IP地址通常是运营商动态分配的,如果只是去添加了一个IP,在运营商重新分配IP后,又无法访问了。于是提出一个动态的解决方案:程序每隔几分钟检测一遍当前的IP,如果发现IP变了,那么就去DNS解析服务上更新。这样在通过域名访问时候,就可以总是可以得到最新的IP来访问到家中的设备了。
准备条件
-
阿里云的域名
-
你家的网络环境是能分配到公网IP的
这里重点说明一下公网IP:由于IP资源是有限的,大部分运营商只会给某个区域1个公网IP,而不会分配到每个用户。这就好比是:你告诉了你朋友你家的地址。然而你只明确到了XX市XX县XX村。你朋友到了这个村也找不到你呀。因此只有当你自己有一个公网IP的时候,才能在全球范围内找到你。而不是只能找到你家所在的村。
如何判断拥有公网IP:你可以访问路由器的管理界面来看到路由器的IP地址。然后和百度上搜索“我的IP”的返回结果进行对比,如果是同一个,那就说明你当前已经是公网IP了。例如:小米路由器就看这里:
很多运营商不会给你公网IP,例如移动就不会给你。如果你运气好是联通或者电信,可以打电话让运营商给你换成公网IP。可以用要在家里安装监控,或要远程访问家里电脑的理由。对于电信来说,本身是光猫拨号,这也需要让工作人员给你处理成路由器拨号才可以实现。
加油!
你可能需要软磨硬泡、斗智斗勇,才可能让运营商给你开通公网IP。
总之,拥有一个公网IP才能开始正式操作。
DDNS
DDNS(Dynamic-DNS)也就是动态将IP地址更新到DNS解析服务。在之前,我试过很多软件,用起来都不如有UI界面的舒服。因此我自己开发了一个基于Docker的阿里云DDNS方案(撒花~✿✿ヽ(°▽°)ノ✿~),带有网页UI界面,只需要鼠标点击录入就可以启用了,非常方便。
拉取Docker镜像
打开群辉Docker,从注册表中输入pandastd/aliyun-ddns-with-ui,选中后,下载这个镜像
映射端口并启动
在映像中点击刚才下载完成的 pandastd/aliyun-ddns-with-ui ,启动它。除了“端口映射”需要注意一下以外。别的都默认即可。端口映射的部分是将Docker内的端口映射为我们可以访问的端口,这里填写一个大于6000的数字都是可以的,例如9876。
其他根据默认值直接启动这个容器。启动成功后,在容器页面可以看到名为 pandastd/aliyun-ddns-with-ui 的容器。
配置Aliyun DDNS
在容器启动后,浏览器地址栏输入: http://你的群辉IP + 英文冒号 + 刚才的端口号 ,例如:http://10.0.1.15:9876 进入配置页面。在页面中填写正确的配置,即可将你当前的IP更新到你指定的个人域名
端口映射
到目前为止,虽然你家的IP已经动态的更新到DNS服务器了,然而你访问这个IP却不能有任何反馈。这就好比,虽然到达你家的公路已经修通了,然而,进了你家的大门,却不知道Nas在哪个房间。
因此需要将内网的端口映射到外网,这样才能用映射出来的端口访问到Nas对应的端口。例如,群辉的管理页面是:5000,将这个端口在路由器上映射为5000(或其他你喜欢的数字),就能用 http://你设置的域名+ 英文冒号 + 5000 来访问到群辉的管理页面了。例如小米路由器则在:高级设置-端口转发-添加规则。
经过这一番操作后,用你刚才的域名+英文冒号+5000,就可以愉快的看到群辉登录界面啦!至此,你就可以在外网开心的管理自己的文件了。
如果你还需要别的端口,那么也用相同的方法来做映射。例如Drive就需要映射6690。更多群辉常用端口请在这里查看:群辉控制面板-外部访问-路由器配置-新增-内置应用程序。(对于大部分路由器而言,在这里新增了不会有任何效果,所以还是把端口记下来在路由器上设置才有用)
瓷器国限制
根据相关法律法规和政策:WebStation的80和443端口在映射到外部时,需修改为别的端口号。80和443对于普通家庭用户来说,是被运营商屏蔽了的。