0x01 前言

我一直使用阿里云的DNS解析服务,因为他家以前的DNS解析服务是可以定制的,每年只需要花40块左右即可将TTL降低至1秒。极低的TTL对于我的服务架构非常重要,因为我家里的服务器里运行着众多核心服务,且基于DDNS给外部服务器通告我的IP地址。

但在今年初我在续费阿里云DNS解析服务时发现原来的定制化服务被移除了,取而代之的是一揽子套餐,内容如下:

如果是单域名使用则显得非常昂贵,但随着域名的增加,价格会变得便宜。当域名数量达到10个以上,则价格基本和以前的版本持平。而新一代的阿里云DDNS脚本已经在路上,但今天记录的DDNSX项目则是集成各大DNS解析厂商的API,通过调用API的形式实现DDNS功能。

0x02 支持的厂商

因为时间与受限于编程水平的关系,目前支持的厂商较少,但后续会持续增加。以下受支持厂商的列表将不定时更新,如果感兴趣请关注文末的gitlab或GitHub地址:

  • he.net
  • gandi.net
  • godaddy.net
  • dnspod.cn

0x03 准备

本项目使用python3编写,需要使用3.4或更高的版本运行。确认运行环境符合要求后则确认需要使用根域名与子域名,该脚本支持将IP地址同步到多个域名,比如将10.1.1.1同步至dns1.a.com与dns2.a.com。最后确认所使用的厂商,同样的,该脚本支持将IP地址同步到不同厂商。

确认厂商后请点击 0x02 中对应的厂商地址打开说明文档,通过文档中的说明获取需要的信息。

最后使用python3运行配置文件生成器:

python3 configuration_file_create_assistant.py

并跟随交互输入对应的内容直至结束:

该程序支持IPv4与IPv6,在交互中请根据实际情况选择。对应的,IPv4默认使用A记录,IPv6默认使用AAAA记录。如果在解析记录类型选择TXT,那么会要求选择IPv4或IPv6,因为TXT的记录值可以是任意值。

一旦完成信息输入,会返回一遍配置信息,请根据实际情况进行确认:

因为编写代码时间的关系,目前暂不支持修改TTL,所有TTL均为各厂商免费账户所支持的TTL最小值,该数值可以在0x02中各厂商的链接中找到。

完成配置文件生成器的交互后,在程序根目录即可找到名为“config.json“的配置文件。目前配置文件生成器仅支持生成配置文件,暂不支持增删改查等操作。

0x04 运行

只要完成配置文件生成器的流程即可使用python3调用“main.py”,如果一切正常,返回厂商的管理页面即可发现IP已经改为你本地的IP。

为了实现自动化,建议将程序添加到定时任务中:

*/2 * * * * root /usr/bin/python3 main.py

0x04 结语

程序和本文尚待完善,另外0x02中的相关内容也为编写,请持续留意本文或gitlab和GitHub。

0x05 其他

源码地址: