群晖+阿里云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访问

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

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

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

一、环境

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

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

赞赏

微信赞赏支付宝赞赏

You may also like...

3 Responses

  1. oldiy说道:

    关于脚本不支持阿里云@域名的修改
    替换
    if [ -z “$SubDomain” ]; then
    SubDomain=”@”
    fi
    替换为(修改为转义符即可,阿里云不支持特殊符号,垃圾!)
    if [ -z “$SubDomain” ]; then
    SubDomain=%40
    fi

    以上修改好即可
    不支持*

    想支持*也可以加入判断,不过脚本可能有BUG,或者阿里云有问题这里自行研究!我用@就够了!
    #add support */%2A and @/%40 record
    case $4s_name in
    \*)
    SubDomain=%2A
    ;;
    \@)
    SubDomain=%40
    ;;
    *)
    SubDomain=$4
    ;;
    esac

  1. 2018年10月10日

    […] 然后按照我这个自建blog上的教程设置就可以 https://oldiy.top:874/?p=64(服务器不在线就看不了) […]

  2. 2018年10月21日

    […] 然后按照我这个自建blog上的教程设置就可以 https://blog.oldiy.top/2018/10/06/%E7%BE%A4%E6%99%96%E9%98%BF%E9%87%8C%E4%BA%91ddns%E5%8A%A8%E6%80%8&#8230; […]

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注