群晖nas+阿里云DDNS动态IP访问--岁月博客提供

由于黑群晖目前无法洗白,所以开始研究ddns。一开始考虑花生壳来做ddns,但是考虑到花生壳浏览器提示危险网站,以及花生壳的更新速度,和网站会引用nas某些资源,还是打算使用阿里云的DDNS来实现。

参考了以下几篇文章:

    miaol的《通过阿里云域名动态解析 IP 地址

    abelao评论里的    Dnspod  API 

    Threnc3的通《通过python将阿里云dns解析作为ddns使用过python将阿里云dns解析作为ddns使用

    clanned的博客    https://www.xdty.org/?s=Ddns

以上的基本都在linux系统内,所以又参考了以下文章:

    不用Docker,实现群晖+阿里云DDNS解决动态IP访问

================================================

在搭建过程中,遇到了各种问题,经过自己反复摸索,整理以下简单易懂教程,具体的原理可以参考以上文档。

遇到的坑,报错会在教程里详细指出,请注意避免犯错。

不会的,觉得难的,可以参考更加简单的方法:路由器配置ddns实现内网访问--岁月博客提供


一、环境

    1、必须有公网ip。

    2、路由器/防火墙可以做端口映射

    3、有域名。

二、DDNS部署-脚本制作

    1、下载脚本编辑工具UltraEdit,百度就可以下载,这里不放地址了,这里主要是为了下一步操作过程避免脚本有误。

    2、下载脚本文件

        我们使用 可爱的排骨 分享的四个脚本文件,点击此处进入github下载界面,如下图所示界面

        或者下载我生成的文件 链接: https://pan.baidu.com/s/1wOo3-cOZE6XuoS0qJquNlw 密码: 8isw

        如失效请留言。

        1.png

    

        我们可以看到有四个文件

    aliyun.sh        用于阿里云域名

    cloudxns.sh        

    dnspod.sh        用于dnspod

    qcloud.sh        用于腾讯云域名


        下载方式:

        注意了,此处有个大坑,困扰了我一天才研究出来,而且各种找不到答案。

        大坑1:切记下载不是右击脚本文件下载,而是点击脚本打开后复制脚本代码,到UltraEdit里面粘贴!!!

                    切记下载不是右击脚本文件下载,而是点击脚本打开后复制脚本代码,到UltraEdit里面粘贴!!!

                    切记下载不是右击脚本文件下载,而是点击脚本打开后复制脚本代码,到UltraEdit里面粘贴!!!

        此处如果直接右击下载,在最后执行脚本时会报以下错误:

            /volume1/aliyunddns/aliyun.sh: line 7: syntax error near unexpected token `newline'
/volume1/aliyunddns/aliyun.sh: line 7: `< !DOCTYPE html >'

        在他们分享的教程里,下面的评论,可以看到很多人遇到这个问题,希望以后其他人注意了。


        如下图所示,复制代码,粘贴到UltraEdit,注意保存后的大小,是否一样。

        3.png

        大坑2:注意保存格式,一定一定要保存为UNIX

                    注意保存格式,一定一定要保存为UNIX

                    注意保存格式,一定一定要保存为UNIX

        否则执行脚本会报以下错误

    line 3: set: -

    : invalid option

    set: usage: set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]

    保存方法:在UltraEdit里,点击 文件--转换--DOS到UNIX   一定要转换,一定要转换,保存为对应脚本名字(aliyun.sh cloudxns.sh dnspod.sh qcloud.sh),复制的哪个,就保存为哪个名字


到此步骤,脚本成功保存好。


三、DDNS部署-脚本执行

    2.png

    上图是脚本作者,写的脚本执行命令,但是有些错误,后面会具体介绍到。


  • 这里我们先讲解用阿里云域名怎么处理


1、上传我们制作的脚本到群晖NAS的任意文件夹,右击属性,复制我们脚本的路径。

4.jpg

脚本路径为/volume1/web/aliyun.sh

2、登录阿里云获取AccessKeyId AccessKeySecret

    我们可以随便先解析一个A记录,主机记录为www 记录值为0.0.00,然后获取我们的AccessKeyId AccessKeySecret

    5.png

3、在UE编辑器里,写好执行脚本

    脚本作者写的阿里云的脚本执行方式为:sh aliyun.sh {AccessKeyId} {AccessKeySecret} example.com www

    我们这里的写法为 sh /volume1/web/aliyun.sh ePh****K1ik T0z*************DsTKzd hacklove.cn www

    注意:空格,脚本的具体位置 我们的key,以及keysecret是去掉大括号,中间前后都有空格的,然后域名,然后解析记录。这里建议在UE里面写,避免各种问题出现。

4、NAS设置定时计划任务

    点击 控制面板--任务计划--新增--计划的任务--用户定义的脚本

    6.png

    

    

    任务名称随意。计划看自己心情,十分钟,五分钟无所谓。

    

    用户自定义脚本,就是上面我们在UE里面写的脚本,粘贴进去。

    

    手动点击运行,就可以正常更新记录到阿里云上,对应的端口在路由器上映射一下,80端口一般都被封了。


  • 腾讯云域名

        腾讯云的域名的api需要签名,我这里没有成功,也懒得折腾了,建议把腾讯云的解析放在dnspod上来操作

dnspod

dnspod的方法和阿里云一样

1、确定域名转入到dnspod

2、获取dnspod的api

10.png

11.png

3、一样复制dnspod的脚本到UE里面编辑,一样的保存,一样的编码为UNIX,一样的上传到群晖,一样的写脚本

4、脚本,此处有注意实现

脚本作者写的运行方式为sh dnspod.sh {ApiID},{ApiKey} example.com www

实际上是sh dnspod.sh ApiID APIToken 域名 www

大坑三:注意还是中间保留空格,而不是英文的逗号。

否则执行会报一下错误:status code 8

12.png



希望我的分享能让你少走弯路,血的总结。。。


岁月博客(www.sycmd.com),致力于网络优秀资源的分享和交流!

本博客所有文章如无特别注明均为原创。作者:小莫复制或转载请以超链接形式注明转自 岁月博客
原文地址《群晖nas+阿里云DDNS动态IP访问--岁月博客提供
分享到:更多

相关推荐

发表评论

路人甲 表情
Ctrl+Enter快速提交

网友评论(48)

关于你说那个第7行有错误,是有可能因为脚本是c shell的,而你使用的是b shell。所有应该以#!/bin/csh执行
jeblove 5个月前 (2020-04-13) 回复
@jeblove:来自这位大佬的提示https://www.cnblogs.com/hoji-real/articles/2336772.html
jeblove 5个月前 (2020-04-13) 回复
@jeblove:不好意思,这里是我欠考虑了,请忽略
jeblove 5个月前 (2020-04-13) 回复
@jeblove:这里我理解的是格式的原因,使用UNIX格式就好了
小莫 5个月前 (2020-04-14)
/volume1/setting/aliddns/aliyun.sh: line 7: syntax error near unexpected token `newline'
/volume1/setting/aliddns/aliyun.sh: line 7: `<!DOCTYPE html>'
照网盘里的下载aliyun.sh文件,直接导入到群晖里,运行后结果是这样....
Feeling 6个月前 (2020-03-18) 回复
@Feeling:解决了,不能用notepad++,打开看一下都不可以,直接新建记事本都行...
Feeling 6个月前 (2020-03-18) 回复
@Feeling:这个问题有点奇葩了哈,解决了就好
小莫 6个月前 (2020-03-22) 回复
阿里云解析完成,计划任务也完成,DDNS设置时,认证失败,什么原因
386678087 7个月前 (2020-03-11) 回复
@386678087:你看一下日志显示什么,我这两天测试一下
小莫 7个月前 (2020-03-12) 回复
@386678087:我这里测试一切正常,你可以下载我网盘的脚本,再按照步骤执行以下试试,测试时间2020年3月13日 20:05:28
小莫 7个月前 (2020-03-13) 回复
@386678087:我这里测试一切正常,你可以下载我网盘的脚本,再按照步骤执行以下试试,测试时间2020年3月13日 20:05:28
小莫 7个月前 (2020-03-13) 回复
@386678087:我这里测试一切正常,你可以下载我网盘的脚本,再按照步骤执行以下试试,测试时间2020年3月13日 20:05:28
小莫 7个月前 (2020-03-13) 回复
@386678087:我这里测试一切正常,你可以下载我网盘的脚本,再按照步骤执行以下试试,测试时间2020年3月13日 20:05:28
小莫 7个月前 (2020-03-13) 回复
博主,运行完提示{"code":4100,"message":"\u8eab\u4efd\u8ba4\u8bc1\u5931\u8d25\uff0c\u7528\u6237\u8eab\u4efd\u9a8c\u8bc1\u5931\u8d25","codeDesc":"AuthFailure"}
请问是什么原因呢?
llk 7个月前 (2020-02-16) 回复
@llk:用的是腾讯域名吗?腾讯需要接口的,建议把腾讯转到dnspod上来实现 是一样的
小莫 7个月前 (2020-03-13) 回复
@llk:用的是腾讯域名吗?腾讯需要接口的,建议把腾讯转到dnspod上来实现 是一样的
小莫 7个月前 (2020-03-13) 回复
你好,请问现在这个脚本还好用吗,上个月我用来正常,这个月已经不行了,获取不到域名记录,还开始报SED错误。
蓝色理想 10个月前 (2019-12-06) 回复
蓝色理想:我有空尝试一下,好久没用过了,如果不可以的话,也可以用使用路由器来实现的。
小莫 10个月前 (2019-12-12) 回复
@蓝色理想:正常使用,测试时间2020年3月13日 20:03:01
小莫 7个月前 (2020-03-13) 回复
成功按照博主文章解决外网访问问题,不知道IPV6如何设置。希望在更新IPV6就完美了!
dgstrong 11个月前 (2019-11-10) 回复
始终不成功,反馈是:获取当前 IP...
天马 1年前 (2019-08-21) 回复
@天马:百度 ip   搜索下IP   登录路由器看看你路由器拨号获得的IP和百度到的IP是否一致,怀疑你没有公网IP
小莫 1年前 (2019-08-22) 回复
为何我连执行状态的反馈都没看见啊[S16]
呆萌De小帅哥 1年前 (2019-07-17) 回复
还有我要说下,大家用黑群晖的话我推荐用楼主的这个方法,因为此方法源码全部可见,我也找了不少方法,要么是脚本太多,要么是要下载软件,总体来说这个是绝对安全的,我只看了阿里云,别的源码没看,还有些脚本很大,鬼知道里面封装了什么东西。安全性一点保障都没有
123 1年前 (2019-05-13) 回复
sh aliyun.sh {AccessKeyId} {AccessKeySecret} example.com www

这是原作者的,其实楼主改的也没错,可能是每个人理解不一样
sh = 必填(系统命令)
aliyun.sh = 需要运行脚本的路径,也就是上传到群晖的路径,每个人不一样,文件右键属性可查看
{AccessKeyId} = 这是让我们填写一个参数, { } 这个应该是让我们填写的意思,当然{}是不用加上的
{AccessKeySecret} = 同上
example.com = 这个是一级域名,注意是一级域名不是二级域名, (baidu.com = 一级) (abc.baidu.com = 二级) (adsdfds.baidu.com = 二级)
www = 这是就是填二级域名
所以作者的整体思路应该是这样的,我没理解错的话
sh 文件路径 ID KEY 域名 主机记录
打开这个原文件 我们可以看到有4个变量 分别是$1 $2 $3 $4 也就是对应的后面4个需要我们填写的参数,当第4个参数没填写,默认用@
123 1年前 (2019-05-13) 回复
@123:正解,很详细的分析
小莫 1年前 (2019-05-13) 回复
@123:想问下,这个aliyun现在按你操作的只能www的,主域名@的怎么定义,按这个无效,A记录无法变更。设定了www的A记录可以更新,如果不设定或者设定为@没变化,A记录无反应,能否告知@的主域名怎么更新A记录
两个字/love 9个月前 (2019-12-17) 回复
@两个字/love:我今天测试一下,之前是正常的,最近很多反馈有问题,我先试下
小莫 9个月前 (2019-12-17) 回复
@小莫:找到了,@用%40来搞就可以了
https://github.com/cuteribs/ribsnetwork/issues/5
两个字/love 9个月前 (2019-12-17)
@两个字/love:666 给你点赞
小莫 9个月前 (2019-12-17)
1 2