实现阿里云域名的DDNS
目前现状与痛点
我们在使用ddns的时候会不会遇到这样的问题:路由器只支持指定的域名服务提供商或者是指定的域名,比如我的华为路由器就只支持花生壳:
我想看到这篇文章的小伙伴们应该都把域名注册到中国最大的域名注册服务商阿里云上,那么我们要怎么实现阿里云的DDNS呢?我们接着往下看
解决方案
当然我身为一个程序员,如果路由器不支持,我们就应该写一串代码让他支持。阿里云已经提供了相关的API让我们实现动态域名解析(DDNS),API的地址为:https://next.api.aliyun.com/api/Alidns/2015-01-09/UpdateDomainRecord:
我们可以在文档当中看到可以支持如java、typescript、go、php等一系列的语言的SDK,因为go语言有以下特点:
- 直接生成对应操作系统的执行文件,如windows直接生成 .exe文件,不需要再去安装运行环境(如JDK等)就可以直接执行
- 对系统占用低,甚至在你的树莓派上都能直接运行
- 执行的效率比java、php等语言要高很多
虽然我是个java程序员,但是综合以上优点,我决定还是使用go语言来开发这个小程序
代码仓库
当然这个小程序我已经用go语言开发好了,且代码已经上传到github,代码仓库地址:https://github.com/xiaohh-me/greateme_ddns,同时我也编译好了三个操作系统的可执行文件,如图:
可以直接点击下载可执行文件:
- Linux(x86-64):https://github.com/xiaohh-me/greateme_ddns/releases/download/v1.0.0/linux_ddns_x86-64-v1.0.0.tar.gz
- MacOS(arm64):https://github.com/xiaohh-me/greateme_ddns/releases/download/v1.0.0/mac_ddns_arm64-v1.0.0.tar.gz
- Windows(x86-64):https://github.com/xiaohh-me/greateme_ddns/releases/download/v1.0.0/windows_ddns_x86-64-v1.0.0.zip
其他系统或者是芯片架构需要自己搭建go语言环境自行编译获得可执行文件,编译代码的具体步骤在项目的README.md当中存在:
申请阿里云的AccessKey
来到阿里云首页并登陆你的阿里云账号,然后来到你的控制台,将鼠标放在头像上会出现一个菜单,然后点击 AccessKey管理
出现这个提示直接点击 继续使用AccessKey,当然你要为AccessKey设置权限的话就需要点击开始使用子用户AccessKey,这个比较麻烦所以在这里直接略过
点击创建AccessKey:
这里是敏感操作需要验证一下你的身份,任意选择一种即可:
验证成功后就生成了AccessKey和AccessKeySecret,我们需要将它记住:
确定需要DDNS的域名
我们直接搜索域名控制台:
然后点击域名列表可以查看到自己的所有二级域名:
本片文章就使用 yueyang.city 和 greateme.com 两个二级域名来做DDNS,确定两个三级域名:home.yueyang.city 和 home.greateme.com 来做这个DDNS
修改配置文件
本片文章就以Windows操作系统为例,其他操作系统操作也大同小异,下载好可执行文件解压之后可以查看目录:
在conf文件夹下有一个 config.ini 的配置文件:
我们需要修改这个配置文件:
开始同步
接下来我们只需要执行 greateme_ddns.exe 这个可执行文件即可,可以查看执行后的控制台输出:
我们可以看到当前我的公网IP地址为 110.52.225.170 我们查询一下是不是这个:
通过在百度上面查询我的公网IP地址,发现的确是这个IP地址,我们再来查看阿里云的域名解析:
- home.yueyang.city解析确定了没问题:
- home.greateme.com解析确定了没问题:
接下来每十分钟就会同步一次域名解析
本篇文章到这里就结束了,代码已经开源放在了github上,如果觉得代码有啥可以优化的地方,欢迎PR