自有域名DDNS

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服务搭建成功。

你可能感兴趣的:(自有域名DDNS)