由于IPv4资源有限,家庭宽带无法获取到固定的公网IPv4地址(动态的公网IP地址也无法得到),因此使用IPv6来访问我们家庭局域网中的NAS设备。
二、准备工作 (一)检查家庭宽带是否支持IPv6打开浏览器,输入网址 https://www.test-ipv6.com/ 。若得到如下结果,就说明你的家庭宽带支持IPv6,然后我们去注册域名就可以了。
若得到的结果是不支持IPv6,就需要检查路由器或者光猫是否开启了IPv6。实在不行可以联系宽带维修师傅来帮忙检查一下。
(二)准备域名推荐阿里云购买并注册域名,点击域名注册进行跳转。
(三)下载 aliddns.sh 文件点击下载文件 提取码: 5sv3
aliddns.sh文件的作用就是当NAS的IPv6地址重新分配之后,通知阿里云重新解析域名,将新的IPv6地址与域名重新绑定在一起。
三、实际操作 (一)配置 aliddns.sh 文件点击下载文件 提取码: 5sv3
1. 配置AccessKeyId、Access Key Secret、域名#引号里改成刚刚申请的AccessKeyId
aliddnsipv6_ak="AccessKeyId"
#引号里改成刚刚申请的Access Key Secret
aliddnsipv6_sk="Access Key Secret"
#引号里改成自定义一个名字,需要符合域名规范
aliddnsipv6_name1='www'
#引号里改成自己注册的域名
aliddnsipv6_domain='hongliang.tech'
aliddnsipv6_ttl="600"
#举例,你在万网注册了一个域名叫hongliang.tech,那么aliddnsipv6_domain后面就填hongliang.tech,然后再自己想一个名字,比如nas,然后填到aliddnsipv6_name1后面,那么一会你访问群晖的地址就是http://nas.hongliang.tech:5000
if [ "$aliddnsipv6_name1" = "@" ]
then
aliddnsipv6_name=$aliddnsipv6_domain
else
aliddnsipv6_name=$aliddnsipv6_name1.$aliddnsipv6_domain
fi
now=`date`
die () {
echo $1
}
ipv6s=`ip addr show eth0 | grep "inet6.*global" | awk '{print $2}' | awk -F"/" '{print $1}'` || die "$ipv6"
...
...
配置文件中的 AccessKeyId、Access Key Secret 都在阿里云里面获取,如下图:
如果是第一次进入,那就创建一个就OK啦。
将 aliddns.sh 文件中第20行的eth0 更改成自己的网卡名称。
ipv6s=`ip addr show eth0 | grep "inet6.*global" | awk '{print $2}' | awk -F"/" '{print $1}'` || die "$ipv6"
2.1 获取网卡名称
1). 首先要打开NAS的ssh通道:控制面板 > 终端机和SNMP,勾选启动SSH功能,端口号可以就用22。
2). 使用另一台电脑在局域网内通过ssh方式登录NAS系统,并输入 ipconfig 命令获取网卡配置。
root@DS918Plus:~$ ifconfig
docker0 link encap:Ethernet HWaddr 02:42:4A:AA:CD:37
inet addr:172.17.0.1 Bcast:172.17.255.255 Mask:255.255.0.0
inet6 addr: fe80::42:4aff:feaa:cd37/64 Scope:link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:94579 errors:0 dropped:0 overruns:0 frame:0
TX packets:84042 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:8344591 (7.9 MiB) TX bytes:10967098 (10.4 MiB)
eth0 link encap:Ethernet HWaddr 00:11:32:12:34:66
inet addr:192.168.50.100 Bcast:192.168.50.255 Mask:255.255.255.0
inet6 addr: 240e:331:xxxx:xxxx:xxxx:xxxx:fe12:3466/64 Scope:Global
inet6 addr: fe80::211:32ff:fe12:3466/64 Scope:link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:34645943 errors:0 dropped:2 overruns:0 frame:0
TX packets:11287422 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:46488245824 (43.2 GiB) TX bytes:6033141548 (5.6 GiB)
Interrupt:19 memory 0xd0680000-d06a0000
lo link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:2525366 errors:0 dropped:0 overruns:0 frame:0
TX packets:2525366 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:313537724 (299.0 MiB) TX bytes:313537724 (299.0 MiB)
其中 docker0是Docker容器的,不是我们需要的。我们只需要查找拥有inet6 addr: 240e:331:xxxx:xxxx:xxxx:xxxx:fe12:3466/64 Scope:Global 这段代码的网卡名称就可以了,所以我这里的是 eth0。
PS:
- inet6 addr: fe80::211:32ff:fe12:3466/64 Scope:link这种是内网IPv6,网外是无法访问的。
- 240e:331:xxxx:xxxx:xxxx:xxxx:fe12:3466 这才是我们需要的IPv6地址。
进入阿里云控制台,解析域名,添加记录
- 记录类型:AAAA
- 主机记录:与aliddns.sh文件中的aliddnsipv6_name1值要一样
- 记录值:NAS系统的IPv6地址
- TTL:10分钟
步骤:控制面板 > 任务计划 > 新增 > 计划的任务 > 用户定义的脚本
设置每天每10分钟执行一次,如下图:
在任务设置中,设置执行 aliddns.sh 文件。需要全路径。
点击运行,执行一次该任务,等待阿里云解析完成,就可以通过IPv6访问了。
这是我的NAS导航网站,只支持IPv6访问。



