利用阿里云域名管理 API 实现 动态域名解析 ddns

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

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

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

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

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

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

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

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

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

  1. 在后台首页顶栏右边找到“Access Keys”;
  2. 通过短信验证之后点击页面右上边按钮创建一个新的 Access Key;
  3. 页面所显示的Access Key ID和 Access Key Secret 则为所需ID和Key。

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

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

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

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

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

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

编辑完成之后,可以执行 Ubuntu:/opt/aliyun-ddns-client# python ddns.py 来运行,第一次运行会得到错误  [ERROR] You must specify domain record id. 没关系,这是由于我们把 id 字段留空的结果,程序会自行获取完成,再执行一次试试看:

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

自动同步

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

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

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

好了,至此我们的 home.logcg.com 域名就成了动态解析✌️

本文由 落格博客 原创撰写:落格博客 » 利用阿里云域名管理 API 实现 动态域名解析 ddns

转载请保留出处和原文链接:https://www.logcg.com/archives/1768.html

About the Author

R0uter

如非声明,本人所著文章均为原创手打,转载请注明本页面链接和我的名字。

Comments

      1. 碰到新问题,,,,

        ubuntu@ubuntu:/opt/aliyun-ddns-client$ python ddns.py
        Failed to get valid Domain Records Info
        2016-07-08 23:30:14 [ERROR] Failed to match remote domain record for http://www.wixxz.com
        2016-07-08 23:30:14 [ERROR] Failed doing the first time sync for record:DomainRecord1

        在找原因中,,,,

  1. Git了你的Aliyun-DDNS-client这个东东在应用的时候 出现了以下错误,博主有空的话帮看看哟, 我邮箱3117821@qq.com

    ubuntu@ubuntu:/opt/aliyun-ddns-client$ python ddns.py
    Traceback (most recent call last):
    File “ddns.py”, line 21, in
    from helper import DDNSHelper
    File “/opt/aliyun-ddns-client/helper.py”, line 20, in
    from utils import DDNSUtils
    File “/opt/aliyun-ddns-client/utils.py”, line 20, in
    import requests
    ImportError: No module named requests

    结束

发表回复

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