自有域名DDNS
2021-01-20 本文已影响0人
我已不是少年郎
1、背景
使用TP-LINK的路由器,因为本地搭了个SVN服务器,想在外网使用,就用了默认的tpddns.cn的二级域名。但是这个服务非常不稳定,基本上每隔一段时间就宕机访问不了,最关键的是宕机后修复时间不可控,提交过几次工单都是几天之后才能恢复,所以就产生了可否自己做DDNS解析的想法。
经过查阅相关资料,完全可以做到,各大域名厂商支持编程修改记录,提供了各种API,还有一些开源项目直接帮我们对接好,拿来用即可,就算出现故障,也可以自己立刻修复。
2、搭建
2.1、向域名厂商申请编程访问
由于本人使用阿里的域名服务,这里仅演示阿里的申请过程,其他厂商大同小异,根据文档自行申请即可。
根据 阿里云 accesskey文档,申请子账户,记得勾选编程访问。复制出AccessKey ID和AccessKey Secret的值保存。
然后为子账户分配权限,这里有个坑,一定要注意,一开始我只是简单的搜索“域名”两个字,这时仅仅出现1个权限,添加后一直失败,其实这里需要分配很多权限,本人并未测试出最小权限,以下是可以正常调用的权限,也许有冗余。
子账号权限
2.2 使用开源工具自动给域名设置IP
NewFuture/DDNS
这里使用NewFuture的DDNS工具,该工具帮我们对接了主流域名厂商的API,省去了我们看文档和写代码的功夫。
我这里使用docker直接部署。
编写config.json
{
"$schema": "https://ddns.newfuture.cc/schema/v2.8.json",
"debug": true,
"id": "LTA*************Fu", //替换成你自己的AccessKey ID
"token": "x7*********UT",//替换成你自己的AccessKey Secret
"dns": "alidns",
"ipv4": ["lucien.****.com"],//替换成你自己的域名,这里我用的是二级域名
"ipv6": [],
"index4": "url:http://ip.3322.net/",
"index6": false,
"ttl": 600,
"proxy": null,
"cache":true //如果记录的IP和获取网络的IP相同不替换域名的记录值
}
使用docker部署
docker run --name ddns -d -v /home/lucien/ddns/config.json:/config.json --network host --restart always newfuture/ddns
5分钟后,会看到域名的IP记录修改成功,由于docker版本自己做了定时操作,所以无需再加定时,至此,自己的DDNS服务搭建成功。