前几天了解到移动宽带 IPv6 已经铺开,于是心心念的让群晖自定义域名访问的想法又从心底浮现。自认为至少在这方面我的执行力还是挺高,说干就干,网上一通查,大致的思路就是:

  1. 移动光猫【连接模式】改为【桥接】。
  2. 通过自己的路由器拨号上网,,开启 IPv6。
  3. 域名新增一个 IPv6 的解析,解析地址为群晖的地址。
  4. 因为 IPv6 的地址可能是动态的,所以需要在群晖上创建一个定时任务,让域名不断地指向群晖的实际地址。

上面只是粗略的步骤,还有很多需要注意的细节在具体过程中会提到。

环境说明

先说一下我原本的光猫与路由器的连接模式是光猫联网,然后路由器 DHCP 自动分配 IP 地址联网,然后发送无线。正常来说大部分家庭应该都是这种模式。这种情况下,我的光猫的 IP 是 192.168.1.1,路由器的 IP 为 192.168.2.1

我的路由器是 K2P,刷了padavan 固件,之后的说明都在这个基础上展开,其他的路由器大致应该都差不多,再再网上搜一下应该没什么大问题。

群晖系统我升级了 DSM 7.0,但问题不大,跟之前相比基本只是 UI 有点区别。

域名是阿里云申请的。

1. 修改光猫连接模式为【桥接】

首先要登录移动光猫的后台,访问地址一般在光猫背后的信息中:

在当前的环境下可以直接访问到光猫的后台,但之后修改连接模式后就将无法直接访问。

路由器后面的信息中也提供了后台的管理账号,但是这个账号功能有所阉割,权限还是不够大,但是移动的后台超级管理员账号其实都是统一的,网上一搜就行:

  • 移动光猫账号: CMCCAdmin 密码:aDm8H%MdA
  • 华为的:telecomadmin 密码:admintelecom
  • 中国移动光纤宽带 ip:192.168.100.1 的超级账号:telecomadmin 密码:nE7jA%5m

我的用第一个就能登录。进入后进入【网络】-【宽带设置】-【网络连接】

【链接名称】处应该是个可以选择的下拉框,选择第二项,可以看到下方的封装类型为 PPPoE,这就对了。

然后将【连接模式】由【路由】改为【桥接】,正常情况下默认应该是【路由】模式。

点击下方【保存/应用】按钮,等设置完成,页面刷新,可以等刷新完成再确认一下设置是否生效。

网上有些教程这一步是先删除这个配置,然后重新建一个,我也试过,发现跟修改后直接保存没什么区别。

2. 路由器拨号上网,并开启 IPv6

之后登录路由器后台,进入【外网 WAN】-【外网设置】。

设置如图,DNS 我选择了自动获取。

宽带的用户名与密码如果忘记了就打 10086 的宽带服务重置一下就行。

将这项设置完成后,网应该可以正常访问了,如果不行就等 IPv6 设置完成后重启一下路由器。

接着进入【外网 WAN】-【IPv6 协议】。

如果成功的话,这时在当前网络的信息中应该可以看到 IPv6 的地址。

移动的 IPv6 以 2049 开头。

3. 域名新增解析

先进入群晖,【控制面板】-【网络】-【网络界面】。

找到 IPv6 的地址,复制 /64 之前的值。

在浏览器访问试一下,在地址栏中输入[IPv6地址],正常应该能进入群晖的系统或者系统登录页面。

接着进入阿里云域名解析后台,新增一条 AAAA 的记录:

我的主机记录是 nas,用的二级域名,到时候我的访问地址就是 nas.xxxx.xxx,比如 nas.baidu.com

如果你想用一级域名访问,那就保持其他值不变,分别添加两条主机记录分别为 @www 的记录。

等待解析,如果 IPv6 地址在这段时间内没变动的话,解析完成后输入域名应该就可以访问到群晖。

4.群晖创建定时任务,将域名指向最新的 IPv6

阿里云进入 AccessKey 管理。

可能会出现这个弹窗,因为我就自己用,正常也不会有什么人来攻击我,所以就选第一个。

如果没有创建过 AccessKey,那就创建一个,我已经创建过了,所以直接点击后面的【查看 Secret】,有个验证,通过之后就可以看到AccessKey ID 和 AccessKey Secret,复制下来备用。

进入群晖系统,开启 ssh,需要确认一下网卡的名称,后续有用到。

开启后,打开终端,输入下面命令然后回车,之后会让你输入账户密码。

ssh 用户名@群晖ip地址

登录成功后继续在终端输入

ifconfig

会出现网卡的信息,根据之前看到的 IP 地址找到网卡名称。

记住网卡名称,或者暂时不要关闭终端。

接着下载 aliddns.sh,下载后可以重新命一下名,去除前缀。

用代码编辑器打开,如果没有推荐使用 VSCode

将前面 4 项跟据你的实际情况填入,第 20 行的网卡名称需要确认一下,看跟之前终端看到的是否一致,一般都是这个名字,如果不是,就将它改成终端中实际的名字,保存。

将这个脚本上传至群晖,目录可以自己定。

通过文件属性获取文件的地址,复制。

现在终端验证一下脚本是否有效:

在终端输入命令:

sh /volume1/Tit1e/ddns/aliddns.sh

如果运行结果的最后面是“updated record” 或 “added record”,那就说明脚本执行成功了。

最后,在群晖的【控制面板】-【任务计划】面板新增一个任务:

具体设置:

常规中是设置计划名称跟执行的账户,选择有执行权限的账号就行。

运行频率为每隔 5 分钟运行一次。

在文本域填入脚本存放位置。

保存。

到这里所有的步骤就完成了,可以在浏览器验证一下:

可以在阿里云的解析日志中查看脚本的执行结果,如果地址没变,则脚本运行不会产生日志:

我用的脚本来自网上某片文章,但由于这几天看了太多类似的文章,我已经无法知晓来源,如果你是作者可以联系我,我会在文章中注明来源。