利用ipv6和阿里云域名外网访问群晖NAS服务器
写在前面
写完后面现这段写得太长了,如果看不下去,可以直接跳到第二段;
如果你没有阿里云域名,也不想花钱买域名,可以看下后面白嫖党的方案;
如果你是win用户,或者在群晖上安装了win虚拟机,可以直接看win版本的AliyunDDNS方案。
IPV6现在已经很普遍了,相对公网IP,应该更容易获取吧,特别是移动大内网,公网IP是不可能的了,但IPV6默认都是开通的了,没开的大多也是光猫没开放(万恶的yd,锁光猫盒子……),看看能不能联系运营商解决。关于DDNS,虽然群晖自带的QC也能内网穿透了,但很多应用,比如wordpress,包括docker,QC环境下都用不了。当然群晖自带的photo station、moments、video station、audio station、driver等都是支持的,这个还是比较良心的,而且试用过,速度也都还行。当然爱折腾的肯定不仅仅满足于这些的,漫画服务器(传送门:http://www.ptyqm.com/27019.html)、电子书服务器这些都要搭起来(传送门:http://www.ptyqm.com/27218.html),这个时候你就需要一个可以直接访问到群晖的通道了。
众所周知但IPV4总共只能分配约43亿个地址,从现在各类联网的电子设备来说,其实是不够用的,所以大家也别骂运营商不给自己公网ip了,真实原因是,公网ip根本不够用!IPV6由于位数是IPV4的4倍,可分配的地址达到10的26次方,甚至可以分配地址到空中的尘埃。所以大多数人是有IPV6的,而且这个IPV6是唯一的,相当于也是公网ip,但问题是由于某些原因,IPV6并不固定(啥原因呢,一句话讲不清楚,可移步:https://zhuanlan.zhihu.com/p/100793846),大概3天左右就会换一下,网上能找到群晖自动任务脚本,自动把IPV6地址用邮件发到你的邮箱(传送门:https://www.jianshu.com/p/ebdfe79bf645),当这样需要到邮箱查邮件,然后更改DDNS设置,实在不够优雅,那么有没有更好的办法呢。其实各大域名运营商都为大家提供了自动DDNS的接口,通过群晖自动任务完全能实现动态ipv6的自动DDNS。
下面就以阿里云域名为例给大家分享一下具体的设置步骤。
1)IPV6地址测试
虽然你可能已经开通IPV6网络,路由器也支持ipv6,但还是要先测试一下,这步测试不过,后面的做了也没意义。没有设置IPV6的可以看这里《启用IPV6,chdbits/hdsky/leaguehd等PT站打不开最佳解》。
在浏览器中输入http://test-ipv6.com,如果看到类似下面的页面,表示IPV6可用。画框的地方是运营商,可以看到显示的是大移动。
IPV6地址测试
2)域名申请
如果有域名可以直接跳过该步,如果没有,其实申请一个也要不了多少钱,特别对于新用户,域名简直便宜的令人发指(因为阿里的域名我注册过几个了,看不到新用户优惠,这里放的腾讯的),因为只是连接群晖用,建议选最便宜的,或者入个cn也就够了。此外连接群晖因为不建站,也是不需要备案的,基本上是即插即用!具体怎么申请网上的攻略太多了,我就不再啰嗦了!
3)AccessKey申请
申请好域名就可以去申请AccessKey了,这个东西有什么用呢,假如把你的阿里云比种一间房间,这个就可以理解为打开房间的钥匙,有了它可以进你的房间随意捣乱,所以AccessKey申请后,一定要注意保密,如果感觉被泄露了,也可以重新生成。本篇攻略里是想通过他获取设置域名解析的权利,这样就可以在群晖上直接修改阿里云域名的解析了,从而实现动态ip的DNS。
申请步骤如下:
1> 进入阿里云的控制台,注意,不进入看不到AccessKey选项
2> 点击AccessKey管理,会提示使用子用户AccessKey,但我每次都没理会,因为私人小站点,安全性要求并不高,直接选择继续使用AccessKey。
创建accesskey
3> 进去后,假如之前未使用过AccessKey,此时列表应该是空的,可以从右上角的创建AccessKey按钮创建一个新的key,此时需要输入手机验证码。
4>创建完成后,请把AccessKey ID和AccessKey Secret复制出来,AccessKey Secret是不可见的,可以点击显示,然后输入手机验证码,让其可见。有了这两个,你的AccessKey就可以用了。
查看AccessKey
4)上传sh脚本并设置自动任务
其实这一步是花了最多时间的,因为网上去找阿里云动态IP的DNS,找到的大多是基于Python的方案,可能是因为windows用户多,Python具有跨平台的特性,但由于Python需要安装阿里云的api包,我在群晖上试了接近一整天,装python,easy-install,pip,gcc……但毕竟群晖不是面向开发的,最后还是失败告终。后来想想linux是以强大的sh指令见长的,有没有可用的sh脚本呢,果然让我找到了。这个方案不需要配制任何环境,只要设置几个参数放到群晖上,设置一下自动任务就OK了。
1> 下载sh原始脚本,sh脚本可以在最后面的百度网盘找到。
2> 获取本地网卡名称,由于需要绑定本地动态变化的ipv6地址,但地址是跟网卡相关的,所以首先要获取当前网卡,打开群晖的ssh选项。
打开ssh
下载putty(下载链接:https://pan.baidu.com/s/1EfOsWFlnOiRWASoZAG6vuA ,提取码:zmwv),下载后输入群晖的ip,选择SSH连接,打开后输入群晖管理员用户,然后输入密码,注意linux输入密码不会显示任何东西,正常输入即可。
putty连接群晖
连接成功后,输入指令 ifconfig,这时会弹出一堆字符,如下图,其它的不用管,只需要记住本地网卡名称即可。注意前面docker0~docker406都是安装docker镜像后安装的虚拟网卡,我们只需要记住eth0就行了
ifconfig
3>修改sh参数,要修改的参数主要有4个,如下图,分别是aliddnsipv6_ak、aliddnsipv6_sk这个前面已经通过AccessKey申请获得了。然后aliddnsipv6_domain就输入你申请的域名就行。aliddnsipv6_name1表示子域名,如果你的域名只是用来访问群晖的,可以直接设置成www,这样就可以用一级域名访问群晖了,由于这个还是我个人博客的域名,所以给他分配的子域名是nas。
修改sh
4>上传并测试脚本,将脚本上传到群晖上,为方便管理,建议新建一个文件夹。方法如下:
①打开File station, 新增共享文件夹,取名为DDNS
②将修改好后的aliyun.sh上传到DDNS文件夹,右键文件属性,复制文件路径。例如/volume1/DDNS/aliddns.sh
复制路径
③在putty中输入sh /volume1/DDNS/aliddns.sh测试一下,脚本能否正常运行,必须看到added record并且后面跟上一段代码才表示成功
试运行脚本
如果不放心,还可以去看一下,阿里云后台的域名解析记录。首先点开你的域名,左边选择解析日志,可以看到刚刚新增加了二级域名为nas的域名解析操作。
添加成功记录
④试一下用域名访问群晖,输入nas.你的域名:500,如果能进入登录页面,表示设置成功。
用域名访问群晖
5>设置自动任务,当然不可能每次ip更新了都要手动执行一次这个命令,所以需要利用群晖的自动任务,在群晖控制面板里选择任务计划-新建-计划的任务-用户自定义脚本,设置任务名称。在计划中设置每天运行,运行频率10分钟(不用担心频率太高,脚本里有判断,只有当发现地址变了才会重新设置域名解析)。脚本中输入sh /volume1/DDNS/aliddns.sh,然后保存就可以了。
自动任务
5)不想花钱买域名怎么办
没有阿里云域名,也不想申请域名,毕竟首年需要便宜,后面续费就是24-58/年,也是一笔开销,那么怎么办呢,我也在网上找到面向白嫖党的解决方案。通过申请dynv6域名来实现,步骤跟阿里云是类似的,只不过因为是国外站点,所以需要梯子才能通过邮箱激活,手头没有好用的梯子,就不能给大家具体测试了,具体可参照这个文章:https://koolshare.cn/thread-158240-1-1.html。sh脚本可以在最后面的百度网盘找到。
注册dynv6
激活需要挂梯子
6)win平台解决方案
如果你用的win平台,或者在群晖上安装了win虚拟机,也可以直接用win平台下的AliyunDDNS工具。该工具也可以在文末的百度网盘下载,解压缩打开AliyunDDNS.exe,参数设置并不复杂,如果不清楚的可以翻看前面的说明。
win平台上的设置
设置完成后同样需要设置自动任务,win平台怎么设置自动任务,这个百度应该也很容易能搜到。
结语
群晖外网访问的需求应该还是蛮大的,特别对于喜欢折腾的人,一出门就好多功能用不了,很是难受。用域名访问也不需要记长长的ip了。相关的文件我都打包上传到百度网盘了,神秘代码:1DqOQnQ_I7xx9uT9PaXwUiA 提取码:ddns
文件说明:
1> aliddns.sh 阿里云自动dns脚本
2> dynv6.sh dynv6自动dns脚本
3> Windows版-AliyunDDNS.zip
版权说明:以上脚本和程序均是搜集于网络,由于经过多次转载,已经找不到原出处了,如果对版权有异议的,请联系我处理,谢谢!