腾讯云解析与容器实现自动化DDNS

腾讯云解析与容器实现自动化DDNS

2020/5/141 min
张筱

张筱

AI工程师

最近买了一个域名,想用 DDNS 来实现静态 IP 的效果(顶级域名一年几十块,一个静态 IP 一年几千上万)

设计

在服务端,腾讯云为很多服务都提供了 REST API。这里可以利用腾讯云解析的 API 实现程序化修改二级域名记录。

在客户端,可以使用 cUrl 工具获取公网 IP 并访问 REST 端点。具体实现方式在此。但是 DDNS 需要重复执行这个脚本,可选的方式就比较多了。

  1. 用 cron 任务直接定期运行脚本
  2. 用 watch 工具重复固定的间隔运行脚本,并用 crontab 在开机时运行一次 watch 命令
  3. 用 docker 的--restart always选项执行 watch 命令下的脚本

第一种方式胜在简单,把脚本和各项参数确定好之后直接创建 cron 任务即可。但缺点是在不同的机器上都要做一遍繁琐的 修改参数-创建 cron 任务 流程。而且密钥必须明文写在脚本中,带来安全隐患

第二种方式和第一种方式差不多,只是简化了 创建 cron 任务 这一步。

第三种方式比较好。首先各项参数可以作为 env variable 输入到容器中,不需要在机器上明文存储。其次每次在新机器上运行只需要执行一行命令,不需要修改文本文件。

实现

综上所述,我写了一个镜像,只需要在运行时配置好DOMAINSUBDOMAINRECORD_IDSECRET_KEYSECRET_ID即可。