【Net】威联通QNAP通过Shell脚本设置腾讯云/DNSPOD的IPV6公网DDNS

前言

最近入手了一台QNAP TS-428,随着IPV6公网的普及,目前家中的宽带已经可以获取到公网IPV6地址(中国移动-需要光猫设置成桥接模式,并且路由器打开ipv6功能)。经过设置路由器开放IPV6防火墙后,经中国联通流量测试(流量默认支持IPV6网络)可以正常访问。随后我将NAS获取的ipv6公网地址添加到域名解析中,也可以正常使用。但是过了一段时间后由于NAS获取的公网ipv6地址变化,导致无法正常访问。因此最好在NAS上设置好DDNS,同时将SSL证书替换到NAS中。

一、openwrt上开放IPV6端口

参考:https://zhuanlan.zhihu.com/p/375655093

我这里只需要设置好WAN做PPPOE即可,不需要对WAN6进行设置。我使用的固件会在LAN中显示获取到了IPv6地址,然后在LAN的DHCP服务器的IPv6设置中:路由通告服务、DHCPv6服务设为服务器模式、NDP代理禁用、DHCPv6为无状态+有状态,即可。

然后防火墙的通信规则中按照知乎的样式添加一条转发规则,并按知乎的教程设置好名称、源区域、目标区域、端口号、限制地址。

重新连接网络后,可以在设置中查看是否获得24开头的ipv6地址。同时可以用https://ds.test-ipv6.com/ 查看ipv6连通情况(并不是非常准确)。

这时可以通过http://[2409:8b43:311b:b6e0:211:32ff:fe12:3456]:5000/ 这样格式的地址尝试访问NAS(将[]中的地址替换成NAS获取的地址和端口号)

二、手动设置域名解析

DNSPOD里设置一个二级域名、AAAA、和你的IPV6地址即可,等待解析生效后就可以尝试用域名访问了。

三、设置HTTPS

1.更换NAS的ssl证书

官方教程 https://docs.qnap.com/operating-system/qts/5.0.x/zh-cn/%E6%9B%BF%E6%8D%A2%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%AF%81%E4%B9%A6-8E7C1926.html

在腾讯云中申请你的二级域名ssl证书,下载时选择其它。

下载SSl证书

然后转到NAS的控制台>系统>安全>SSL证书和密钥,转到服务器证书,单击取代当前证书,选择导入证书。这时证书选择.pem格式,私人密钥选择.key格式并应用。

2.设置qb的https

SSH连接 在类似 /share/CACHEDEV1_DATA/.qpkg/qBittorrent/ 的目录中新建ssl文件夹,将.key和.crt文件复制进去,然后用chmod 755 ***.key 修改文件的权限。

然后再修改 .qpkg/qBittorrent/.config/qBittorrent/ 目录的qBittorrent.conf中的WebUI\HTTPS\CertificatePath=***.crt 和 WebUI\HTTPS\KeyPath=***.key

填写参考:/share/CACHEDEV1_DATA/.qpkg/qBittorrent/ssl/ab.abc.com_bundle.crt

然后重启qb即可(nas的app中停止再启动)

四、用脚本自动更新DDNS

经过搜索,有一个通过docker的ddns-go项目,但是无奈咱们的小机器实在没有那么多内存来开docker(也许可以,但是没必要)。另外QNAP自带的DDNS(网络与虚拟交换机中)自定义DDNS服务大多是国外的使用起来不太方便,听说群晖里就自带DNSPOD的DDNS,乐。最后结合DNSPOD关于DDNS的文档说明,应该是可以通过shell脚本来实现自动更新的。因此我也找到了一个大佬的项目。

知乎:https://zhuanlan.zhihu.com/p/401048713

原作者的使用说明:https://blog.csdn.net/Imkiimki/article/details/83794355

原作者的GitHub:https://github.com/imki911/ArDNSPod

如果你无法访问GitHub那么知乎上分享的下载地址也是最新的版本。

1、获取DNSPOD的API

https://console.dnspod.cn/account/token/token

这里注意选择:DNSpod Token。然后创建密钥,ID应该是六位数。

然后修改ArDNSPod中的dns.conf安装“ID,KEY”的顺序替换arToken

2、设置脚本

然后在NAS的SSH中测试下面命令是否正确输出ipv6地址,其实eth0替换成本机的网卡设备名。

ip addr show dev eth0 | sed -e's/^.*inet6 \([^ ]*\)\/.*$/\1/;t;d'

这里我输出得到两行地址24开头的公网、和fe开头的内网

两行地址

因此我这里将这句改成,后面添加的意思是去掉第二行

ip addr show dev eth0 | sed -e's/^.*inet6 \([^ ]*\)\/.*$/\1/;t;d'| sed '2d'

将这个命令替换到脚本的65行中,修改后这一行是

ip addr show dev eth0 | sed -e's/^.*inet6 \([^ ]*\)\/.*$/\1/;t;d'|sed '2d' | awk 'NR==1' 

随后在修改一下第25行的解析类型=3

最后同样的修改sh和conf的权限为755。

脚本我上传的位置是 /share/CACHEDEV1_DATA/.qpkg/ddns/ 。特别的有网友提到QNAP在重启之后会删除非系统文件,我这个位置应该不是系统文件的范围应该不会被删除吧。

如果会删除的话,按照下面这个添加计划任务的方案,就是手动安装一个用不到的app,然后将dns脚本的内容替换该app中的脚本。但是考虑到app安装的位置是.qpkg,应该不会被自动删吧。

https://blog.csdn.net/hondsam/article/details/103920016

3、设置计划任务

就是上面那篇文章,重新启动admin账号登录到ssh中然后修改crontab.

文件位置:/etc/config/crontab

分类: