2019
12-29

阿里云API实现动态域名解析ddns脚本及设置教程,阿里云API动态域名解析ddns脚本,padavan设置DDNS

阿里云API实现动态域名解析ddns脚本及设置教程

什么是动态域名解析?

动态域名解析,缩写ddns,它不同于我们常用的DNS解析,而是专门用于对付那种没有固定公网 IP 的服务器地址解析的。

典型的使用情况就是:自家宽带构建小服务器,没有固定IP,想要上线,除了写脚本发邮件外,就只有ddns这一条路可以走了。

目前来说,国内最知名的可能就是出了名的难用不稳定的花生壳了。国外的话有一个dynu也很不错。

现在阿里云开放了 API,那么我们能否使用阿里云的 API 自行实现一个ddns呢?原理自然很简单,自己实现一个小客户端,然后定期获取自身外网 IP 然后通过 API 去修改一下对应的域名解析就好了!

当然,已经有人做了客户端这部分的工作(感谢rfancn),用 python 2 实现,所以,它是跨平台的。

这里我们用 Ubuntu 16.04 的vps来做例子。

首先从 github 克隆项目到本地:

Ubuntu:# cd /opt

Ubuntu:/opt# git clone https://github.com/rfancn/aliyun-ddns-client.git


然后把配置文件拷贝到指定位置并编辑:

Ubuntu:/opt# cd aliyun-ddns-client/

Ubuntu:/opt/aliyun-ddns-client# cp ddns.conf.example /etc/ddns.conf

Ubuntu:/opt/aliyun-ddns-client# vi /etc/ddns.conf


[DEFAULT]

access_id = XUG8zYuSMNfieXYZ

access_key = qdksYdEFe5ScGgIDcj9hN8KUk2RTXX

interval = 600

debug = true


[DomainRecord1]

domain = aisoa.cn

sub_domain = home

type = A

id =

value =

上面深色部分需要去阿里云后台获取API的ID 和 KEY

这里,我们需要获取阿里云的 API 权限,获取方法则是登录阿里云;

在后台首页顶栏右边找到“Access Keys”;

通过短信验证之后点击页面右上边按钮创建一个新的 Access Key;

页面所显示的Access Key ID和 Access Key Secret 则为所需ID和Key。

获取到 API 权限之后,我们再继续来修改配置:

配置中的 interval  无效不用管,

 [DomainRecord1] 则是你的域名字段,可以改成对应的名称用来区别不同的子域而已,如果你要做多个子域的动态解析,那就写多个字段即可。

针对这个字段里, domain 为你的域名,主域; sub_domain 为要动态解析的子域,记得提前创建好,解析到任意 IP 即可。

比如说,要动态解析 home.aisoa.cn,那么就按照上文的例子填写。

type 为解析记录,比如 A 记录(例子中的记录);MX 记录等。

最后 id 和 value 留空,让程序自行完成即可。

编辑完成之后,

可以执行

Ubuntu:/opt/aliyun-ddns-client# python ddns.py

来运行,第一次运行会得到错误  [ERROR] You must specify domain record id. 没关系,这是由于我们把 id 字段留空的结果

程序会自行获取完成,再执行一次试试看:

Ubuntu:~/aliyun-ddns-client# python ddns.py

2016-06-21 16:01:10 [INFO] Successfully sync done for record:DomainRecord1

去后台页面刷新看看,解析地址已经更新了。

阿里云API动态域名解析ddns脚本自动同步

那么,现在我们来利用 Ubuntu 的任务管理来实现域名的动态解析:

Ubuntu:~# crontab -e

我们在文件内容末尾追加一行,输入:

*/1 * * * * cd /opt/aliyun-ddns-client && /usr/bin/python ddns.py

这句表示每隔一分钟,进入程序目录(我们之前克隆客户端的目录),然后执行程序进行一次更新。

好了,至此我们的 home.aisoa.cn 域名就成了动态解析

DDNS 工作原理的分析

DDNS 的实现最根本的一点是当主机的 IP 地址发生变化的时候,实现 DNS 映射信息的及时更新,应用程序需要及时地获得这一信息,主要的方法可分为两大类:

一类是轮询机制,即:应用程序每隔一定的时间,去从查询主机当前的 IP 地址,并与之前的进行比较,从而判断网络地址是否发生了变化。显然,这种方法不仅效率低下,而且对每次查询 IP 地址的时间间隔很难得到一个折中的数值。

第二类方法是异步实现方式,即:每当主机的 IP 地址发生变化的时候,应用程序能够被及时地通知到。这的确是一个简单而又高效的方法,但与此同时,另一个问题又产生了,那就是:通知源又应该由谁来担当呢?显然,这是处于用户空间的应用程序无法胜任的。于是,我们想到了让内核来充当这一消息源。这样,在内核空间和用户空间之间就需要通过消息来进行通信了。

在 Linux 下用户空间与内核空间的信息交互方式有许多种,比如:软中断、系统调用、netlink 等等。关于这些通信方式的介绍以及其各自的优缺点并不在本文的讨论范围内,您可以自行查看参考资源。

荒野无灯老毛子华硕padavan固件设置DDNS的方法

首先荒野无灯大神的固件里面已经自带了DNSPod的插件(固件版本最好更新到最新版),如果遇到路由器没有自带DNSPod的插件就自己检索下其他教程写个脚本吧。

服务器这里当然不用说,选择”www.dnspod.cn”这一项。选择好以后点击后面的“DDNS 链路”进入DNSPod的API申请界面,创建一个”API Token”,Tokens名称随意。

荒野无灯老毛子华硕padavan固件设置DDNS的方法

创建好以后就把ID填写到”API Token ID”这一栏,Token自然就是填写到”API Token”这一栏,HTTPS连接这一栏保持默认即可。

接下来是最重要的主机名称,这里实际上要填写的就是你需要的指向你的IP的子域名,这个不多解释了,关键在于这个设置是不会自动帮你创建的

所以你还得先到域名控制台那里手动先创建一个xxx的A记录,指向IP可以随便填,后面程序会自动更新为你的本地IP。

创建好以后就完整的填写到“主机名称”里面即可,格式如”xxx.baidu.com”,然后把DDNS更新周期改成”12 hours”,最后点击应用本页面设置即可。

打开系统日志,可以看到已经成功了。

DNSPod DDNS的方法

不放心的话去域名的控制台看看你之前创建的”xxx”的A记录指向的IP是不是已经变成你的本地IP了。

官方QQ群号码:922069959
点击链接加入群聊【路由器交流】:https://jq.qq.com/?_wv=1027&k=5AKdmZP

您可能感兴趣的文章

支付宝打赏支付宝打赏 微信打赏微信打赏

本站》评论功能已永久关闭

官方QQ群号码:922069959
点击链接加入群聊【路由器交流】:
https://jq.qq.com/?_wv=1027&k=5AKdmZP
官方QQ群号码:922069959